Project

General

Profile

MapRestServiceApi » History » Version 55

Andreas Kohlbecker, 01/07/2014 04:27 PM

1 1 Andreas Kohlbecker
2 2 Andreas Kohlbecker
3 1 Andreas Kohlbecker
4 8 Andreas Kohlbecker
5
# Map REST Service
6 1 Andreas Kohlbecker
7
8
9 12 Andreas Kohlbecker
----
10
11
_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_
12
13 1 Andreas Kohlbecker
14 35 Andreas Kohlbecker
_The next version of the EDIT Map Service is being discussed on [[MapRestServiceApi_20_Discussion|MapRestServiceApi 2.0 Discussion]]_
15 34 Andreas Kohlbecker
16
17 1 Andreas Kohlbecker
----
18 21 Niels Hoffmann
19
20
{{>toc}}
21
22 12 Andreas Kohlbecker
23
24
25 20 Andreas Kohlbecker
## Servers
26
27
28
The map services are currently available from the following servers:
29
30
31 54 Andreas Kohlbecker
* Primary server: http://edit.africamuseum.be/edit_wp5.
32 1 Andreas Kohlbecker
33 54 Andreas Kohlbecker
* Secondary server: http://edit.br.fgov.be/edit_wp5
34 1 Andreas Kohlbecker
35 53 Andreas Kohlbecker
36 32 Franck Theeten
There are 3 available scripts :
37 1 Andreas Kohlbecker
38 29 Franck Theeten
39 55 Andreas Kohlbecker
* **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.
40 29 Franck Theeten
41 55 Andreas Kohlbecker
* **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.
42 29 Franck Theeten
43 55 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. 
44 1 Andreas Kohlbecker
45 29 Franck Theeten
46 53 Andreas Kohlbecker
Versions:
47 1 Andreas Kohlbecker
48
49 53 Andreas Kohlbecker
* version 1  - used by most of users (May 2011):
50 1 Andreas Kohlbecker
51 53 Andreas Kohlbecker
  * http://edit.africamuseum.be/edit_wp5/v1/points.php
52 1 Andreas Kohlbecker
53 53 Andreas Kohlbecker
  * http://edit.africamuseum.be/edit_wp5/v1/areas.php
54 29 Franck Theeten
55 53 Andreas Kohlbecker
  * http://edit.africamuseum.be/edit_wp5/v1/rest_gen.php
56 29 Franck Theeten
57 53 Andreas Kohlbecker
* version 1.1 - (20th of May 2011)
58 1 Andreas Kohlbecker
59 53 Andreas Kohlbecker
  * http://edit.africamuseum.be/edit_wp5/v1.1/points.php
60 1 Andreas Kohlbecker
61 53 Andreas Kohlbecker
  * http://edit.africamuseum.be/edit_wp5/v1.1/areas.php
62 1 Andreas Kohlbecker
63 53 Andreas Kohlbecker
  * http://edit.africamuseum.be/edit_wp5/v1.1/rest_gen.php
64 29 Franck Theeten
65 53 Andreas Kohlbecker
* version 1.2 - **recommended** 
66 29 Franck Theeten
67 53 Andreas Kohlbecker
  * http://edit.africamuseum.be/edit_wp5/v1.2/points.php
68 29 Franck Theeten
69 53 Andreas Kohlbecker
  * http://edit.africamuseum.be/edit_wp5/v1.2/areas.php
70 29 Franck Theeten
71 53 Andreas Kohlbecker
  * **http://edit.africamuseum.be/edit_wp5/v1.2/rest_gen.php** 
