Project

General

Profile

MapRestServiceExamples » History » Version 68

Andreas Kohlbecker, 11/28/2016 02:53 PM

1 1 Andreas Kohlbecker
# Examples for URI requests to the Map REST Service
2 40 Niels Hoffmann
3
{{>toc}}
4
5 1 Andreas Kohlbecker
6 23 Pere Roca Ristol
Integrate clear colourful maps into your own website or application. Choose data sources and adapt colour, symbology, extent, background textures and line types to fully customise your map. 
7 1 Andreas Kohlbecker
8 23 Pere Roca Ristol
This page give some usage examples of the [[MapRestServiceApi|Map REST Service API]].
9
10 42 Niels Hoffmann
Be aware that these examples do *not conform to RFC 3986*, as the current implementation still doesn't follow the proposed syntaxis. It means that the syntaxis of these examples (and MapRest Services) may change in the coming weeks.
11 1 Andreas Kohlbecker
12 43 Niels Hoffmann
----
13 1 Andreas Kohlbecker
14
15 50 Franck Theeten
## WMS and Layers
16
17
The WMS bound to the service is http://edit.africamuseum.be/geoserver/ (don't forget the trailing slash).
18
19 57 Franck Theeten
Since December 2012, this service use the version 2.2.2 of GeoServer.
20 50 Franck Theeten
21 53 Franck Theeten
The services displays TDWG and vmap0 layers (http://gis-lab.info/qa/vmap0-eng.html) imported in the "topp" namespace.
22
23
The list of layers can be accessed by executing a WMS GetCapabilties request on the "topp" dataset: 
24
25
http://edit.africamuseum.be/geoserver/topp/wms?service=WMS&request=GetCapabilities.
26
27
Alternatively, you can also use the "preview layer" part of the graphical interface of GeoServer
28
29
http://edit.africamuseum.be/geoserver/web/;?wicket:bookmarkablePage=:org.geoserver.web.demo.MapPreviewPage
30
31 57 Franck Theeten
If you have requests or questions related to the available layers contact franck.theeten @ africamuseum.be
32 53 Franck Theeten
33
## Description of layers
34
35 64 Andreas Kohlbecker
Since 2011, any layer registered in the WMS can be used in distribution maps and have its style dynamically defined in the HTTP GET parameters (this functionality was originally limited to TDWG layers).
36 53 Franck Theeten
37 64 Andreas Kohlbecker
When building a query, the programmer needs to know the structure of a layer (i.e. the name and the type of fields) since some functionalities do not work on numeric attributes. For instance, you can define a filter to apply a style on specific values (like names of countries), but only if the corresponding attribute in the database has a text format (you cannot apply filter on integer column).
38 53 Franck Theeten
39
It is possible to get an XML describing the types and fieldnames of a layer by running a WFS query "DescribeFeature" on GeoServer like in the example below ("typename" being the name of the layer) 
40
41
e.g:
42
43
http://edit.africamuseum.be/geoserver/topp/wfs?service=WFS&version=1.1.0&request=DescribefeatureType&typename=topp:vmap0_afsa_hydro_inland_water_prm_only_a
44
45 68 Andreas Kohlbecker
=> in the answer "xsd:string" corresponds to attributes having a text type that can be used in filter.
46 50 Franck Theeten
47
## Description of layers
48
49 51 Franck Theeten
Since 2011, any layer registered in the WMS can be used in distribution maps and have its style dynamically defined in the HTTP GET parameters (this functionnality was originally limited to TDWG layers).
50
51
When building a query, the programmer needs to know the structure of a layer (i.e. the name and the type of fields) since some functionnalities do not work withnumeric attributes. For instance, you can define a filter to apply a style on specific values (like names of countries), but only if the correponding attribute in the database has a text format (you cannot apply filter on integer column).
52 1 Andreas Kohlbecker
53
It is possible to get an XML describing the types and fieldnames of a layer by running a WFS "DescribeFeature" query on GeoServer like in the example below ("typename" being the name of the layer) 
54 51 Franck Theeten
55
e.g:
56
57
http://edit.africamuseum.be/geoserver/topp/wfs?service=WFS&version=1.1.0&request=DescribefeatureType&typename=topp:vmap0_afsa_hydro_inland_water_prm_only_a
58
59 53 Franck Theeten
=> in the answer: "xsd:string" corresponds to attribute having a test format that can be used in filter. 
60 51 Franck Theeten
61 1 Andreas Kohlbecker
62
## Map REST Service - Version 1
63 51 Franck Theeten
64 65 Andreas Kohlbecker
*Does not conform to the latest syntax definition!*
65 53 Franck Theeten
66 51 Franck Theeten
### Distribution Maps
67 50 Franck Theeten
68
Service URL: http://edit.africamuseum.be/edit_wp5/v1.2/areas.php
69 1 Andreas Kohlbecker
70
71 50 Franck Theeten
#### Basic Issues
72 1 Andreas Kohlbecker
73 9 Andreas Kohlbecker
Map Image size is specified as 400 pixels width. It means the height will be 200 pixels (just the half). Attention: you cannot specify an odd number as width/height.
74 1 Andreas Kohlbecker
75
A bounding box (bbox) is specified. We strongly recommend to use bbox if know it (for example if all your data is on the same zone).
76
77 9 Andreas Kohlbecker
We provide world country borders and all TDWG levels as background. This parameter must be specified in "l" parameter (l=earth in that example).
78
79 62 Andreas Kohlbecker
Current codes for background layers are:
80 3 Andreas Kohlbecker
81 65 Andreas Kohlbecker
* Country borders: earth
82
* TDWG level 1: tdwg1
83
* TDWG level 2: tdwg2
84
* TDWG level 3: tdwg3
85
* TDWG level 4: tdwg4
86 1 Andreas Kohlbecker
87 26 Pere Roca Ristol
88 65 Andreas Kohlbecker
![](http://edit.africamuseum.be/edit_wp5/v1.2/areas.php?l=earth&ad=tdwg3:a:PHI,VAN,BAN,SRL,VIE,MOL,CHC,CRL,JAW,FIJ,SUM,MYA,MLY,NWG,MRN,AND,CHH,BOR,IND,CHS,THA,TAI,LAO,SUL,BIS,CBD,SOL,ASS&as=a:8dd3c7,,1&ms=500&bbox=-180,-90,180,90)
89 26 Pere Roca Ristol
90
~~~
91
l=earth&ad=tdwg3:a:PHI,VAN,BAN,SRL,VIE,MOL,CHC,CRL,JAW,FIJ,SUM,MYA,MLY,NWG,MRN,AND,CHH,BOR,IND,CHS,THA,TAI,LAO,SUL,BIS,CBD,SOL,ASS
92
&as=a:8dd3c7,,1&ms=500&bbox=-180,-90,180,90
93
~~~
94 1 Andreas Kohlbecker
95 26 Pere Roca Ristol
####  Recalculate Parameter
96
97
We see here the "recalculate" parameter in action. 
98
99 34 Pere Roca Ristol
When the bbox is not specified, the service will calculate it and try to fit the image to the specified dimensions (width/height). It can cause distorted images. 
100 6 Andreas Kohlbecker
101
Recalculate=true (this is the default if nothing is specified) tries to avoid these distortions. It means also that in some cases the final image size will change as you can see in the first image.
102
103 65 Andreas Kohlbecker
![](http://edit.africamuseum.be/edit_wp5/v1.2/areas.php?l=earth&ad=tdwg3:a:PHI,VAN,BOR|b:BIS,SUM&as=a:8dd3c7,,2|b:e91f16,5be166,,2_4&ms=500&label=1)
104 1 Andreas Kohlbecker
105 65 Andreas Kohlbecker
![](http://edit.africamuseum.be/edit_wp5/v1.2/areas.php?l=earth&ad=tdwg3:a:PHI,VAN,BOR|b:BIS,SUM&as=a:8dd3c7,,2|b:e91f16,5be166,,2_4&ms=500&label=1&recalculate=false)
106 25 Pere Roca Ristol
107
~~~
108
l=earth&ad=tdwg3:a:PHI,VAN,BOR|b:BIS,SUM&as=a:8dd3c7,,2|b:e91f16,5be166,,2_4&ms=500&label=1
109 1 Andreas Kohlbecker
~~~
110 6 Andreas Kohlbecker
~~~
111
l=earth&ad=tdwg3:a:PHI,VAN,BOR|b:BIS,SUM&as=a:8dd3c7,,2|b:e91f16,5be166,,2_4&ms=500&label=1&recalculate=false
112 62 Andreas Kohlbecker
~~~
113 25 Pere Roca Ristol
114
####  Different TDWG Layers
115 1 Andreas Kohlbecker
116 65 Andreas Kohlbecker
You can mix different TDWG layers. In that case, TDWG level 3 and TDWG level 1.
117 1 Andreas Kohlbecker
118
No background layer is defined, so you simply get the specified areas. 
119
120 65 Andreas Kohlbecker
![](http://edit.africamuseum.be/edit_wp5/v1.2/areas.php?ad=tdwg3:b:ZIM|a:SPA,ITA||tdwg1:b:2&as=a:d7add2|b:ab8dc9F&ms=300,200&label=1)
121 26 Pere Roca Ristol
122
~~~
123
ad=tdwg3:b:ZIM|a:SPA,ITA||tdwg1:b:2&as=a:d7add2|b:ab8dc9F&ms=600,300&label=1
124 7 Andreas Kohlbecker
~~~
125 1 Andreas Kohlbecker
126
#### Symbolize Parameters
127 62 Andreas Kohlbecker
128 7 Andreas Kohlbecker
A more complex styling. The parameters for styling an area are:
129
130 65 Andreas Kohlbecker
* Area fill color
131
* Area stroke color
132
* Area stroke width
133
* Area stroke dash style: we currently provide 1_2,1_4,2_2,2_4,5_7 and 10_5 but it can change. First parameter determine the length in pixels to draw the line, and the second, the length in pixels to blank out the line. As example, 5_7 means a very dashed line (separated 7 pixels one line from another).
134 41 Niels Hoffmann
135 65 Andreas Kohlbecker
We always provide default values. So, you could even specify styles "a" and "b"  as a:|b: and the image will be generated. 
136 28 Pere Roca Ristol
137 27 Pere Roca Ristol
A style like b:0000ff~2  would mean 0000ff fill color and 2 pixels stroke width. The other parameters would be set as default.
138
139 65 Andreas Kohlbecker
![](http://edit.africamuseum.be/edit_wp5/v1.2/areas.php?l=tdwg_level_1&ad=tdwg4:c:MXEDU|b:MXETA||tdwg3:a:MXC,CUB|b:MXE,MXG|c:MXS,MXT&as=a:329d2a,483eef,2,2_2|b:ab8dc9F,da1029,2,5_7|c:d2e347|d:f7555d&ms=500&bbox=-115,6.78,-75.19,29.8&recalculate=false)
140 61 Andreas Kohlbecker
141 28 Pere Roca Ristol
~~~
142 16 Andreas Kohlbecker
l=tdwg_level_1&ad=tdwg4:c:MXEDU|b:MXETA||tdwg3:a:MXC,CUB|b:MXE,MXG|c:MXS,MXT&as=a:329d2a,483eef,2,2_2|b:ab8dc9F,da1029,2,5_7|c:d2e347|d:f7555d&ms=700&bbox=-115,6.78,-75.19,29.8&recalculate=false
143 1 Andreas Kohlbecker
~~~
144 28 Pere Roca Ristol
145 1 Andreas Kohlbecker
#### Map Legends
146 28 Pere Roca Ristol
147 1 Andreas Kohlbecker
A legend can be appended to your map in different positions. 
148 28 Pere Roca Ristol
149
Specify "title" parameter, associating to each style the desired legend. Also legend=1 and "mlp" (map legend position) 
150
151
It is important to assign, for each style, a title, otherwise cause error.
152
153
The map legend position can be:
154
155 65 Andreas Kohlbecker
* 1: outside of the map, up left 
156
* 2: outside of the map, up 
157
* 3: outside of the map, up right 
158
* 4: outside of the map, below left
159
* 5: inside of the map, below right
160
* 6:  inside of the map, below left
161
* 7:  inside of the map, up right
162 28 Pere Roca Ristol
163 65 Andreas Kohlbecker
![](http://edit.africamuseum.be/edit_wp5/v1.2/areas.php?l=tdwg_level_1&legend=1&mlp=3&title=a:foreign|b:native|c:rare|d:unknown&ad=tdwg4:code:c:MXEDU||tdwg4:code:b:MXETA||tdwg3:code:a:MXC,CUB||tdwg3:code:b:MXE,MXG||tdwg3:code:c:MXS,MXT&as=b:ab8dc9F,da1029,2,5_7|c:d2e347|a:329d2a,483eef,2,2_2|d:f7555d&ms=500&bbox=-115,6.78,-75.19,29.8&recalculate=false)
164 60 Andreas Kohlbecker
165 28 Pere Roca Ristol
~~~
166 1 Andreas Kohlbecker
areas.php?l=tdwg_level_1&legend=1&mlp=3&title=a:foreign|b:native|c:rare|d:unknown&ad=tdwg4:code:c:MXEDU||tdwg4:code:b:MXETA||tdwg3:code:a:MXC,CUB||tdwg3:code:b:MXE,MXG||tdwg3:code:c:MXS,MXT&as=b:ab8dc9F,da1029,2,5_7|c:d2e347|a:329d2a,483eef,2,2_2|d:f7555d&ms=500&bbox=-115,6.78,-75.19,29.8&recalculate=false
167
~~~
168 34 Pere Roca Ristol
A separate service generating legend is working, so you can put the legend wherever you want on your html. 
169
170 65 Andreas Kohlbecker
![](http://edit.africamuseum.be/edit_wp5/v1.2/legends.php?title=a:foreign|b:native|c:rare|d:unknown&as=a:329d2a,483eef,2,2_2|b:ab8dc9F,da1029,2,5_7|c:d2e347|d:f7555d&ms=60,50)
171 1 Andreas Kohlbecker
172 62 Andreas Kohlbecker
~~~
173 1 Andreas Kohlbecker
http://edit.africamuseum.be/edit_wp5/v1.2/legends.php?title=a:foreign|b:native|c:rare|d:unknown&as=a:329d2a,483eef,2,2_2|b:ab8dc9F,da1029,2,5_7|c:d2e347|d:f7555d&ms=60,50
174 29 Pere Roca Ristol
~~~
175
176
#### Hatching Patterns
177
178
You can also specify a hatch pattern. You need to fill "images_url" and  "symbols" for each pattern as shown below. The URL to the image can be remote or local.
179 1 Andreas Kohlbecker
180 17 Andreas Müller
The second parameter of "symbols"  specifies the size of the image used for hatching.
181 33 Pere Roca Ristol
182 65 Andreas Kohlbecker
![](http://edit.africamuseum.be/edit_wp5/v1.2/areas.php?l=tdwg4&ad=tdwg4:c:MXEDU|b:MXETA|d:NICOO||tdwg3:a:MXC,CUB|b:MXE,MXG|c:MXS,MXT&as=b:d7add2,,3,|a:d7add2,ab899F,1,1_2|c:,,,10_5|d:&ms=500&images_url=a,c:edit.csic.es/v1.2/hatch_images|b:maps.massgis.state.ma.us/images&symbols=a,c:cow,10,gif|b:med_green_cross_hatch,30,gif&&bbox=-115,6.78,-75.19,29.8&recalculate=false)
183 16 Andreas Kohlbecker
184
~~~
185 1 Andreas Kohlbecker
l=tdwg4&ad=tdwg4:c:MXEDU|b:MXETA|d:NICOO||tdwg3:a:MXC,CUB|b:MXE,MXG|c:MXS,MXT&as=b:d7add2,,3,|a:d7add2,ab899F,1,1_2|c:,,,10_5|d:&ms=500&images_url=a,c:edit.csic.es/v1/hatch_images|b:maps.massgis.state.ma.us/images&symbols=a,c:cow,10,gif|b:med_green_cross_hatch,30,gif&&bbox=-115,6.78,-75.19,29.8&recalculate=false
186 32 Pere Roca Ristol
~~~
187 43 Niels Hoffmann
188 30 Pere Roca Ristol
#### Using MapRest on a webmapping application
189 1 Andreas Kohlbecker
190 31 Pere Roca Ristol
All these mapping services can be used on a dynamic webmapping application like [OpenLayers](http://openlayers.org/.) 
191
192 1 Andreas Kohlbecker
The question is that, if desired, we return back not an image but a file that specifies the path to the XML that is used for layer symbolization. 
193 30 Pere Roca Ristol
194 64 Andreas Kohlbecker
With some little javascript coding you can get dynamic maps (zoom in/out, panning...).
195
196 30 Pere Roca Ristol
Some EDIT dataportals using this technology are PalmWeb (http://dev.e-taxonomy.eu/dataportal/palmae/) and Cichorieae (http://dev.e-taxonomy.eu/dataportal/cichorieae/)
197
198
How to get this file to be integrated on webmapping application? just specify "img=false" and will get a JSON file that could be something similar to...
199
200 66 Andreas Kohlbecker
~~~json
201 30 Pere Roca Ristol
[{"bbox":"-28.267,27.664,72.65,81.851",
202 1 Andreas Kohlbecker
"legend":" http://edit.africamuseum.be/edit_wp5/v1.2/sld/4e9b417a9789481932b57e53c47291c6.sld",
203 62 Andreas Kohlbecker
"layers":[{"tdwg": "tdwg3","session": "","sld": "tdwg3_4e9b417a9789481932b57e53c47291c6.sld"},
204 4 Andreas Kohlbecker
{"tdwg": "tdwg1","session": "","sld": "tdwg1_4e9b417a9789481932b57e53c47291c6.sld"}]}]
205 65 Andreas Kohlbecker
~~~
206 33 Pere Roca Ristol
207 32 Pere Roca Ristol
As you can see, there is the name of XML (SLD) files that provide symbolization for each of specified TDWG layer. Also the legend is specified there.
208 33 Pere Roca Ristol
209 32 Pere Roca Ristol
With some javascript coding you can get dynamic maps. A big advantage of using these widgets is that they automatically calculate the scale at which the image has to be visualized. 
210 20 Pere Roca Ristol
211 65 Andreas Kohlbecker
By this way you can avoid distorted images that too often happen with "image" MapRest services.
212 32 Pere Roca Ristol
213 13 Andreas Kohlbecker
### Occurrence Maps
214 1 Andreas Kohlbecker
215 10 Andreas Kohlbecker
Service URL: http://edit.africamuseum.be/edit_wp5/v1.2/points.php
216 1 Andreas Kohlbecker
217
MapRest services also can plot occurrences. Just specify each point data coordinates (in latitude/longitude) 
218 33 Pere Roca Ristol
219 1 Andreas Kohlbecker
This service is subject to changes soon.
220
221
Current symbolization parameters are:
222 8 Andreas Kohlbecker
223 65 Andreas Kohlbecker
* symbol: you can choose "c" (a circle),  "s" (a star), and "sq" (square)
224
* symbol size
225
* a name to be used on the legend
226 47 Franck Theeten
227 49 Franck Theeten
Also a "q_layer" has to be specified. It must be the same than the background layer and is used to calculate the bbox. 
228 47 Franck Theeten
229
ATBI sites like Gemer (http://www.atbi.eu/gemer/) and Mercantour/Alpi-Marittime (http://www.atbi.eu/mercantour-marittime/) are already using this service.
230
231
Also point occurrences can be mapped on a dynamic webmapping application but it is still not implemented.
232
233 65 Andreas Kohlbecker
![](http://edit.africamuseum.be/edit_wp5/v1.2/points.php?l=v:e_w_0&od=1:38.326,-0.822|38.328,-0.542|38.062,-0.893||2:38.062,-0.893|38.012,-1.883||3:40.78,-4.009|43.461,-5.412|38.062,-0.893&os=1:c/f78755/10/Onthophagus%20semipunctatus|2:s/64cb48/10/Euoniticellus%20pallipes|3:sq/cbde4f/10/Onthophagus%20joannae&ms=700,350&bbox=-10,36,8,45&recalculate=true&legend=1)
234 59 Andreas Kohlbecker
235 47 Franck Theeten
~~~
236 59 Andreas Kohlbecker
l=v:e_w_0&od=1:38.326,-0.822|38.328,-0.542|38.062,-0.893||2:38.062,-0.893|38.012,-1.883||3:40.78,-4.009|43.461,-5.412|38.062,-0.893&os=1:c/f78755/10/Onthophagus%20semipunctatus|2:s/64cb48/10/Euoniticellus%20pallipes|3:sq/cbde4f/10/Onthophagus%20joannae&ms=700,350&bbox=-10,36,8,45&recalculate=true&legend=1
237 47 Franck Theeten
~~~
238 59 Andreas Kohlbecker
239 47 Franck Theeten
## Map REST Service - Version 2
240
241 56 Franck Theeten
The major improvement of version 2 is that transparency can be applied both on point data and overlay layers.
242 47 Franck Theeten
243 1 Andreas Kohlbecker
### Distribution Maps
244 57 Franck Theeten
245
Service URL: 
246
247 65 Andreas Kohlbecker
* http://edit.africamuseum.be/edit_wp5/v1.2/rest_gen.php
248
* http://edit.africamuseum.be/edit_wp5/v1.2/points.php
249
* http://edit.africamuseum.be/edit_wp5/v1.2/areas.php
250 57 Franck Theeten
251 65 Andreas Kohlbecker
* http://edit.africamuseum.be/edit_wp5/v1.4_dev/rest_gen.php
252
* http://edit.africamuseum.be/edit_wp5/v1.4_dev/points.php
253
* http://edit.africamuseum.be/edit_wp5/v1.4_dev/areas.php
254 57 Franck Theeten
255 65 Andreas Kohlbecker
"rest_gen.php" merges the functionalities of points.php and areas.php. 
256 58 Franck Theeten
257 1 Andreas Kohlbecker
"points.php" and "areas.php" are still available as aliases to rest_gen for backward compatibility reasons.
258 57 Franck Theeten
259
#### Compatibility with OGC syntax
260 58 Franck Theeten
261 57 Franck Theeten
Since version 1.2, the service compliant with the syntax version 2.2.2 of GeoServer. 
262
263
Geoserver follows now more strictly the OGC syntax than before, especially for legends, a point which created an importantbackward compatibility issue when upgrading Geoservber.
264 58 Franck Theeten
265 57 Franck Theeten
Since GeoServer 2.2.1, the syntax of the “GetLegendGraphic” request used in the original version of the PHP script was not valid anymore.
266
267
The previous version had this element in the URL: “...geoserver/GetLegendGraphic?service=WMS&…” 
268
269
...while GeoServer awaits now: “...geoserver/wms?REQUEST=GetGraphicLegend&…”
270
271
This has been fixed in version 1.2 and also commited back to version 1.1 
272
273
#### Merging point and area data
274
275
#### Transparency on overlay layers