| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| en:help:1.4:maps:stored-create [2014/07/20 11:57] – [Quadtree encoded tiles] alpinequest | en:help:1.4:maps:stored-create [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 |
|---|
| <sub>[[en:help|Online Help]] > [[en:help:1.4|AlpineQuest 1.4]] > [[en:help:1.4:maps|Maps]]</sub> | |
| |
| ===== Custom stored maps ===== | |
| |
| The application allows you to create your own stored map configurations and access a wide range of on-line map servers. | |
| |
| Stored maps are defined using an XML based file format offering a powerful configuration flexibility. Files must have an "''**.aqx**''" extension to be recognized by the application. These AQX files must be placed on the device memory like an on-board map, and selected be added to the stored map list. | |
| |
| {{:icon_help.png?nolink}} Be sure to use the last application version. | |
| |
| |
| ==== Basic example ==== | |
| |
| Here is a simple example to access an OSM-like tile server: | |
| |
| <file xml example_1.aqx> | |
| <?xml version="1.0" encoding="utf-8"?> | |
| <aqx version="3"> | |
| |
| <name>Basic Map Examples</name> | |
| |
| <source id="ID1"> | |
| <name>Basic Map Example</name> | |
| <level> | |
| <zoom-values>5,7,9,11,12,13,14,15,16,17</zoom-values> | |
| <servers> | |
| <server>http://server1.example.com/tiles/{$z}/{$x}/{$y}.png</server> | |
| <server>http://server2.example.com/tiles/{$z}/{$x}/{$y}.png</server> | |
| <server>http://server2.example.com/tiles/{$z}/{$x}/{$y}.png</server> | |
| </servers> | |
| </level> | |
| </source> | |
| |
| </aqx> | |
| </file> | |
| |
| This example is composed of the following required elements: | |
| |
| * The generic XML and AQX declarations: | |
| <code xml> | |
| <?xml version="1.0" encoding="utf-8"?> | |
| <aqx version="3"> | |
| </code> | |
| \\ | |
| |
| * The name of the AQX file maps set: | |
| <code xml><name>Basic Map Examples</name></code> | |
| \\ | |
| |
| * The definition of the first map inside the AQX file: | |
| <code xml><source id="ID1"></code> | |
| |
| The "''**id**''" attribute value must be unique inside the file, and is used to create the cache storage file.\\ | |
| Other maps can be added to the file.\\ | |
| \\ | |
| |
| * The name of the map: | |
| <code xml><name>Basic Map Example</name></code> | |
| \\ | |
| |
| * The definition of the zoom levels of the map: | |
| <code xml><level></code> | |
| The "''**type**''" attribute specify type of the tile server being accessed. Use "''**rest**''" for OSM-like server.\\ | |
| \\ | |
| |
| * The zoom values being used for this map: | |
| <code xml><zoom-values>5,7,9,11,12,13,14,15,16,17</zoom-values></code> | |
| \\ | |
| |
| * The URL of the tile servers: | |
| <code xml> | |
| <servers> | |
| <server>http://server1.example.com/tiles/{$z}/{$x}/{$y}.png</server> | |
| <server>http://server2.example.com/tiles/{$z}/{$x}/{$y}.png</server> | |
| <server>http://server3.example.com/tiles/{$z}/{$x}/{$y}.png</server> | |
| </servers> | |
| </code> | |
| |
| Any number of "''**<server>**''" tag can be added.\\ | |
| The ''**{$x}**'', ''**{$y}**'' and ''**{$z}**'' variables are used to define the tiles. | |
| |
| |
| ==== Advanced example ==== | |
| |
| In addition to the required tags, additional ones are available: | |
| |
| <file xml example_2.aqx> | |
| <?xml version="1.0" encoding="utf-8"?> | |
| <aqx version="3"> | |
| |
| <name>Advanced Map Examples</name> | |
| |
| <source id="ID1_1"> | |
| <name>Advanced Map Example 1</name> | |
| <description>Description</description> | |
| <data-source>http://www.example.com/viewer/</data-source> | |
| <outline>2.54,49.49 2.54,51.51 6.41,51.51 6.41,49.49</outline> | |
| <copyright>2014 Example</copyright> | |
| <icon-data>(base 64 encoded 69*69px icon data)</icon-data> | |
| <level> | |
| <zoom-values>5,7,9,11,12,13,14,15,16,17</zoom-values> | |
| <tiles-size>256</tiles-size> | |
| <update-delay>None</update-delay> | |
| <servers> | |
| <referer>http://server1.example.com/</referer> | |
| <max-threads>2</max-threads> | |
| <server>http://server1.example.com/tiles/{$z}/{$x}/{$y}.png</server> | |
| <server>http://server2.example.com/tiles/{$z}/{$x}/{$y}.png</server> | |
| <server>http://server2.example.com/tiles/{$z}/{$x}/{$y}.png</server> | |
| </servers> | |
| </level> | |
| </source> | |
| | |
| <source id="ID1_2" layer="true"> | |
| <name>Advanced Map Example 2</name> | |
| <description><![CDATA[<html>HTML description...</html>]]></description> | |
| <level> | |
| <zoom-values>5,7,9,11,12,13,14,15,16,17</zoom-values> | |
| <server>http://server.example.com/tiles/{$z}/{$x}/{$y}.png</server> | |
| </level> | |
| </source> | |
| |
| </aqx> | |
| </file> | |
| |
| |
| ==== Quadtree encoded tiles ==== | |
| |
| Instead of using the classical ''**{$x}**'' / ''**{$y}**'' / ''**{$z}**'' variables, you can use the ''**{$q}**'' variable that contains the quadtree encoded coordinates of the tiles, like in this example: | |
| |
| <code xml> | |
| <source id="ID2"> | |
| <name>Quadtree Map Example</name> | |
| <level> | |
| <zoom-values>5,7,9,11,12,13,14,15,16,17</zoom-values> | |
| <servers> | |
| <server>http://server1.example.com/tiles/{$q}</server> | |
| <server>http://server2.example.com/tiles/{$q}</server> | |
| <server>http://server3.example.com/tiles/{$q}</server> | |
| </servers> | |
| </level> | |
| </source> | |
| </code> | |
| |
| |
| ==== Custom variables / Expression ==== | |
| |
| In addition to the variables provided by default, you can create your own variables defined by mathematical expressions for each levels: | |
| |
| <code xml> | |
| <source id="ID3"> | |
| <name>Expressions Map Example</name> | |
| <level type="rest"> | |
| <zoom-values>5,7,9,11,12,13,14,15,16,17</zoom-values> | |
| <expression set="k" type="int">iif( z>10, x*y, x+y )</expression> | |
| <servers> | |
| <server>http://server.example.com/tiles/{$k}.png</server> | |
| </servers> | |
| </level> | |
| </source> | |
| </code> | |
| |
| The "''**set**''" attribute defines the name of the new variable, the "''**type**''" attribute tells that the result should be displayed as an integer when using it. | |
| |
| |
| ==== WMS servers ==== | |
| |
| To access WMS servers, you must use the level type ''**wms**''. The application will then replace the ''**{$bbox}**'' variable by the tile coordinates. | |
| |
| You can specify the coordinate system of the bounding box using the ''**<bbox-crs-code>**'' tag. | |
| |
| Here is an example of how to access tiles from a WMS server: | |
| |
| <code xml> | |
| <source id="ID4"> | |
| <name>WMS Map Example</name> | |
| <level type="wms"> | |
| <zoom-values>5,7,9,11,12,13,14,15,16,17</zoom-values> | |
| <servers> | |
| <bbox-crs-code>EPSG:4326</bbox-crs-code> | |
| <server><![CDATA[http://server.example.com/wms/Service?REQUEST=GetMap&VERSION=1.1.1&LAYERS=layer&FORMAT=image/png&BBOX={$bbox}&SRS=EPSG:4326&WIDTH=256&HEIGHT=256]]></server> | |
| </servers> | |
| </level> | |
| </source> | |
| </code> | |
| |
| |
| ==== WMTS servers ==== | |
| |
| To access WMTS servers, you need to manually configure each levels: | |
| |
| <code xml> | |
| <source id="ID5"> | |
| <name>WMTS Map Example</name> | |
| | |
| <level type="rest"> | |
| <zoom-values>8</zoom-values> | |
| <projection-code>EPSG:4218</projection-code> | |
| <projection-resolution>2.645833333</projection-resolution> | |
| <projection-offset-x>-450000.0</projection-offset-x><!-- optional, default is 0 --> | |
| <projection-offset-y>-800000.0</projection-offset-y><!-- optional, default is 0 --> | |
| <tiles-size>256</tiles-size><!-- optional, default is 256 --> | |
| <tiles-bounds>104,80,527,423</tiles-bounds><!-- optional --> | |
| <referer>http://server.example.com/wmts/</referer><!-- optional, default is empty --> | |
| <server>http://server.example.com/wmts/{$z}/{$y}/{$x}.png</server> | |
| </level> | |
| | |
| <level type="rest"> | |
| <zoom-values>9</zoom-values> | |
| <projection-code>EPSG:4218</projection-code> | |
| <projection-resolution>1.322916667</projection-resolution> | |
| <projection-offset-x>-450000.0</projection-offset-x><!-- optional, default is 0 --> | |
| <projection-offset-y>-800000.0</projection-offset-y><!-- optional, default is 0 --> | |
| <tiles-size>256</tiles-size><!-- optional, default is 256 --> | |
| <tiles-bounds>208,160,1047,839</tiles-bounds><!-- optional --> | |
| <referer>http://server.example.com/wmts/</referer><!-- optional, default is empty --> | |
| <server>http://server.example.com/wmts/{$z}/{$y}/{$x}.png</server> | |
| </level> | |
| | |
| </source> | |
| </code> | |
| |
| To get the ''**<projection-resolution>**'' from a ''**ScaleDenominator**'', just multiply this value by ''**0.00028**'' (which is the "standardized rendering pixel size", in meter). | |
| |
| |
| ==== Mixed servers ==== | |
| |
| You can also create maps that use different services based on the zoom levels: | |
| |
| <code xml> | |
| <source id="ID6"> | |
| <name>Mixed Map Example</name> | |
| | |
| <level type="rest"> | |
| <zoom-values>5,7,9,11,12</zoom-values> | |
| <servers> | |
| <server>http://server1.example.com/tiles/{$z}/{$x}/{$y}.png</server> | |
| <server>http://server2.example.com/tiles/{$z}/{$x}/{$y}.png</server> | |
| <server>http://server2.example.com/tiles/{$z}/{$x}/{$y}.png</server> | |
| </servers> | |
| </level> | |
| | |
| <level type="wms"> | |
| <zoom-values>13,14,15,16,17</zoom-values> | |
| <servers> | |
| <bbox-crs-code>EPSG:4326</bbox-crs-code> | |
| <server><![CDATA[http://server.example.com/wms/Service?REQUEST=GetMap&VERSION=1.1.1&LAYERS=layer&FORMAT=image/png&BBOX={$bbox}&SRS=EPSG:4326&WIDTH=256&HEIGHT=256]]></server> | |
| </servers> | |
| </level> | |
| | |
| </source> | |
| </code> | |
| |