Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
en:help:v2:maps:on-demand-create [2017/02/18 03:57] alpinequest |
en:help:v2:maps:on-demand-create [2019/11/04 16:57] (current) alpinequest |
||
---|---|---|---|
Line 3: | Line 3: | ||
====== How to create a custom map? ====== | ====== 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]]. | ||
Line 15: | Line 15: | ||
<file xml TEST1.AQX> | <file xml TEST1.AQX> | ||
<?xml version="1.0" encoding="utf-8" ?> | <?xml version="1.0" encoding="utf-8" ?> | ||
- | <aqx version="8"> | + | <aqx version="9"> |
<name>Simple Test AQX</name> | <name>Simple Test AQX</name> | ||
Line 23: | Line 23: | ||
<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> | ||
Line 35: | Line 35: | ||
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. |
\\ | \\ | ||
Line 45: | Line 45: | ||
<file xml TEST2.AQX> | <file xml TEST2.AQX> | ||
<?xml version="1.0" encoding="utf-8" ?> | <?xml version="1.0" encoding="utf-8" ?> | ||
- | <aqx version="8"> | + | <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> | ||
Line 62: | Line 62: | ||
<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> | ||
Line 80: | Line 81: | ||
{{ :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. | ||
\\ | \\ | ||
Line 92: | Line 110: | ||
<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> | ||
Line 108: | Line 126: | ||
<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. | ||
\\ | \\ | ||
Line 126: | Line 146: | ||
<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> | ||
Line 140: | Line 160: | ||
<?xml version="1.0" encoding="utf-8" ?> | <?xml version="1.0" encoding="utf-8" ?> | ||
- | <aqx version="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> | <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> | ||
Line 153: | Line 173: | ||
<projection-offset-y>-800000.0</projection-offset-y><!-- 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-size>256</tiles-size><!-- optional, default is 256 --> | ||
- | <tiles-bounds>104,80,527,423</tiles-bounds><!-- optional --> | + | <tiles-bounds>104,80,527,423</tiles-bounds><!-- optional, expressed as "min x,min y,max x,max y" --> |
- | <referer>http://server.example.com/wmts/</referer><!-- optional, default is empty --> | + | <referer>https://server.example.com/wmts/</referer><!-- optional, default is empty --> |
- | <server>http://server.example.com/wmts/{$z}/{$y}/{$x}.png</server> | + | <server>https://server.example.com/wmts/{$z}/{$y}/{$x}.png</server> |
- | </level> | + | </zoom-levels> |
| | ||
<zoom-levels z="9"> | <zoom-levels z="9"> | ||
Line 165: | Line 185: | ||
<tiles-size>256</tiles-size><!-- optional, default is 256 --> | <tiles-size>256</tiles-size><!-- optional, default is 256 --> | ||
<tiles-bounds>208,160,1047,839</tiles-bounds><!-- optional --> | <tiles-bounds>208,160,1047,839</tiles-bounds><!-- optional --> | ||
- | <referer>http://server.example.com/wmts/</referer><!-- optional, default is empty --> | + | <referer>https://server.example.com/wmts/</referer><!-- optional, default is empty --> |
- | <server>http://server.example.com/wmts/{$z}/{$y}/{$x}.png</server> | + | <server>https://server.example.com/wmts/{$z}/{$y}/{$x}.png</server> |
- | </level> | + | </zoom-levels> |
| | ||
</source> | </source> | ||
Line 176: | Line 196: | ||
To get the ''**<projection-resolution>**'' from a ''**ScaleDenominator**'', just multiply this value by ''**0.00028**'' (which is the "standardized rendering pixel size", in meter). | 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 is using the ''**<import-ogc-wkt-def>**''. You can find the OGC WKT definition of almost all projections here: [[http://www.spatialreference.org/]]. | + | 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/]]. |
\\ | \\ |