72 29 Franck Theeten
73 20 Andreas Kohlbecker
74
75 12 Andreas Kohlbecker
76 1 Andreas Kohlbecker
## Introduction
77
78
79 3 Andreas Kohlbecker
The EDIT Map Service returns map images in response to a URL. Distribution and occurrence maps can be generated.
80 1 Andreas Kohlbecker
81 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.
82 1 Andreas Kohlbecker
83 5 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]].
84 12 Andreas Kohlbecker
85
86
Some parts and features of this REST API is still in a creative process these considerations and thoughts are collected and discussed in [[MapRestServiceIdeas]].
87 1 Andreas Kohlbecker
88
89
90
## Conventions and general considerations
91
92
93 3 Andreas Kohlbecker
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.
94 1 Andreas Kohlbecker
95
96
The request URIs must conform to [RFC 3986](http://tools.ietf.org/html/rfc3986.)
97
98
99 3 Andreas Kohlbecker
The EDIT Map Service ignores wms attributes if a substitute is defined in this specification, e.g.:
100 1 Andreas Kohlbecker
101
102 19 Andreas Müller
* **request=!GetMap**  -              not needed
103 1 Andreas Kohlbecker
104
* **Format          ** -             optional (need to define default : png?)
105
106
* **bbox              ** -           required!
107
108
* **width, height**         -        replaced by **ms** 
109
110
* **layers               ** -       replaced by **l**  optional
111
112
* **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.)
113
114
115
In attribute names the following letters are used as abbreviations for:
116
117
118
* d: data
119
120
* s: style / size
121
122
* a: area
123
124
* r: resolution
125
126
* g: grid
127
128
* o: occurrence
129
130
* c: cell  
131
132
* l: layer
133
134
* m: map image
135
136
137
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. 
138
139
140
141
### Reserved Characters
142
143
144
The colon ':' is used as delimiter between a leading identifier and the data, style ...
145
146
147
The semi-colon ";" is always used as delimiter between entries of the same data type.
148
149
150
The comma "," character delimits the sub-entries of which a singel entry can be composed (e.g: <longitude>,<latitude>).
151
152
153
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>).
154
155
156
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@).
157
158
159
160
### Syntax Definition
161
162
163 22 Andreas Kohlbecker
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:
164 1 Andreas Kohlbecker
165
166
Brackets "[]" are used to enclose optional attributes.
167
168
169
Angles "<>" are used to enclose data component names.
170
171
172 22 Andreas Kohlbecker
The expressions "[[]"|and "[;..]]" indicate that the preceding element can be repeated multiples times using the particular delimiter.
173 1 Andreas Kohlbecker
174
175 22 Andreas Kohlbecker
The pipe character "|" is being used to separate optional entries. 
176 1 Andreas Kohlbecker
177 22 Andreas Kohlbecker
178
179 9 Andreas Kohlbecker
## Map Services
180 1 Andreas Kohlbecker
181
182 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:
183 1 Andreas Kohlbecker
184
185 10 Andreas Kohlbecker
* map service: @ ./map/ @
186 1 Andreas Kohlbecker
187 10 Andreas Kohlbecker
* legend service: @ ./legend/ @
188 1 Andreas Kohlbecker
189
190
191
192 10 Andreas Kohlbecker
193
## Layers
194
195
196 9 Andreas Kohlbecker
For wms areas are specified in shape files (polygons in *.shp + area index in *.shx).
197 1 Andreas Kohlbecker
198 10 Andreas Kohlbecker
199 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.
200 9 Andreas Kohlbecker
201 10 Andreas Kohlbecker
202 1 Andreas Kohlbecker
These predefined layers can be selected by the layer name, e.g. tdwg1 for TDWG regions level 1.  
203
204
205 9 Andreas Kohlbecker
 **Attribute:** 
206 10 Andreas Kohlbecker
207 1 Andreas Kohlbecker
208 10 Andreas Kohlbecker
209
~~~
210 22 Andreas Kohlbecker
(layer) l=<layer name>[:[<layer style id>][<shp file url>|<raster data url>]];...
211 1 Andreas Kohlbecker
~~~
212
213 13 Andreas Kohlbecker
The (layer) "l" attribute is an facultative one it is not needed if only predefined layers are used for a map.
214
215
216 1 Andreas Kohlbecker
Multiple layer definitions are separated by dash characters.
217
218
219
Where
220
221
* `<layer name>` is the name of either a default shape file offered by the server or a new name.
222
223
* `<layer style id>` is the identifier of a layerstyle 
224
225
226
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.
227
228
229
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>@. 
230
231
232 11 Andreas Kohlbecker
 **Available Layers (<layer name>)** 
