Project

General

Profile

MapRestServiceApi » History » Version 67

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

1 61 Andreas Kohlbecker
# EDIT Map Service API
2 1 Andreas Kohlbecker
3 67 Katja Luther
4
{{toc}}
5
6
{{child_pages(depth=1)}}
7
8
9 1 Andreas Kohlbecker
* [[MapRestServiceExamples|Map REST Service Examples]]
10 63 Andreas Kohlbecker
11
12
----
13 1 Andreas Kohlbecker
14 65 Andreas Kohlbecker
*This is not a specification of a publicly available service but a proposal and guidance for the implementation of next version of the EDIT Map Service*
15 12 Andreas Kohlbecker
16 65 Andreas Kohlbecker
17 34 Andreas Kohlbecker
*The next version of the EDIT Map Service is being discussed on [[MapRestServiceApi_20_Discussion|MapRestServiceApi 2.0 Discussion]]*
18 1 Andreas Kohlbecker
19 21 Niels Hoffmann
----
20
21 1 Andreas Kohlbecker
22 67 Katja Luther
23 12 Andreas Kohlbecker
24
25 20 Andreas Kohlbecker
## Servers
26
27
28
The map services are currently available from the following servers:
29
30 54 Andreas Kohlbecker
31 1 Andreas Kohlbecker
* Primary server: http://edit.africamuseum.be/edit_wp5.
32
* Secondary server: http://edit.br.fgov.be/edit_wp5
33 53 Andreas Kohlbecker
34 58 Andreas Kohlbecker
The EDIT map service offers 3 different service endpoints. :
35 1 Andreas Kohlbecker
36 29 Franck Theeten
37 55 Andreas Kohlbecker
 **Recommended endpoint:** 
38 29 Franck Theeten
39 1 Andreas Kohlbecker
* **rest_gen.php** (version 1 developped from May 2011): Merging [areas.php" and "points.php]() color theme both for areas (polygons) and distribution points. Output in JSON format is also available. 
40
41 58 Andreas Kohlbecker
 **End points only for testing and special purposes:** 
42
43
* **areas.php**  (version 1 dev. from 2007): displaying maps with areas (polygons) having a color theme dynamically defined by HTTP GET or POST parameters. Output in json format is also available.
44
* **points.php** (version 1 dev. from 2007): displaying maps with points for occurrence data. Position, legend and symbology of the points can be dynamically defined by HTTP parameters. Output in JSON format is also available.
45
46 53 Andreas Kohlbecker
Versions:
47 1 Andreas Kohlbecker
48 60 Andreas Kohlbecker
49 53 Andreas Kohlbecker
* version 1  - (May 2011):
50
  * http://edit.africamuseum.be/edit_wp5/v1/points.php
51
  * http://edit.africamuseum.be/edit_wp5/v1/areas.php
52
  * http://edit.africamuseum.be/edit_wp5/v1/rest_gen.php
53
* version 1.1 - (20th of May 2011)
54
  * http://edit.africamuseum.be/edit_wp5/v1.1/points.php
55
  * http://edit.africamuseum.be/edit_wp5/v1.1/areas.php
56
  * http://edit.africamuseum.be/edit_wp5/v1.1/rest_gen.php
57
* version 1.2 - **recommended** 
58
  * http://edit.africamuseum.be/edit_wp5/v1.2/points.php
59 29 Franck Theeten
  * http://edit.africamuseum.be/edit_wp5/v1.2/areas.php
60 20 Andreas Kohlbecker
  * **http://edit.africamuseum.be/edit_wp5/v1.2/rest_gen.php** 
