no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


Previous revision
Last revision
en:help:1.4:maps:stored-create [2015/01/19 16:04] alpinequest
Line 1: Line 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>
 +    <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>