233
234
235 24 Andreas Müller
* 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))
236 11 Andreas Kohlbecker
237 24 Andreas Müller
* 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))
238 11 Andreas Kohlbecker
239 24 Andreas Müller
* 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))
240 11 Andreas Kohlbecker
241 24 Andreas Müller
* 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))
242 11 Andreas Kohlbecker
243 23 Franck Theeten
* earth
244 11 Andreas Kohlbecker
245 36 Franck Theeten
* e_provinces
246
247 37 Franck Theeten
* several vmap0 layers (http://en.wikipedia.org/wiki/Vector_Map http://gis-lab.info/qa/vmap0-eng.html)
248 1 Andreas Kohlbecker
249 37 Franck Theeten
 
250 38 Franck Theeten
~~~
251
currently (8/8/2011) there are 76 vmap0 layers in the EDIT Geoserver WMS. 
252
     They are (roughly) divided in 4 zones:
253
         * Europe (layers beginning with 'vmap0_eu' in the EDIT WMS)
254
         * Asia and Oceania (layers beginning with 'vmap0_as' in the EDIT WMS 
255
         * Africa and South America (layers beginning with 'vmap0_afsa' in the EDIT WMS)
256
         * North America (layers beginning with 'vmap0_na' in the EDIT WMS)
257
~~~
258
* 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,
259
260
 ecological layers (soil, rivers, vegetation}, layers on infrastructure and habitat (urban areas, roads, railways) etc...
261
262
* Only parts of the information have been imported for the 3 other zones , but they all features at least the political boundaries:
263
264
* 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
265
266
* 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
267
268
* 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
269
270
* 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
271
272
273
The provinces are named and retrievable through "GetFeature" WMS queries.
274
275
276
* -It is possible to ask for more layers as the complete Vmap0 has been loaded into the PostGIS database feeding the EDIT WMS.
277
278
279
* -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:
280
281
282
283
*  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
284
285
286
* -An aggregate layer of all the national subdivisions of the world is available. 
287
288
289
* Its name is "*vmap0_world_national_boundaries*"
290
291
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
292
293
294
  
295
296
  
297
298
299
----
300
301 11 Andreas Kohlbecker
 
302 1 Andreas Kohlbecker
303 38 Franck Theeten
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)
304 25 Andreas Müller
305
306 27 Andreas Müller
 **Layer styles** 
307
308
309 1 Andreas Kohlbecker
Layer styles are defined by the layer_style attribute
310
311
312
~~~
313
(layer style) ls=<layer_style_id>:[<line_color>][/<line_width>][/<stroke_style_id>];..
314
~~~
315
316
Where 
317
318
* `layer_style_id` is the layers identifier
319
320
* `line_color` is the color of border lines used in the layer
321
322
* `line_width` is the width of the border lines
323
324
* `stroke_style_id` is an id for the stroke (still to be defined)
325 11 Andreas Kohlbecker
326 1 Andreas Kohlbecker
327
328
329
> [Pere]
330
331
> Shapefiles is the ESRI (propietary) format for storing vector data. The most performant way of storing areas are in postGIS database. 
332
333
> 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. 
334
335
>
336
337
338
> 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). 
339
340
>
341
342
>> [[Andreas|K]] So the solution could be like the following:
343
344
>> - We allow for example 20 extra layers as postGIS tables
345
346
>> - Shapefiles (or GML?) are inserted by shp2pgsql into one of the postGIS tables
347
348
>> - 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>
349
350
351
352
## Areas
353
354
355 23 Franck Theeten
*A.Attribute (for all layers)*: 
356 1 Andreas Kohlbecker
357
~~~
358 23 Franck Theeten
  (area data) ad=<layer name>:<field name>:<area set>[;..]
359
      <area set> ::= <area style ids>:<area id list>
360
      <area id list> ::= <area id>[,..]
361
~~~
362
363
Where 
364
365
366
* `<field name>` is the name of the field in the WMS layer that contains the <area style ids>
367
368
* `<area style ids>` is a string of one letter `[a-z,A-Z]` area style ids
369
370
* `<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.
371
372
373
e.g:
374
375
http://edit.br.fgov.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
376
377
378
379
*B.Attribute (optional for precoded TDWG layers)*: 
380
381
~~~
382 1 Andreas Kohlbecker
  (area data) ad=<layer name>:<area set>[;..]
383
      <area set> ::= <area style ids>:<area id list>
384
      <area id list> ::= <area id>[,..]
385
~~~
386
387
Where 
388
389
390 23 Franck Theeten
* `<area style ids>` is a string of one letter `[a-z,A-Z]` area style ids
391 1 Andreas Kohlbecker
392 23 Franck Theeten
* `<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.
393 1 Andreas Kohlbecker
394 23 Franck Theeten
* `<field name>` (2nd parameter of previous case) can be dropped in this case.  
395 1 Andreas Kohlbecker
396
397
398
## Area Style
399
400
401
*Attribute*: 
402
403
~~~
404
  (area style) as=<area style id>:<area style definition>[;..]              
405
  
406
   <area style definition> ::= <pattern id>/<color>[/<style_label>] -  defines a pattern and foreground color to fill a shape with
407
   <area style definition> ::= <color>[/<style_label>] -  defines a background (fill) color for a shape
