Project

General

Profile

MapRestServiceExamples » History » Version 75

Katja Luther, 03/30/2022 12:22 PM

1 1 Andreas Kohlbecker
# Examples for URI requests to the Map REST Service
2 40 Niels Hoffmann
3 1 Andreas Kohlbecker
4 75 Katja Luther
5 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. 
6 1 Andreas Kohlbecker
7 23 Pere Roca Ristol
This page give some usage examples of the [[MapRestServiceApi|Map REST Service API]].
8
9 1 Andreas Kohlbecker
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.
10 75 Katja Luther
11
12
{{toc}}
13
14
{{child_pages(depth=1)}}
15 1 Andreas Kohlbecker
16 43 Niels Hoffmann
----
17 1 Andreas Kohlbecker
18
19 50 Franck Theeten
## WMS and Layers
20
21
The WMS bound to the service is http://edit.africamuseum.be/geoserver/ (don't forget the trailing slash).
22
23 57 Franck Theeten
Since December 2012, this service use the version 2.2.2 of GeoServer.
24 50 Franck Theeten
25 53 Franck Theeten
The services displays TDWG and vmap0 layers (http://gis-lab.info/qa/vmap0-eng.html) imported in the "topp" namespace.
26
27
The list of layers can be accessed by executing a WMS GetCapabilties request on the "topp" dataset: 
28
29
http://edit.africamuseum.be/geoserver/topp/wms?service=WMS&request=GetCapabilities.
30
31
Alternatively, you can also use the "preview layer" part of the graphical interface of GeoServer
32
33
http://edit.africamuseum.be/geoserver/web/;?wicket:bookmarkablePage=:org.geoserver.web.demo.MapPreviewPage
34
35 57 Franck Theeten
If you have requests or questions related to the available layers contact franck.theeten @ africamuseum.be
36 53 Franck Theeten
37
## Description of layers
38
39 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).
40
41
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).
42 1 Andreas Kohlbecker
43
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) 
44 51 Franck Theeten
45
e.g:
46
47
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
48
49 53 Franck Theeten
=> in the answer: "xsd:string" corresponds to attribute having a test format that can be used in filter. 
50 51 Franck Theeten
51 1 Andreas Kohlbecker
52
## Map REST Service - Version 1
53 51 Franck Theeten
54 65 Andreas Kohlbecker
*Does not conform to the latest syntax definition!*
55 53 Franck Theeten
56 51 Franck Theeten
### Distribution Maps
57 50 Franck Theeten
58
Service URL: http://edit.africamuseum.be/edit_wp5/v1.2/areas.php
59 1 Andreas Kohlbecker
60
61 50 Franck Theeten
#### Basic Issues
62 1 Andreas Kohlbecker
63 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.
64 1 Andreas Kohlbecker
65
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).
66
67 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).
68
69 62 Andreas Kohlbecker
Current codes for background layers are:
70 3 Andreas Kohlbecker
71 65 Andreas Kohlbecker
* Country borders: earth
72
* TDWG level 1: tdwg1
73
* TDWG level 2: tdwg2
74
* TDWG level 3: tdwg3
75
* TDWG level 4: tdwg4
76 1 Andreas Kohlbecker
77 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)
78 26 Pere Roca Ristol
79
~~~
80
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
81
&as=a:8dd3c7,,1&ms=500&bbox=-180,-90,180,90
82
~~~
83 1 Andreas Kohlbecker
84 26 Pere Roca Ristol
####  Recalculate Parameter
85
86
We see here the "recalculate" parameter in action. 
87
88 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. 
89 6 Andreas Kohlbecker
90 1 Andreas Kohlbecker
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.
91 6 Andreas Kohlbecker
92 70 Andreas Kohlbecker
![](http://edit.africamuseum.be/edit_wp5/v1.2/areas.php?l=earth&ad=tdwg3:a:PHI,VAN,BOR%7Cb:BIS,SUM&as=a:8dd3c7,,2%7Cb:e91f16,5be166,,2_4&ms=500&label=1)
93 1 Andreas Kohlbecker
94 70 Andreas Kohlbecker
![](http://edit.africamuseum.be/edit_wp5/v1.2/areas.php?l=earth&ad=tdwg3:a:PHI,VAN,BOR%7Cb:BIS,SUM&as=a:8dd3c7,,2%7Cb:e91f16,5be166,,2_4&ms=500&label=1&recalculate=false)
95 25 Pere Roca Ristol
96
~~~
97
l=earth&ad=tdwg3:a:PHI,VAN,BOR|b:BIS,SUM&as=a:8dd3c7,,2|b:e91f16,5be166,,2_4&ms=500&label=1
98 1 Andreas Kohlbecker
~~~
99 6 Andreas Kohlbecker
~~~
100
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
101 62 Andreas Kohlbecker
~~~
102 25 Pere Roca Ristol
103
####  Different TDWG Layers
104 1 Andreas Kohlbecker
105
You can mix different TDWG layers. In that case, TDWG level 3 and TDWG level 1.
106 65 Andreas Kohlbecker
107 1 Andreas Kohlbecker
No background layer is defined, so you simply get the specified areas. 
108
109 70 Andreas Kohlbecker
![](http://edit.africamuseum.be/edit_wp5/v1.2/areas.php?ad=tdwg3:b:ZIM%7Ca:SPA,ITA%7C%7Ctdwg1:b:2&as=a:d7add2%7Cb:ab8dc9F&ms=300,200&label=1)
110 26 Pere Roca Ristol
111
~~~
112
ad=tdwg3:b:ZIM|a:SPA,ITA||tdwg1:b:2&as=a:d7add2|b:ab8dc9F&ms=600,300&label=1
113 7 Andreas Kohlbecker
~~~
114 1 Andreas Kohlbecker
115
#### Symbolize Parameters
116 62 Andreas Kohlbecker
117 7 Andreas Kohlbecker
A more complex styling. The parameters for styling an area are:
118
119 65 Andreas Kohlbecker
* Area fill color
120
* Area stroke color
121
* Area stroke width
122
* 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).
123 1 Andreas Kohlbecker
124 41 Niels Hoffmann
We always provide default values. So, you could even specify styles "a" and "b"  as a:|b: and the image will be generated. 
125 28 Pere Roca Ristol
126 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.
127
128 70 Andreas Kohlbecker
![](http://edit.africamuseum.be/edit_wp5/v1.2/areas.php?l=tdwg_level_1&ad=tdwg4:c:MXEDU%7Cb:MXETA%7C%7Ctdwg3:a:MXC,CUB%7Cb:MXE,MXG%7Cc:MXS,MXT&as=a:329d2a,483eef,2,2_2%7Cb:ab8dc9F,da1029,2,5_7%7Cc:d2e347%7Cd:f7555d&ms=500&bbox=-115,6.78,-75.19,29.8&recalculate=false)
129 61 Andreas Kohlbecker
130 28 Pere Roca Ristol
~~~
131 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
132 1 Andreas Kohlbecker
~~~
133 28 Pere Roca Ristol
134 1 Andreas Kohlbecker
#### Map Legends
135 28 Pere Roca Ristol
136 1 Andreas Kohlbecker
A legend can be appended to your map in different positions. 
137 28 Pere Roca Ristol
138
Specify "title" parameter, associating to each style the desired legend. Also legend=1 and "mlp" (map legend position) 
139
140
It is important to assign, for each style, a title, otherwise cause error.
141
142
The map legend position can be:
143
144 65 Andreas Kohlbecker
* 1: outside of the map, up left 
145
* 2: outside of the map, up 
146
* 3: outside of the map, up right 
147
* 4: outside of the map, below left
148
* 5: inside of the map, below right
149
* 6:  inside of the map, below left
150
* 7:  inside of the map, up right
151 28 Pere Roca Ristol
152 72 Andreas Kohlbecker
![](http://edit.africamuseum.be/edit_wp5/v1.2/areas.php?l=tdwg_level_1&legend=1&mlp=3&title=a:foreign%7Cb:native%7Cc:rare%7Cd:unknown&ad=tdwg4:code:c:MXEDU%7C%7Ctdwg4:code:b:MXETA%7C%7Ctdwg3:code:a:MXC,CUB%7C%7Ctdwg3:code:b:MXE,MXG%7C%7Ctdwg3:code:c:MXS,MXT&as=b:ab8dc9F,da1029,2,5_7%7Cc:d2e347%7Ca:329d2a,483eef,2,2_2%7Cd:f7555d&ms=500&bbox=-115,6.78,-75.19,29.8&recalculate=false)
153 60 Andreas Kohlbecker
154 28 Pere Roca Ristol
~~~
155 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
156
~~~
157 34 Pere Roca Ristol
A separate service generating legend is working, so you can put the legend wherever you want on your html. 
158
159 72 Andreas Kohlbecker
![](http://edit.africamuseum.be/edit_wp5/v1.2/legends.php?title=a:foreign%7Cb:native%7Cc:rare%7Cd:unknown&as=a:329d2a,483eef,2,2_2%7Cb:ab8dc9F,da1029,2,5_7%7Cc:d2e347%7Cd:f7555d&ms=60,50)
160 1 Andreas Kohlbecker
161 62 Andreas Kohlbecker
~~~
162 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
163 29 Pere Roca Ristol
~~~
164
165
#### Hatching Patterns
166
167
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.
168 1 Andreas Kohlbecker
169 17 Andreas Müller
The second parameter of "symbols"  specifies the size of the image used for hatching.
170 33 Pere Roca Ristol
171 71 Andreas Kohlbecker
![](http://edit.africamuseum.be/edit_wp5/v1.2/areas.php?l=tdwg4&ad=tdwg4:c:MXEDU%7Cb:MXETA%7Cd:NICOO%7C%7Ctdwg3:a:MXC,CUB%7Cb:MXE,MXG%7Cc:MXS,MXT&as=b:d7add2,,3,%7Ca:d7add2,ab899F,1,1_2%7Cc:,,,10_5%7Cd:&ms=500&images_url=a,c:edit.csic.es/v1.2/hatch_images%7Cb:maps.massgis.state.ma.us/images&symbols=a,c:cow,10,gif%7Cb:med_green_cross_hatch,30,gif&&bbox=-115,6.78,-75.19,29.8&recalculate=false)
172 16 Andreas Kohlbecker
173
~~~
174 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
175 32 Pere Roca Ristol
~~~
176 43 Niels Hoffmann
177 30 Pere Roca Ristol
#### Using MapRest on a webmapping application
178 1 Andreas Kohlbecker
179 31 Pere Roca Ristol
All these mapping services can be used on a dynamic webmapping application like [OpenLayers](http://openlayers.org/.) 
180
181 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. 
182 30 Pere Roca Ristol
183 64 Andreas Kohlbecker
With some little javascript coding you can get dynamic maps (zoom in/out, panning...).
184
185 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/)
186
187
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...
188
189 66 Andreas Kohlbecker
~~~json
190 30 Pere Roca Ristol
[{"bbox":"-28.267,27.664,72.65,81.851",
191 1 Andreas Kohlbecker
"legend":" http://edit.africamuseum.be/edit_wp5/v1.2/sld/4e9b417a9789481932b57e53c47291c6.sld",
192 62 Andreas Kohlbecker
"layers":[{"tdwg": "tdwg3","session": "","sld": "tdwg3_4e9b417a9789481932b57e53c47291c6.sld"},
193 4 Andreas Kohlbecker
{"tdwg": "tdwg1","session": "","sld": "tdwg1_4e9b417a9789481932b57e53c47291c6.sld"}]}]
194 65 Andreas Kohlbecker
~~~
195 33 Pere Roca Ristol
196 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.
197 33 Pere Roca Ristol
198 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. 
199 20 Pere Roca Ristol
200 65 Andreas Kohlbecker
By this way you can avoid distorted images that too often happen with "image" MapRest services.
201 32 Pere Roca Ristol
202 13 Andreas Kohlbecker
### Occurrence Maps
203 1 Andreas Kohlbecker
204 10 Andreas Kohlbecker
Service URL: http://edit.africamuseum.be/edit_wp5/v1.2/points.php
205 1 Andreas Kohlbecker
206
MapRest services also can plot occurrences. Just specify each point data coordinates (in latitude/longitude) 
207 33 Pere Roca Ristol
208 1 Andreas Kohlbecker
This service is subject to changes soon.
209
210
Current symbolization parameters are:
211 8 Andreas Kohlbecker
212 65 Andreas Kohlbecker
* symbol: you can choose "c" (a circle),  "s" (a star), and "sq" (square)
213
* symbol size
214
* a name to be used on the legend
215 47 Franck Theeten
216 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. 
217 47 Franck Theeten
218
ATBI sites like Gemer (http://www.atbi.eu/gemer/) and Mercantour/Alpi-Marittime (http://www.atbi.eu/mercantour-marittime/) are already using this service.
219
220
Also point occurrences can be mapped on a dynamic webmapping application but it is still not implemented.
221
222 73 Andreas Kohlbecker
![](http://edit.africamuseum.be/edit_wp5/v1.2/points.php?l=v:e_w_0&od=1:38.326,-0.822%7C38.328,-0.542%7C38.062,-0.893%7C%7C2:38.062,-0.893%7C38.012,-1.883%7C%7C3:40.78,-4.009%7C43.461,-5.412%7C38.062,-0.893&os=1:c/f78755/10/Onthophagus%20semipunctatus%7C2:s/64cb48/10/Euoniticellus%20pallipes%7C3:sq/cbde4f/10/Onthophagus%20joannae&ms=700,350&bbox=-10,36,8,45&recalculate=true&legend=1)
223 59 Andreas Kohlbecker
224 47 Franck Theeten
~~~
225 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
226 47 Franck Theeten
~~~
227 59 Andreas Kohlbecker
228 47 Franck Theeten
## Map REST Service - Version 2
229
230 56 Franck Theeten
The major improvement of version 2 is that transparency can be applied both on point data and overlay layers.
231 47 Franck Theeten
232 1 Andreas Kohlbecker
### Distribution Maps
233 57 Franck Theeten
234
Service URL: 
235
236 65 Andreas Kohlbecker
* http://edit.africamuseum.be/edit_wp5/v1.2/rest_gen.php
237
* http://edit.africamuseum.be/edit_wp5/v1.2/points.php
238
* http://edit.africamuseum.be/edit_wp5/v1.2/areas.php
239 57 Franck Theeten
240 65 Andreas Kohlbecker
* http://edit.africamuseum.be/edit_wp5/v1.4_dev/rest_gen.php
241
* http://edit.africamuseum.be/edit_wp5/v1.4_dev/points.php
242
* http://edit.africamuseum.be/edit_wp5/v1.4_dev/areas.php
243 57 Franck Theeten
244 65 Andreas Kohlbecker
"rest_gen.php" merges the functionalities of points.php and areas.php. 
245 58 Franck Theeten
246 1 Andreas Kohlbecker
"points.php" and "areas.php" are still available as aliases to rest_gen for backward compatibility reasons.
247 57 Franck Theeten
248
#### Compatibility with OGC syntax
249 58 Franck Theeten
250 57 Franck Theeten
Since version 1.2, the service compliant with the syntax version 2.2.2 of GeoServer. 
251
252
Geoserver follows now more strictly the OGC syntax than before, especially for legends, a point which created an importantbackward compatibility issue when upgrading Geoservber.
253 58 Franck Theeten
254 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.
255
256
The previous version had this element in the URL: “...geoserver/GetLegendGraphic?service=WMS&…” 
257
258
...while GeoServer awaits now: “...geoserver/wms?REQUEST=GetGraphicLegend&…”
259
260
This has been fixed in version 1.2 and also commited back to version 1.1 
261
262
#### Merging point and area data
263
264
#### Transparency on overlay layers