Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
en:help:v2:maps:on-demand-create [2017/02/18 03:49] – alpinequest | en:help:v2:maps:on-demand-create [2019/06/14 09:48] – [How to create a custom map?] alpinequest |
---|
====== 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]]. |
<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> |
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> |
{{ :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[http://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. |
| |
\\ | \\ |
</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. |
| |
\\ | \\ |
\\ | \\ |
| |
===== WMTS servers ===== | ===== WMTS server ===== |
\\ | \\ |
To access WMTS servers, you need to manually configure each levels: | To access WMTS servers, you need to manually configure each levels: |
| |
<code xml> | <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"> | <source id="MAP05"> |
<name>WMTS Map Example</name> | <name>WMTS Map Example</name> |
<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>http://server.example.com/wmts/</referer><!-- optional, default is empty --> |
<server>http://server.example.com/wmts/{$z}/{$y}/{$x}.png</server> | <server>http://server.example.com/wmts/{$z}/{$y}/{$x}.png</server> |
</level> | </zoom-levels> |
| |
<zoom-levels z="9"> | <zoom-levels z="9"> |
<referer>http://server.example.com/wmts/</referer><!-- optional, default is empty --> | <referer>http://server.example.com/wmts/</referer><!-- optional, default is empty --> |
<server>http://server.example.com/wmts/{$z}/{$y}/{$x}.png</server> | <server>http://server.example.com/wmts/{$z}/{$y}/{$x}.png</server> |
</level> | </zoom-levels> |
| |
</source> | </source> |
| |
| </aqx> |
</code> | </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). | 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/]]. |
| |
\\ | \\ |