408
~~~
409
Where 
410
411
* `<pattern id>` is a number from 0 to 99 identifying a predefined fill pattern
412
413
* `<color>` is a RGB hex code always 6 letters long
414
415
* `<style_label>` is the label of the style in the legend
416
417
418
*Further improvement*: 
419
420
421
  Removing the unnecessary colons used as separator, they are just for readability. 
422
423
424
  Area styles can easily parsed without.
425 39 Franck Theeten
426
427
### Point Style
428
429
430
*attribute*:
431
432
433
~~~
434
os=indexer:shape/RGB_fillcolor/size_of_shape/label
435
(1 indexer; 4 parameters separated by “/”):
436
~~~
437
438
e.g:
439
440
os=1:c/0000FF/17/others
441
442
443
indexer	        =	1 (can also be text)
444
445
446
shape		= 	“c” (circle). other possible values: "c"=>circle; "s" =>star; "sq"=> square
447
448
449
fill color	=	0000FF (Blue)
450
451
452
size		=	17
453
454
455
label		= 	"others"
456
457
458
                         
459
460 1 Andreas Kohlbecker
461
462
463
## Grids
464
465
466
467
*Attributes*: 
468
469
470
~~~
471
(grid resolution) gr=<layer name>[:<layer style id>]:<long>[,<lat>] - specifies a grid layer
472
473
(grid data)       gd=<layer name>:<cell set>[;..]
474
                  <cell set> ::= <cell style id>:<cell id>
475
~~~
476
        
477
478
       
479
Where 
480
481
      `<layer name>` is the name of a predefined grid layer or a new name identifying the grid specified by the additional attributes.
482
483
      `<long>` is horizontal resolution in degrees eg. 1, 10, 0.6, 0.1 ...
