Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
en:help:v2:maps:on-demand-create [2016/09/08 19:01] – alpinequest | en:help:v2:maps:on-demand-create [2020/11/30 16:12] – alpinequest |
---|
<sub>[[en:help|Online Help]] > [[en:help:v2|AlpineQuest 2.x]] > [[en:help:v2:maps|Maps & Layers]]</sub> | <sub>[[en:help|Online Help]] > [[en:help:v2|AlpineQuest 2.x]] > [[en:help:v2:maps|Maps & Layers]]</sub> |
| |
====== How to create custom maps? ====== | ====== How to create a custom map? ====== |
| \\ |
The application uses an XML based format for its maps configuration. Files must have an ''**.AQX**'' extention and be placed in the "''**[application folder]/cache/custom-maps/**''" folder. | The application uses an XML based format for its maps configuration. Files must have an ''"**.aqx**"'' extension and be placed in the ''"**[application folder]/datastore/custom-maps/**"'' folder (you may need to create the ''"**custom-maps**"'' sub-folder if it doesn't exist). |
| |
See [[en:help:v2:settings:storage#how_to_locate_the_application_folder|how to locate the application folder here]]. | See [[en:help:v2:settings:storage#how_to_locate_the_application_folder|how to locate the application folder here]]. |
<file xml TEST1.AQX> | <file xml TEST1.AQX> |
<?xml version="1.0" encoding="utf-8" ?> | <?xml version="1.0" encoding="utf-8" ?> |
<aqx version="7"> | <aqx version="9"> |
| |
<name>Simple Test AQX</name> | <name>Simple Test AQX</name> |
<name>Standard Mapnik</name> | <name>Standard Mapnik</name> |
<zoom-levels z="3,5,7,8,9,10,11,12,13,14,15,16,17"> | <zoom-levels z="3,5,7,8,9,10,11,12,13,14,15,16,17"> |
<server><![CDATA[http://a.tile.openstreetmap.org/{$z}/{$x}/{$y}.png]]></server> | <server><![CDATA[https://a.tile.openstreetmap.org/{$z}/{$x}/{$y}.png]]></server> |
</zoom-levels> | </zoom-levels> |
</source> | </source> |
Note that the application will recognize the ''**{$x}**'', ''**{$y}**'' and ''**{$z}**'' variable and replace them with correct values. | Note that the application will recognize the ''**{$x}**'', ''**{$y}**'' and ''**{$z}**'' variable and replace them with correct values. |
| |
The source ''**id**'' field must be unique in the file, and contains only characters and numbers. It is used internally by the application to identify the data storage of the map. | The source ''"**id**"'' field must be unique in the file, and contains only characters and numbers. It is used internally by the application to identify the data storage of the map. |
| |
\\ | \\ |
<file xml TEST2.AQX> | <file xml TEST2.AQX> |
<?xml version="1.0" encoding="utf-8" ?> | <?xml version="1.0" encoding="utf-8" ?> |
<aqx version="7"> | <aqx version="9"> |
| |
<name>Simple Test AQX</name> | <name>Simple Test AQX</name> |
<description>© OpenStreetMap</description> | <description>© OpenStreetMap</description> |
| |
<source id="MAP01"> | <source id="MAP01" type="topo"> |
| |
<name>Standard Mapnik</name> | <name>Standard Mapnik</name> |
<max-threads>2</max-threads> | <max-threads>2</max-threads> |
<user-agent>MyApp</user-agent> | <user-agent>MyApp</user-agent> |
<referer><![CDATA[http://www.openstreetmap.org/]]></referer> | <key-url><![CDATA[https://www.openstreetmap.org/key]]></key-url> |
| <referer><![CDATA[https://www.openstreetmap.org/]]></referer> |
| |
<server><![CDATA[http://a.tile.openstreetmap.org/{$z}/{$x}/{$y}.png]]></server> | <server><![CDATA[https://a.tile.openstreetmap.org/{$z}/{$x}/{$y}.png]]></server> |
<server><![CDATA[http://b.tile.openstreetmap.org/{$z}/{$x}/{$y}.png]]></server> | <server><![CDATA[https://b.tile.openstreetmap.org/{$z}/{$x}/{$y}.png]]></server> |
<server><![CDATA[http://c.tile.openstreetmap.org/{$z}/{$x}/{$y}.png]]></server> | <server><![CDATA[https://c.tile.openstreetmap.org/{$z}/{$x}/{$y}.png]]></server> |
| |
</zoom-levels> | </zoom-levels> |
{{ :en:help:v2:maps:on-demand-create-preview-2.jpg?nolink }} | {{ :en:help:v2:maps:on-demand-create-preview-2.jpg?nolink }} |
| |
The ''**<update-delay>**'' tag indicates after how many time the stored map data should be updated if it's used again. The default is ''**None**'', meaning the application will never try to update the stored data. Must end with ''**D**'' (number of days), ''**W**'' (weeks), ''**M**'' (months) or ''**Y**'' (years). ''**3M**'' means ''**3 months**''. Use ''**0D**'' to force the application to update the data on each display. | The ''**<update-delay>**'' tag indicates after how many time the stored map data should be updated if it's used again. The default is ''**None**'', meaning the application will never try to update the stored data. Must end with ''**D**'' (number of days), ''**W**'' (weeks), ''**M**'' (months) or ''**Y**'' (years). For example, ''**3M**'' means 3 months. Use ''**0D**'' to force the application to update the data on each display. |
| |
| The optional ''"**type**"'' attribute allows to define the type of the map. If no preview is available, the application will use common preview based on the map type. Can be one of ''"**roads**"'', ''"**topo**"'', ''"**satellite**"'', ''"**hybrid**"'', ''"**nautical**"'', ''"**aeronautical**"'', ''"**historical**"'', ''"**hillshade**"'', ''"**contours**"''. |
| |
| ==== Map layer ==== |
| \\ |
| The difference between regular maps and map layers is that a map layer is added over the current map when being selected. This is usually used for maps having a transparent background. Here is how to define a map layer: |
| |
| <code xml> |
| <source id="LAYER01" layer="true" opacity="50"> |
| <name>Map Layer Example</name> |
| <zoom-levels z="3,5,7,8,9,10,11,12,13,14,15,16,17"> |
| <server><![CDATA[https://a.tile.openstreetmap.org/{$z}/{$x}/{$y}.png]]></server> |
| </zoom-levels> |
| </source> |
| </code> |
| |
| The optional ''"**opacity**"'' attribute allows to define an initial opacity, given in percent. |
| |
\\ | \\ |
<name>Quadtree Map Example</name> | <name>Quadtree Map Example</name> |
<zoom-levels z="3,5,7,8,9,10,11,12,13,14,15,16,17"> | <zoom-levels z="3,5,7,8,9,10,11,12,13,14,15,16,17"> |
<server><![CDATA[http://map.example.com/tiles/{$q}]]></server> | <server><![CDATA[https://map.example.com/tiles/{$q}]]></server> |
</zoom-levels> | </zoom-levels> |
</source> | </source> |
<zoom-levels z="3,5,7,8,9,10,11,12,13,14,15,16,17"> | <zoom-levels z="3,5,7,8,9,10,11,12,13,14,15,16,17"> |
<expression set="my_variable" type="int">iif( z>10, x*y, x+y )</expression> | <expression set="my_variable" type="int">iif( z>10, x*y, x+y )</expression> |
<server><![CDATA[http://map.example.com/tiles/{$my_variable}.png]]></server> | <server><![CDATA[https://map.example.com/tiles/{$my_variable}.png]]></server> |
</zoom-levels> | </zoom-levels> |
</source> | </source> |
</code> | </code> |
| |
The "''**set**''" attribute defines the name of the custom variable, the "''**type**''" attribute tells how to display the variable (either ''**int**'', ''**long**'', ''**float**'' or ''**double**''). | The ''"**set**"'' attribute defines the name of the custom variable, the ''"**type**"'' attribute tells how to display the variable (either ''"**int**"'', ''"**long**"'', ''"**float**"'' or ''"**double**"''). |
| |
| Most common functions and operators can be used, for example ''"**abs(x)**"'', ''"**sqrt(x)**"'', ''"**hypot(x,y)**"'', ''"**cos(x)**"'', ''"**charat(str,index)**"'', ''"**replace(str,target,replace)**"'', ''"**deg_to_rad(x)**"'', ''"**dist_eucl(x1,y1,x2,y2)**"'', ''"**md5(str)**"'', ''"**rand_uni()**"'', ''"**quadtree(x,y,z)**"'', etc. |
| |
\\ | \\ |
| |
==== WMS servers ==== | ===== WMS servers ===== |
\\ | \\ |
To access WMS servers, just use the ''**{$bbox}**'' variable. You can specify the coordinate system of the bounding box using the ''**<bbox-crs-code>**'' tag. | To access WMS servers, just use the ''**{$bbox}**'' variable. You can specify the coordinate system of the bounding box using the ''**<bbox-crs-code>**'' tag. |
<zoom-levels z="3,5,7,8,9,10,11,12,13,14,15,16,17"> | <zoom-levels z="3,5,7,8,9,10,11,12,13,14,15,16,17"> |
<bbox-crs-code>EPSG:4326</bbox-crs-code> | <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> | <server><![CDATA[https://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> |
</zoom-levels> | </zoom-levels> |
</source> | </source> |
</code> | </code> |
| |
| \\ |
| |
| ===== WMTS server ===== |
| \\ |
| To access WMTS servers, you need to manually configure each levels: |
| |
| <code xml> |
| |
| <?xml version="1.0" encoding="utf-8" ?> |
| <aqx version="9"> |
| |
| <import-ogc-wkt-def code="EPSG:4218">GEOGCS["Bogota 1975",DATUM["Bogota_1975",SPHEROID["International 1924",6378388,297,AUTHORITY["EPSG","7022"]],TOWGS84[307,304,-318,0,0,0,0],AUTHORITY["EPSG","6218"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4218"]]</import-ogc-wkt-def> |
| |
| <source id="MAP05"> |
| <name>WMTS Map Example</name> |
| |
| <zoom-levels z="8"> |
| <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, expressed as "min x,min y,max x,max y" --> |
| <referer>https://server.example.com/wmts/</referer><!-- optional, default is empty --> |
| <server>https://server.example.com/wmts/{$z}/{$y}/{$x}.png</server> |
| </zoom-levels> |
| |
| <zoom-levels z="9"> |
| <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>https://server.example.com/wmts/</referer><!-- optional, default is empty --> |
| <server>https://server.example.com/wmts/{$z}/{$y}/{$x}.png</server> |
| </zoom-levels> |
| |
| </source> |
| |
| </aqx> |
| </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). |
| |
| If you want to use a projection which is not natively supported by the application, you need to import its definition using the ''**<import-ogc-wkt-def>**'' tag. You can find the OGC WKT definition of almost all projections here: [[http://www.spatialreference.org/]]. |
| |
| \\ |
| |
| ===== Advanced features ===== |
| |
| ==== Make a color or a color range transparent ==== |
| \\ |
| You can make a color become transparent (erase the color) of any map. Just specify the RGB values of the color: |
| |
| <code xml> |
| ... |
| <zoom-levels z="3,5,7,8,9,10,11,12,13,14,15,16,17"> |
| <clear-color r="255" g="255" b="255" /> |
| ... |
| </zoom-levels> |
| ... |
| </code> |
| |
| This example will make all white areas transparent. |
| |
| You can also clear a color range: |
| |
| <code xml> |
| ... |
| <zoom-levels z="3,5,7,8,9,10,11,12,13,14,15,16,17"> |
| <clear-color r="240-255" g="240-255" b="240-255" /> |
| ... |
| </zoom-levels> |
| ... |
| </code> |
| |
| |
| ===== AQX versions ===== |
| |
| ^ Version ^ Min. app version ^ Notable changes ^ |
| | 10 | 2.2.5 | Added support for composite sources. Added support for ''**insecure**'' parameter. Added support for ''**unixtime**'' and ''**tostring(int,radix)**'' functions. Added support for ''**{$y!}**'' variable. | |
| | 9 | 2.0.4 | Added support for ''**default-location**'' tag. Added support for ''**china-offset**'' and ''**clear-color**'' parameters. Added support for ''**md5**'' function. Sources parameter ''**opacity**'' expressed in percent (0-100) instead of 0-255. | |
| | 8 | 2.0.0 | Added support for ''**zoom-level**'' and ''**zoom-levels**'' definitions. Added support for ''**replace**'' and ''**format**'' functions. | |
| |
| |
| |
| |
| |