61 12 Andreas Kohlbecker
62 1 Andreas Kohlbecker
## Introduction
63
64 3 Andreas Kohlbecker
The EDIT Map Service returns map images in response to a URL. Distribution and occurrence maps can be generated.
65 1 Andreas Kohlbecker
66 15 Andreas Kohlbecker
Each map is specified by attributes (URL query parameters) or in future by configuration files whose location is given by attributes to the service, which in turn will load the files to process them.
67 1 Andreas Kohlbecker
68 12 Andreas Kohlbecker
These configuration files are not Geoserver/WMS config files. These files are an alternative way to submit settings for a map to the wms wrapper. For example you can specify areas as described below or you tell the service  from where it can download a file which contains all the area definitions. Practical exampls of URI requests to a EDIT Map Service are found on [[MapRestServiceExamples|Map REST Service Examples]].
69
70 1 Andreas Kohlbecker
Some parts and features of this REST API is still in a creative process these considerations and thoughts are collected and discussed in [[MapRestServiceIdeas]].
71
72
## Conventions and general considerations
73
74
The EDIT Map Service is a service wrapping around a WMS geoserver. wms query parameters can be used in addition to the API attributes defined here. The wrapper internally construct the WMS GetMap request from the REST API attributes.
75
76
The request URIs must conform to [RFC 3986](http://tools.ietf.org/html/rfc3986.)
77
78 3 Andreas Kohlbecker
The EDIT Map Service ignores wms attributes if a substitute is defined in this specification, e.g.:
79 1 Andreas Kohlbecker
80 19 Andreas Müller
81 1 Andreas Kohlbecker
* **request=!GetMap**  -              not needed
82
* **Format          ** -             optional (need to define default : png?)
83
* **bbox              ** -           required!
84
* **width, height**         -        replaced by **ms** 
85
* **layers               ** -       replaced by **l**  optional
86
* **SRS                  ** -      (Spatial Reference System (SRS) identifier ) optional ( Defines projections in WMS GetMap request. Using EPSG:4326 (WGS84 lat/long) is the default but can be changed on-the-fly to different UTM and much more zone specific.)
87
88
In attribute names the following letters are used as abbreviations for:
89
90
* d: data
91
* s: style / size
92
* a: area
93
* r: resolution
94
* g: grid
95
* o: occurrence
96
* c: cell  
97
* l: layer
98
* m: map image
99
100
Since there is a size limitation for URLs the API syntax is soze optimizes where possible. This is mainly achieved by avoiding redundancies and could be further improved by reducing the need for separators. 
101
102
### Reserved Characters
103
104
The colon ':' is used as delimiter between a leading identifier and the data, style ...
105
106
The semi-colon ";" is always used as delimiter between entries of the same data type.
107
108
The comma "," character delimits the sub-entries of which a singel entry can be composed (e.g: <longitude>,<latitude>).
109
110
Data entities of different types which together specifiy a character out of a matrix (or tree) of possible characters are delimited by the dash "/" (e.g: <shape>/<size>/<color>).
111
112
There is no delimiter to concatenate multiple lists of entries into a single attribute. In this case the same attribute is used multiple time in the request URI, every time assigned to another set of entries ( e.g.: @od=1:38.326,-0.822;38.328,-0.542&od=3:40.78,-4.009;43.461,-5.412@).
113
114
### Syntax Definition
115
116
The grammar definition which is adapted from the [Backus-Naur Form (BNF)](http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form) is using the following characters:
117 22 Andreas Kohlbecker
118 1 Andreas Kohlbecker
Brackets "[]" are used to enclose optional attributes.
119
120
Angles "<>" are used to enclose data component names.
121
122
The expressions "[[]"|and "[;..]]" indicate that the preceding element can be repeated multiples times using the particular delimiter.
123
124 65 Andreas Kohlbecker
The pipe character "|" is being used to separate optional entries.
125 22 Andreas Kohlbecker
126
## Map Services
127 1 Andreas Kohlbecker
128 9 Andreas Kohlbecker
There are two different services which are used for creating maps. One service for creating maps and another one being responsible for creating the legends. The map created by the map service can directly include legends in which case the map service is using the legend service internally. The services are registered to the following URI sub paths:
129 1 Andreas Kohlbecker
130 10 Andreas Kohlbecker
* map service: @ ./map/ @
131 1 Andreas Kohlbecker
* legend service: @ ./legend/ @
132
133
### Response Content Types
134 59 Andreas Kohlbecker
135
The map service can respond with two different content types which are: 
136
137
* **Map images** - this is the default response content type
138
* **JSONP** - this is useful in order to use the maps in a dynamic map viewer like openlayers.
139
140
To enable the JSONP response type you need to add the img query parameter to the request URL:
141
142
~~~
143
img=false
144
~~~
145
 
146
## Layers
147 10 Andreas Kohlbecker
148
For wms areas are specified in shape files (polygons in *.shp + area index in *.shx).
149 9 Andreas Kohlbecker
150 1 Andreas Kohlbecker
The map service offers a set of default raster data and shape files e.g. for all 4 TDWG regions, ISO regions etc.
151 10 Andreas Kohlbecker
152 1 Andreas Kohlbecker
These predefined layers can be selected by the layer name, e.g. tdwg1 for TDWG regions level 1.  
153
154 65 Andreas Kohlbecker
**Attribute:** 
155 10 Andreas Kohlbecker
156 1 Andreas Kohlbecker
~~~
157 10 Andreas Kohlbecker
(layer) l=<layer name>[:[<layer style id>][<shp file url>|<raster data url>]];...
158 22 Andreas Kohlbecker
~~~
159 1 Andreas Kohlbecker
160 13 Andreas Kohlbecker
The (layer) "l" attribute is an facultative one it is not needed if only predefined layers are used for a map.
161
162
Multiple layer definitions are separated by dash characters.
163 1 Andreas Kohlbecker
164
Where
165
166
* `<layer name>` is the name of either a default shape file offered by the server or a new name.
167
* `<layer style id>` is the identifier of a layerstyle 
168
169
The order of <layer name> parameters in the attribute specifies the order of the layer stack for the map image from bottom to top. Raster data must be the first on the list, otherwise you cannot see vector layers.
170
171
In the latter case the optional attribute `<shp file url>` must be given to specify a *.shp file to processed by the server. The name of the also required *.shx (index-) file is inferred from @<shp file url>@. 
172
173 11 Andreas Kohlbecker
 **Available Layers (<layer name>)** 
174 24 Andreas Müller
175
* tdwg1 ([overview](http://edit.br.fgov.be:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=topp:tdwg_level_1&styles=&bbox=-180.0,-90.0,180.0,83.624&width=684&height=330&srs=EPSG:4326&format=application/openlayers))
176
* tdwg2 ([overview](http://edit.br.fgov.be:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=topp:tdwg_level_2&styles=&bbox=-180.0,-90.0,180.0,83.624&width=684&height=330&srs=EPSG:4326&format=application/openlayers))
177
* tdwg3 ([overview](http://edit.br.fgov.be:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=topp:tdwg_level_3&styles=&bbox=-180.0,-90.0,180.0,83.624&width=684&height=330&srs=EPSG:4326&format=application/openlayers))
178 11 Andreas Kohlbecker
* tdwg4 ([overview](http://edit.br.fgov.be:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=topp:tdwg_level_4&styles=&bbox=-180.0,-90.0,180.0,83.624&width=684&height=330&srs=EPSG:4326&format=application/openlayers))
179
* earth
180 36 Franck Theeten
* e_provinces
181
* several vmap0 layers (http://en.wikipedia.org/wiki/Vector_Map http://gis-lab.info/qa/vmap0-eng.html)
182 1 Andreas Kohlbecker
183 37 Franck Theeten
~~~
184 1 Andreas Kohlbecker
currently (8/8/2011) there are 76 vmap0 layers in the EDIT Geoserver WMS. 
185 37 Franck Theeten
     They are (roughly) divided in 4 zones:
186 38 Franck Theeten
         * Europe (layers beginning with 'vmap0_eu' in the EDIT WMS)
187
         * Asia and Oceania (layers beginning with 'vmap0_as' in the EDIT WMS 
188
         * Africa and South America (layers beginning with 'vmap0_afsa' in the EDIT WMS)
189
         * North America (layers beginning with 'vmap0_na' in the EDIT WMS)
190
~~~
191
192 65 Andreas Kohlbecker
* The complete European dataset has been imported, with political (borders of countries and national subdivisions (like Belgian and Dutch Provinces, French Regions, German Landers, Italian regions Swiss Canton etc...) layers,
193 38 Franck Theeten
 ecological layers (soil, rivers, vegetation}, layers on infrastructure and habitat (urban areas, roads, railways) etc...
194
* Only parts of the information have been imported for the 3 other zones , but they all features at least the political boundaries:
195
* Europe: http://edit.br.fgov.be:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=topp:vmap0_eur_bnd_political_boundary_a&styles=&bbox=-31.266,30.0,180.0,81.857&width=1344&height=330&srs=EPSG:4326&format=application/openlayers
196
* Asia and Oceania: http://edit.br.fgov.be:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=topp:vmap0_na_bnd_political_boundary_a&styles=&bbox=-180.0,-30.531,-7.921,83.627&width=512&height=339&srs=EPSG:4326&format=application/openlayers
197
* Africa and South America: http://edit.br.fgov.be:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=topp:vmap0_afsa_bnd_political_boundary_a&styles=&bbox=-180.0,-30.531,-7.921,83.627&width=512&height=339&srs=EPSG:4326&format=application/openlayers
198
* North America: http://edit.br.fgov.be:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=topp:vmap0_na_bnd_political_boundary_a&styles=&bbox=-180.0,-30.531,-7.921,83.627&width=512&height=339&srs=EPSG:4326&format=application/openlayers
199
200
The provinces are named and retrievable through "GetFeature" WMS queries.
201
202
* -It is possible to ask for more layers as the complete Vmap0 has been loaded into the PostGIS database feeding the EDIT WMS.
203
* -It is also possible to aggregate together several layers in oen alias with one specific style, but this operation is tedious as it requires the manual configuration of several SLD files:
204
*  e.g: http://edit.br.fgov.be:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=vmap0_world_basic&styles=&bbox=-180.0,-90.0,180.0,90.0&width=660&height=330&srs=EPSG:4326&format=application/openlayers
205
* -An aggregate layer of all the national subdivisions of the world is available. 
206
* Its name is "*vmap0_world_national_boundaries*"
207
208
http://edit.br.fgov.be:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=vmap0_world_national_boundaries&styles=&bbox=-180.0,-90.0,180.0,83.627&width=684&height=330&srs=EPSG:4326&format=application/openlayers
209 1 Andreas Kohlbecker
210 38 Franck Theeten
----
211
212 11 Andreas Kohlbecker
For a complete list of currently available layers see [geoserver layer preview](http://edit.br.fgov.be:8080/geoserver/web/?wicket:bookmarkablePage=:org.geoserver.web.demo.MapPreviewPage)
213 1 Andreas Kohlbecker
214 65 Andreas Kohlbecker
**Layer styles** 
215 25 Andreas Müller
216
Layer styles are defined by the layer_style attribute
217 27 Andreas Müller
218
~~~
219 1 Andreas Kohlbecker
(layer style) ls=<layer_style_id>:[<line_color>][/<line_width>][/<stroke_style_id>];..
220
~~~
221
222
Where 
223
224
* `layer_style_id` is the layers identifier
225
* `line_color` is the color of border lines used in the layer
226
* `line_width` is the width of the border lines
227
* `stroke_style_id` is an id for the stroke (still to be defined)
228
229
> [Pere]
230
> Shapefiles is the ESRI (propietary) format for storing vector data. The most performant way of storing areas are in postGIS database. 
231
> We could insert the .shp in postGIS and try to “inform” Geoserver of this new layer... something like this has been done before but it can be complicated. 
232
>
233
> Another issue is to insert information (CSV files or whatever, even shapefile)  in an already existing postGIS database (as the table already exists and is defined in Geoserver, we just need an userid filter to get the data we just have inserted now; this is the technique used in mapViewer to filter the CSV data you insert). 
234
>
235
>> [[Andreas|K]] So the solution could be like the following:
236
>> - We allow for example 20 extra layers as postGIS tables
237
>> - Shapefiles (or GML?) are inserted by shp2pgsql into one of the postGIS tables
238
>> - An md5 hash of the according URL parameter token ( <layer name>[[<shp|file url>]][[<raster|data url>]] ) is used as key to identify, i.e. to filter the shapes for this layer definition for the geoserver. Otherwise 1) you would have to add a URL queryparameter user=<username>
239
240
## Areas
241
242
243
*A.Attribute (for all layers)*: 
244
245
~~~
246
  (area data) ad=<layer name>:<field name>:<area set>[;..]
247
      <area set> ::= <area style ids>:<area id list>
248
      <area id list> ::= <area id>[,..]
249 23 Franck Theeten
~~~
250
251
Where 
252
253
* `<field name>` is the name of the field in the WMS layer that contains the <area style ids>
254
* `<area style ids>` is a string of one letter `[a-z,A-Z]` area style ids
255
* `<area id>` either is the shape index as defined in the *.shx file or a area name. Area names are internally translated by the service ito shape index.
256
257
e.g:
258
259
http://edit.africamuseum.be/edit_wp5/v1/areas.php?l=cyprusdivs&ad=cyprusdivs:bdcode:a:4|b:2|c:8&as=a:000000~0.1|b:~0.1|c:000000~0.1&title=a%3ACasual%3F|b%3Anaturalised|c%3AIndigenous&l=tdwg4&ad=cyprusdivs:bdcode:a:4|b:2|c:8&as=a:000000~0.1|b:~0.1|c:000000~0.1&title=a:Casual%3F|b:naturalised|c:Indigenous&img=false&ms=500&bbox=32,34,35,36&labels=1&img=true&ms=500&img=true&legend=1&mlp=3&mc_s=Georgia,15,blue&mc=&recalculate=false
260
261
262
*B.Attribute (optional for precoded TDWG layers)*: 
263
264 57 Andreas Kohlbecker
~~~
265 23 Franck Theeten
  (area data) ad=<layer name>:<area set>[;..]
266
      <area set> ::= <area style ids>:<area id list>
267
      <area id list> ::= <area id>[,..]
268 1 Andreas Kohlbecker
~~~
269
270
Where 
271
272
* `<area style ids>` is a string of one letter `[a-z,A-Z]` area style ids
273
* `<area id>` either is the shape index as defined in the *.shx file or a area name. Area names are internally translated by the service ito shape index.
274 23 Franck Theeten
* `<field name>` (2nd parameter of previous case) can be dropped in this case.  
275 1 Andreas Kohlbecker
276 23 Franck Theeten
## Area Style
277 1 Andreas Kohlbecker
278 23 Franck Theeten
279 1 Andreas Kohlbecker
*Attribute*: 
280
281
~~~
282
  (area style) as=<area style id>:<area style definition>[;..]              
283
  
284
   <area style definition> ::= <pattern id>/<color>[/<style_label>] -  defines a pattern and foreground color to fill a shape with
285
   <area style definition> ::= <color>[/<style_label>] -  defines a background (fill) color for a shape
286
~~~
287 65 Andreas Kohlbecker
288 1 Andreas Kohlbecker
Where 
289
290
* `<pattern id>` is a number from 0 to 99 identifying a predefined fill pattern
291
* `<color>` is a RGB hex code always 6 letters long
292
* `<style_label>` is the label of the style in the legend
293
294
*Further improvement*: 
295
296
  Removing the unnecessary colons used as separator, they are just for readability. 
297
  Area styles can easily parsed without.
298
299
### Point Style
300
301
302 39 Franck Theeten
*attribute*:
303
304
305
~~~
306
os=indexer:shape/RGB_fillcolor/size_of_shape/label
307
(1 indexer; 4 parameters separated by “/”):
308
~~~
309
310
e.g:
311
312
os=1:c/0000FF/17/others
313
314
315
indexer	        =	1 (can also be text)
316
317
shape		= 	“c” (circle). other possible values: "c"=>circle; "s" =>star; "sq"=> square
318
319
fill color	=	0000FF (Blue)
320
321
size		=	17
322
323
label		= 	"others"
324
325 1 Andreas Kohlbecker
## Grids
326
327
328
*Attributes*: 
329
330
~~~
331
(grid resolution) gr=<layer name>[:<layer style id>]:<long>[,<lat>] - specifies a grid layer
332
333
(grid data)       gd=<layer name>:<cell set>[;..]
334
                  <cell set> ::= <cell style id>:<cell id>
335
~~~
336
        
337
Where 
338
339 65 Andreas Kohlbecker
 * `<layer name>` is the name of a predefined grid layer or a new name identifying the grid specified by the additional attributes.
340
 * `<long>` is horizontal resolution in degrees eg. 1, 10, 0.6, 0.1 ...
341
 * `<lat>` This optional attribute is the vertical resolution in degrees eg. 1, 10, 0.6, 0.1. if felt out the `<long>` attribute will taken instead
342
 * <cell id> is the identifier of a cell concatenated of the horizontal and vertical cell number (figure) or the cell identifier of a predefined grid layer like UTM 25000. 
343 1 Andreas Kohlbecker
344
345
~~~
346
                  0   1 
347
                +---+---+
348
              0 | 00| 01|
349
                +---+---+
350
              1 | 10| 11|
351
                +---+---+
352
~~~
353
354
> If grid follows an already defined projection and resolution (for example UTM 25000 resolution that can be seen in mapViewer) we already have in our database the corresponding code for each cell. This code can be labeled (shown on the map). 
355
>
356
>> So we can ad  the following to the proposal (see above..)
357 65 Andreas Kohlbecker
       
358 1 Andreas Kohlbecker
~~~
359
      <cell style id>  is the id of a cell style .... [TODO]
360
~~~
361
362
 **Open questions:** 
363
364
365
* how to define style labels for the longitude and latitude axis?
366
367
## Occurrences
368
369
370
*Attributes*: 
371
372
373
~~~
374
  (occurrence data)  od=<occurrence set id>:<occurrence entry list>
375
  <occurrence entry list> ::= <occurrence entry>[;..]
376
  <occurrence entry> ::= <long>,<lat>[,<precision>]
377
  
378
  (occurrence style) os=<occurence style definition>[;..]
379
  <occurence style definition> ::= <occurrence set id>:<style>/<color>
380
~~~
381
382
Where
383
384
385
* `<occurrence set id>` is an number [0-9] on 1..n digits
386
* `<long>` is longitude in degrees of the occurrence point
387
* `<lat>`  is latitude in degrees of the occurrence point
388
* `<precision>` precision 
389
* `<color>` is a RGB hex code always 6 letters long
390
* `<style>` either one letter [[a-z|A-Z]] except 'u' and 'z' which are used for
391
  * u: u<unicode hex code(4 letters)> unicode character as occurrence point icon  
392
  * z: z<number> custom style reserved for future use  
393
  * c: circle
394
  * s: square
395
  * ....
396
397
398
## Legends
399
400 9 Andreas Kohlbecker
401
Legends can be either be horizontal or vertical legends (see below) you can place the legend on top or bottom or at the left or right side  or at the edges of the map. 
402
403
404
~~~
405
 (map legend type) mlt=<legend type id>
406
  <legend type id> ::= h|v // see below for explanation
407
408
 (map legend position) mlp=
409
  <legend position id> ::= 1|2|3|4|5|6|7|8  // see below for explanation
410
~~~
411
412
413
 **horizontal legend** (@mlt=h@):
414
415
~~~
416
item 1
417
item 2
418
item 3
419
~~~
420
421
 **vertical legend** (@mlt=v@):
422
423
~~~
424
item 1 item2 item 3
425
item 4 item 5 item 6
426
~~~
427
428
*legend positioning*:
429
430
~~~
431
+-----+
432
|1 2 3|
433
|4   5|
434
|6 7 8|
435
+-----+
436
~~~
437
438
439
### How to get legends separately from a map
440 1 Andreas Kohlbecker
441
442 62 Andreas Kohlbecker
443
The map service offers the `legends.php` endpoint which allows to get pure legends without a map. This exists for the versions v1.2 and v1.4_dev.
444
445
Two usage examples:
446
447
~~~
448
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
449
http://edit.africamuseum.be/edit_wp5/v1.4_dev/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
450
~~~
451
452
 **Using the `legends.php` endpoints is however no longer recommended.** Please note that there is also a way to directly access the URL of the SLD generated for the legend in the JSON output of the main script `img=false` :
453
454
http://edit.africamuseum.be/edit_wp5/v1.4_dev/rest_gen.php?&img=false&recalculate=false&ms=512,512&bbox=-28.125,32.132821,54.84375,73.617196&l=background_gis:Y,earth:Z,&title=b:introduced%2C+naturalized|c:present|d:native%2C++doubtfully+native|a:native|f:extinct&ad=euromed_2013%3Aparent:a:It|euromed_2013%3Aemarea:f:Po|d:No&as=Z:ffffff,606060~|Y:1874CD~|a:ffaf00~0.1,|b:f781bf~0.1,|c:4daf4a~0.1,|d:377eb8~0.1,|f:4daf4a~0.1,&legend=1
455
456
457
then you can link it back to the WMS:
458
459
460
http://edit.africamuseum.be/geoserver/wms?REQUEST=GetLegendGraphic&VERSION=1.1.1&format=image/png&TRANSPARENT=TRUE&WIDTH=60&HEIGHT=50&layer=tdwg_level_3&SLD=http://edit.africamuseum.be/synthesys/www/v1/sld/sld_displayed_legend_euromed_2013_8e4a4b0aa1a16208028f552875575131.sld
461
462
463
## Map Image
464
465
466 1 Andreas Kohlbecker
Attributes:
467
468
~~~
469
  (map size)        ms=[<units>:][<width>][,<height>]
470
471
  (map resolution)  mr=<pdi>
472
~~~
473
  
474
475
Where 
476
477
* `<units>` is optional an is one of px, mm, cm, .... defaults is px
478
* `<pdi>` is the resolution of the image in dpi, default is 72dpi
479
480
*Open questions*:
481
482
* color space / profile definition could be important for print quality maps required? how to ?
483
* how to style and configure legends?
484
485 16 Pere Roca Ristol
## Labels
486
487
488
How to define for each layer if we are interested (or not) to view it's label?
489
490
Andreas K. suggested these two main options:
491
492
493
1) extend the labels parameter:
494
495
496
labels =<layer name>:[0|1],...
497
498
499
2) extend the layers parameter with something like:
500
501
502 28 Franck Theeten
(layer) l=<layer name>[[[<layer|style id>]],[[<labels_on>]|[/<shp file url>]][[<raster|data url>]]];...
503
504
505
## Background WMS layer
506
507
508
The REST services also provide possibility to display background layer coming from external WMS:
509
510
511
There are 3 parameters to take into consideration
512
513 65 Andreas Kohlbecker
1.  "externalwms"       : The base URL of the WMS to query ("root" of the GetCapabilities" request.
514
1.   [externalwmsversion]() The version of the WMS standard used by the server (OPTIONAL: default value is "1.1.1")
515
1.   "externalwmslayer"  : A list of layers coming from the same WMS (comma-separated) 
516 28 Franck Theeten
517
The complete syntax is the following:
518
519
520
~~~
521
externalwms=[base URI of the WMS]&externalwmsversion=[externalwmsversion]&externalwmslayer=[name_layer_1][,name_layer_2][,...name_layer_n]
522
~~~
523
524 40 Franck Theeten
e.g.:
525
526 44 Franck Theeten
527
~~~
528
http://edit.africamuseum.be/edit_wp5/v1/rest_gen.php?od=1:52.17,14.26|52.18,14.26|52.16,14.27|52.16,14.28|52.16,14.29|52.29,14.26|52.28,14.39|52.28,14.41|52.2,14.43|52.19,14.52|52.12,14.46|52.13,14.46|52.11,14.47|52.12,14.47|52.13,14.47|52.18,14.49|52.19,14.49|52.06,14.5|52.07,14.5|52.09,14.5|52.06,14.51|52.07,14.51|52.21,14.51|52.06,14.52||2:52.08,14.53|52.09,14.53|52.06,14.55&os=1:s/8B0000/7/all||2:c/0000FF/7/others&l=earth:d&ad=vmap0_eur_pop_built_up_a:nam:d:%||vmap0_eur_pop_built_up_a:nam:a:EICHWALDE||vmap0_eur_pop_built_up_a:nam:b:COTTBUS||vmap0_eur_pop_built_up_a:nam:c:ZERNSDORF,BINDOWBRUCK,SENZIG&as=a:984ea3|b:ff7f00,1,0.1|c:ffff33,,0.1|d:FFCEFD,FFCEFD,0.1&title=a:EICHALDE|b:COTTBUS|c:ZERNSDORF,BINDOWBRUCK,SENZIG|d:others%20municipalities&img=true&recalculate=true&legend=1&mlp=1&ms=400,350&bbox=13.50,51.4,15,52.7&recalculate=false&callback=true&externalwms=http://isk.geobasis-bb.de/ows/dnm.php&externalwmsversion=1.1.1&externalwmslayer=bg%2Cvegetation%2Cgewaesser%2Csiedlung%2Cbln%2Cbrb%2Ctransport%2Cverkehrsobjekte%2Cstrassennamen%2Cortsnamen%2Cgewaessernamen
529 49 Franck Theeten
~~~
530 48 Franck Theeten
531
## Available layers
532 1 Andreas Kohlbecker
533
534 43 Franck Theeten
### 1) topp:em_tiny_jan2003 _Added 2013/07/25_
535 48 Franck Theeten
  
536
(layer originating from the Helsinki Natural history museum for Euro+Med areas : http://dev.e-taxonomy.eu/trac/ticket/2707). 
537 1 Andreas Kohlbecker
538
539 48 Franck Theeten
## Available Projections
540
541 50 Franck Theeten
### 1) EPSG:7777777 _Added 2013/07/25_
542 48 Franck Theeten
543 1 Andreas Kohlbecker
Projection for topp:em_tiny_jan2003
544 48 Franck Theeten
545
WKT (geoserver "epsg.properties):
546
547 51 Andreas Kohlbecker
~~~
548 52 Andreas Kohlbecker
7777777=PROJCS[
549
	"Lambert_Conformal_Conic",
550
	GEOGCS[
551
		"GCS_Unknown",
552
		DATUM[
553
			"D_European_1950",
554
			SPHEROID[
555
				"International_1924",
556
				6378388,297
557
			]
558
		],
559
		PRIMEM[
560
			"Greenwich",
561
			0
562
		],
563
		UNIT[
564
			"Degree",
565
			0.017453292519943295
566
		]
567
	],
568
	PROJECTION[
569
		"Lambert_Conformal_Conic"
570
	],
571
	PARAMETER[
572
		"standard_parallel_1",
573
		42
574
	],
575
	PARAMETER[
576
		"standard_parallel_2",
577
		56
578
	],
579
	PARAMETER[
580
		"latitude_of_origin",
581
		35
582
	],
583
	PARAMETER[
584
		"central_meridian",
585
		24
586
	],
587
	PARAMETER[
588
		"false_easting",
589
		3000000
590
	],
591
	PARAMETER[
592
		"false_northing",
593
		100000
594
	],
595
	UNIT[
596
		"Meter",
597
		1
598
	]
599 1 Andreas Kohlbecker
]
600
~~~
601 66 Andreas Kohlbecker
602 1 Andreas Kohlbecker
Proj4 (PostGIS):
603 51 Andreas Kohlbecker
604 52 Andreas Kohlbecker
~~~
605 51 Andreas Kohlbecker
+proj= lcc + 42 + 56 + 35 + 24 + 3000000 + 100000 (id in the spatial_ref_sys_table is 7777777)
606 66 Andreas Kohlbecker
~~~
607
608
Proj4js (java script):
609
610
~~~
611
+proj=lcc +lat_1=42 +lat_2=56 +lat_0=35 +lon_0=24 +x_0=3000000 +y_0=100000 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs
612 56 Andreas Kohlbecker
~~~
613
614
615
## latest developments
616
617
618
Preliminary documentation on experimental features are found in the following tickets (only accessible for registered developers after login):
619
620
621
*  #4150 (compile edit map service documentation of new features in version v1.4_dev and v1.5_dev)