Project

General

Profile

MapRestServiceExamples » History » Version 69

Andreas Kohlbecker, 11/28/2016 02:54 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 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).
36
37
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).
38 1 Andreas Kohlbecker
39
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) 
40 51 Franck Theeten
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 53 Franck Theeten
=> in the answer: "xsd:string" corresponds to attribute having a test format that can be used in filter. 
46 51 Franck Theeten
47 1 Andreas Kohlbecker
48
## Map REST Service - Version 1
49 51 Franck Theeten
50 65 Andreas Kohlbecker
*Does not conform to the latest syntax definition!*
51 53 Franck Theeten
52 51 Franck Theeten
### Distribution Maps
53 50 Franck Theeten
54
Service URL: http://edit.africamuseum.be/edit_wp5/v1.2/areas.php
55 1 Andreas Kohlbecker
56
57 50 Franck Theeten
#### Basic Issues
58 1 Andreas Kohlbecker
59 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.
60 1 Andreas Kohlbecker
61
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).
62
63 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).
64
65 62 Andreas Kohlbecker
Current codes for background layers are:
66 3 Andreas Kohlbecker
67 65 Andreas Kohlbecker
* Country borders: earth
68
* TDWG level 1: tdwg1
69
* TDWG level 2: tdwg2
70
* TDWG level 3: tdwg3
71
* TDWG level 4: tdwg4
72 1 Andreas Kohlbecker
73 26 Pere Roca Ristol
74 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)
75 26 Pere Roca Ristol
76
~~~
77
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
78
&as=a:8dd3c7,,1&ms=500&bbox=-180,-90,180,90
79
~~~
80 1 Andreas Kohlbecker
81 26 Pere Roca Ristol
####  Recalculate Parameter
82
83
We see here the "recalculate" parameter in action. 
84
85 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. 
86 6 Andreas Kohlbecker
87
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.
88
89 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)
90 1 Andreas Kohlbecker
91 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)
92 25 Pere Roca Ristol
93
~~~
94
l=earth&ad=tdwg3:a:PHI,VAN,BOR|b:BIS,SUM&as=a:8dd3c7,,2|b:e91f16,5be166,,2_4&ms=500&label=1
95 1 Andreas Kohlbecker
~~~
96 6 Andreas Kohlbecker
~~~
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&recalculate=false
98 62 Andreas Kohlbecker
~~~
99 25 Pere Roca Ristol
100
####  Different TDWG Layers
101 1 Andreas Kohlbecker
102 65 Andreas Kohlbecker
You can mix different TDWG layers. In that case, TDWG level 3 and TDWG level 1.
103 1 Andreas Kohlbecker
104
No background layer is defined, so you simply get the specified areas. 
105
106 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)
107 26 Pere Roca Ristol
108
~~~
109
ad=tdwg3:b:ZIM|a:SPA,ITA||tdwg1:b:2&as=a:d7add2|b:ab8dc9F&ms=600,300&label=1
110 7 Andreas Kohlbecker
~~~
111 1 Andreas Kohlbecker
112
#### Symbolize Parameters
113 62 Andreas Kohlbecker
114 7 Andreas Kohlbecker
A more complex styling. The parameters for styling an area are:
115
116 65 Andreas Kohlbecker
* Area fill color
117
* Area stroke color
118
* Area stroke width
119
* 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).
120 41 Niels Hoffmann
121 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. 
122 28 Pere Roca Ristol
123 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.
124
125 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)
126 61 Andreas Kohlbecker
127 28 Pere Roca Ristol
~~~
128 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
129 1 Andreas Kohlbecker
~~~
130 28 Pere Roca Ristol
131 1 Andreas Kohlbecker
#### Map Legends
132 28 Pere Roca Ristol
133 1 Andreas Kohlbecker
A legend can be appended to your map in different positions. 
134 28 Pere Roca Ristol
135
Specify "title" parameter, associating to each style the desired legend. Also legend=1 and "mlp" (map legend position) 
136
137
It is important to assign, for each style, a title, otherwise cause error.
138
139
The map legend position can be:
140
141 65 Andreas Kohlbecker
* 1: outside of the map, up left 
142
* 2: outside of the map, up 
143
* 3: outside of the map, up right 
144
* 4: outside of the map, below left
145
* 5: inside of the map, below right
146
* 6:  inside of the map, below left
147
* 7:  inside of the map, up right
148 28 Pere Roca Ristol
149 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)
150 60 Andreas Kohlbecker
151 28 Pere Roca Ristol
~~~
152 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
153
~~~
154 34 Pere Roca Ristol
A separate service generating legend is working, so you can put the legend wherever you want on your html. 
155
156 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)
157 1 Andreas Kohlbecker
158 62 Andreas Kohlbecker
~~~
159 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
160 29 Pere Roca Ristol
~~~
161
162
#### Hatching Patterns
163
164
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.
165 1 Andreas Kohlbecker
166 17 Andreas Müller
The second parameter of "symbols"  specifies the size of the image used for hatching.
167 33 Pere Roca Ristol
168 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)
169 16 Andreas Kohlbecker
170
~~~
171 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
172 32 Pere Roca Ristol
~~~
173 43 Niels Hoffmann
174 30 Pere Roca Ristol
#### Using MapRest on a webmapping application
175 1 Andreas Kohlbecker
176 31 Pere Roca Ristol
All these mapping services can be used on a dynamic webmapping application like [OpenLayers](http://openlayers.org/.) 
177
178 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. 
179 30 Pere Roca Ristol
180 64 Andreas Kohlbecker
With some little javascript coding you can get dynamic maps (zoom in/out, panning...).
181
182 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/)
183
184
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...
185
186 66 Andreas Kohlbecker
~~~json
187 30 Pere Roca Ristol
[{"bbox":"-28.267,27.664,72.65,81.851",
188 1 Andreas Kohlbecker
"legend":" http://edit.africamuseum.be/edit_wp5/v1.2/sld/4e9b417a9789481932b57e53c47291c6.sld",
189 62 Andreas Kohlbecker
"layers":[{"tdwg": "tdwg3","session": "","sld": "tdwg3_4e9b417a9789481932b57e53c47291c6.sld"},
190 4 Andreas Kohlbecker
{"tdwg": "tdwg1","session": "","sld": "tdwg1_4e9b417a9789481932b57e53c47291c6.sld"}]}]
191 65 Andreas Kohlbecker
~~~
192 33 Pere Roca Ristol
193 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.
194 33 Pere Roca Ristol
195 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. 
196 20 Pere Roca Ristol
197 65 Andreas Kohlbecker
By this way you can avoid distorted images that too often happen with "image" MapRest services.
198 32 Pere Roca Ristol
199 13 Andreas Kohlbecker
### Occurrence Maps
200 1 Andreas Kohlbecker
201 10 Andreas Kohlbecker
Service URL: http://edit.africamuseum.be/edit_wp5/v1.2/points.php
202 1 Andreas Kohlbecker
203
MapRest services also can plot occurrences. Just specify each point data coordinates (in latitude/longitude) 
204 33 Pere Roca Ristol
205 1 Andreas Kohlbecker
This service is subject to changes soon.
206
207
Current symbolization parameters are:
208 8 Andreas Kohlbecker
209 65 Andreas Kohlbecker
* symbol: you can choose "c" (a circle),  "s" (a star), and "sq" (square)
210
* symbol size
211
* a name to be used on the legend
212 47 Franck Theeten
213 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. 
214 47 Franck Theeten
215
ATBI sites like Gemer (http://www.atbi.eu/gemer/) and Mercantour/Alpi-Marittime (http://www.atbi.eu/mercantour-marittime/) are already using this service.
216
217
Also point occurrences can be mapped on a dynamic webmapping application but it is still not implemented.
218
219 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)
220 59 Andreas Kohlbecker
221 47 Franck Theeten
~~~
222 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
223 47 Franck Theeten
~~~
224 59 Andreas Kohlbecker
225 47 Franck Theeten
## Map REST Service - Version 2
226
227 56 Franck Theeten
The major improvement of version 2 is that transparency can be applied both on point data and overlay layers.
228 47 Franck Theeten
229 1 Andreas Kohlbecker
### Distribution Maps
230 57 Franck Theeten
231
Service URL: 
232
233 65 Andreas Kohlbecker
* http://edit.africamuseum.be/edit_wp5/v1.2/rest_gen.php
234
* http://edit.africamuseum.be/edit_wp5/v1.2/points.php
235
* http://edit.africamuseum.be/edit_wp5/v1.2/areas.php
236 57 Franck Theeten
237 65 Andreas Kohlbecker
* http://edit.africamuseum.be/edit_wp5/v1.4_dev/rest_gen.php
238
* http://edit.africamuseum.be/edit_wp5/v1.4_dev/points.php
239
* http://edit.africamuseum.be/edit_wp5/v1.4_dev/areas.php
240 57 Franck Theeten
241 65 Andreas Kohlbecker
"rest_gen.php" merges the functionalities of points.php and areas.php. 
242 58 Franck Theeten
243 1 Andreas Kohlbecker
"points.php" and "areas.php" are still available as aliases to rest_gen for backward compatibility reasons.
244 57 Franck Theeten
245
#### Compatibility with OGC syntax
246 58 Franck Theeten
247 57 Franck Theeten
Since version 1.2, the service compliant with the syntax version 2.2.2 of GeoServer. 
248
249
Geoserver follows now more strictly the OGC syntax than before, especially for legends, a point which created an importantbackward compatibility issue when upgrading Geoservber.
250 58 Franck Theeten
251 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.
252
253
The previous version had this element in the URL: “...geoserver/GetLegendGraphic?service=WMS&…” 
254
255
...while GeoServer awaits now: “...geoserver/wms?REQUEST=GetGraphicLegend&…”
256
257
This has been fixed in version 1.2 and also commited back to version 1.1 
258
259
#### Merging point and area data
260
261
#### Transparency on overlay layers