| Previous revisionLast revision |
— | en:help:1.4:maps:stored-create [2015/01/19 16:04] – alpinequest |
---|
| <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> |
| <key-url>http://url-of-map-key</key-url> |
| <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> |
| <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> |
| <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> |
| <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> |
| |