484
485
486
      `<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
487
488
489
      <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. 
490
491
492
~~~
493
                  0   1 
494
                +---+---+
495
              0 | 00| 01|
496
                +---+---+
497
              1 | 10| 11|
498
                +---+---+
499
~~~
500
501
> 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). 
502
503
>
504
505
>> So we can ad  the following to the proposal (see above..)
506
507
                
508
~~~
509
      <cell style id>  is the id of a cell style .... [TODO]
510
~~~
511
512
 **Open questions:** 
513
514
515
* how to define style labels for the longitude and latitude axis?
516
517
518
519
## Occurrences
520
521
522
*Attributes*: 
523
524
525
~~~
526
  (occurrence data)  od=<occurrence set id>:<occurrence entry list>
527
  <occurrence entry list> ::= <occurrence entry>[;..]
528
  <occurrence entry> ::= <long>,<lat>[,<precision>]
529
  
530
  (occurrence style) os=<occurence style definition>[;..]
531
  <occurence style definition> ::= <occurrence set id>:<style>/<color>
532
~~~
533
534
Where
535
536
537
* `<occurrence set id>` is an number [0-9] on 1..n digits
538
539
* `<long>` is longitude in degrees of the occurrence point
540
541
* `<lat>`  is latitude in degrees of the occurrence point
542
543
* `<precision>` precision 
544
545
* `<color>` is a RGB hex code always 6 letters long
546
547
* `<style>` either one letter [[a-z|A-Z]] except 'u' and 'z' which are used for
548
549
  * u: u<unicode hex code(4 letters)> unicode character as occurrence point icon  
550
551
  * z: z<number> custom style reserved for future use  
552
553
  * c: circle
554
555
  * s: square
556
557
  * ....
558
559
560 9 Andreas Kohlbecker
561
## Legends
562
563
564
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. 
565
566
567
~~~
568
 (map legend type) mlt=<legend type id>
569
  <legend type id> ::= h|v // see below for explanation
570
571
 (map legend position) mlp=
572
  <legend position id> ::= 1|2|3|4|5|6|7|8  // see below for explanation
573
~~~
574
575
576
 **horizontal legend** (@mlt=h@):
577
578
~~~
579
item 1
580
item 2
581
item 3
582
~~~
583
584
 **vertical legend** (@mlt=v@):
585
586
~~~
587
item 1 item2 item 3
588
item 4 item 5 item 6
589
~~~
590
591
*legend positioning*:
592
593
~~~
594
+-----+
595
|1 2 3|
596
|4   5|
597
|6 7 8|
598
+-----+
599
~~~
600 1 Andreas Kohlbecker
601
602
## Map Image
603
604
605
Attributes:
606
607
~~~
608
  (map size)        ms=[<units>:][<width>][,<height>]
609
610
  (map resolution)  mr=<pdi>
611
~~~
612
  
613
614
Where 
615
616
* `<units>` is optional an is one of px, mm, cm, .... defaults is px
617
618
* `<pdi>` is the resolution of the image in dpi, default is 72dpi
619
620
621
*Open questions*:
622
623
624
* color space / profile definition could be important for print quality maps required? how to ?
625
626
* how to style and configure legends?
627 16 Pere Roca Ristol
628
629
630
## Labels
631
632
633
How to define for each layer if we are interested (or not) to view it's label?
634
635
Andreas K. suggested these two main options:
636
637
638
1) extend the labels parameter:
639
640
641
labels =<layer name>:[0|1],...
642
643
644
2) extend the layers parameter with something like:
645
646
647
(layer) l=<layer name>[[[<layer|style id>]],[[<labels_on>]|[/<shp file url>]][[<raster|data url>]]];...
648 28 Franck Theeten
649
650
651
652
## Background WMS layer
653
654
655
The REST services also provide possibility to display background layer coming from external WMS:
656
657
658
There are 3 parameters to take into consideration
659
660
661
  
662
663
1)   "externalwms"       : The base URL of the WMS to query ("root" of the GetCapabilities" request.
664
665
  
666
667
2)   [externalwmsversion]() The version of the WMS standard used by the server (OPTIONAL: default value is "1.1.1")
668
669
  
670
671
3)   "externalwmslayer"  : A list of layers coming from the same WMS (comma-separated) 
672
673
674
The complete syntax is the following:
675
676
677
~~~
678
externalwms=[base URI of the WMS]&externalwmsversion=[externalwmsversion]&externalwmslayer=[name_layer_1][,name_layer_2][,...name_layer_n]
679
~~~
680
681
682
683
e.g.:
684
685
686
687
~~~
688
http://edit.br.fgov.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
689
~~~
690 40 Franck Theeten
691
692 43 Franck Theeten
693 44 Franck Theeten
## Available layers
694
695
696
697 49 Franck Theeten
### 1) topp:em_tiny_jan2003 _Added 2013/07/25_
698 48 Franck Theeten
  
699
(layer originating from the Helsinki Natural history museum for Euro+Med areas : http://dev.e-taxonomy.eu/trac/ticket/2707). 
700 1 Andreas Kohlbecker
701
702 43 Franck Theeten
703 48 Franck Theeten
704
705 1 Andreas Kohlbecker
## Available Projections
706
707 48 Franck Theeten
708
709 50 Franck Theeten
### 1) EPSG:7777777 _Added 2013/07/25_
710 48 Franck Theeten
711 1 Andreas Kohlbecker
Projection for topp:em_tiny_jan2003
712 48 Franck Theeten
713
WKT (geoserver "epsg.properties):
714
715 51 Andreas Kohlbecker
~~~
716 52 Andreas Kohlbecker
7777777=PROJCS[
717
	"Lambert_Conformal_Conic",
718
	GEOGCS[
719
		"GCS_Unknown",
720
		DATUM[
721
			"D_European_1950",
722
			SPHEROID[
723
				"International_1924",
724
				6378388,297
725
			]
726
		],
727
		PRIMEM[
728
			"Greenwich",
729
			0
730
		],
731
		UNIT[
732
			"Degree",
733
			0.017453292519943295
734
		]
735
	],
736
	PROJECTION[
737
		"Lambert_Conformal_Conic"
738
	],
739
	PARAMETER[
740
		"standard_parallel_1",
741
		42
742
	],
743
	PARAMETER[
744
		"standard_parallel_2",
745
		56
746
	],
747
	PARAMETER[
748
		"latitude_of_origin",
749
		35
750
	],
751
	PARAMETER[
752
		"central_meridian",
753
		24
754
	],
755
	PARAMETER[
756
		"false_easting",
757
		3000000
758
	],
759
	PARAMETER[
760
		"false_northing",
761
		100000
762
	],
763
	UNIT[
764
		"Meter",
765
		1
766
	]
767
]
768 1 Andreas Kohlbecker
~~~
769
Proj4 (PostGIS):
770
771 51 Andreas Kohlbecker
~~~
772 52 Andreas Kohlbecker
+proj= lcc + 42 + 56 + 35 + 24 + 3000000 + 100000 (id in the spatial_ref_sys_table is 7777777)
773 51 Andreas Kohlbecker
~~~