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) |