1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-10-06 06:43:22 +02:00
GPXSee/doc.html
2024-09-17 22:43:28 +02:00

532 lines
27 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<title>GPXSee - Documentation</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<link rel="icon" type="image/png" href="css/images/favicon.png"/>
<link rel="stylesheet" href="css/style.css" type="text/css" media="all" />
<!--[if IE 6]><link rel="stylesheet" href="css/ie6.css" type="text/css" media="all" /><![endif]-->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-110140219-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-110140219-1');
</script>
</head>
<body>
<!-- START PAGE SOURCE -->
<div class="shell">
<div class="shell-b">
<div id="header">
<img src="css/images/gpxsee.png" alt="" class="logo"/><h1 class="logo"><a href="https://www.gpxsee.org">GPXSee</a></h1>
<div id="navigation">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="gallery.html">Screenshots</a></li>
<li><a href="doc.html" class="active">Documentation</a></li>
<li><a href="index.html#download">Download</a></li>
</ul>
</div>
<div class="cl">&nbsp;</div>
</div>
<div id="main">
<div id="content">
<h2 id="paths">Paths</h2>
<p>Several aspects of GPXSee are controlled by data/configuration files
stored in either global(system) or user directories. The global paths to
those directories are as follows:</p>
<table class="config-files">
<tr>
<td class="os">Windows:</td>
<td class="file">C:\Program Files\GPXSee\</td>
</tr><tr>
<td class="os">Linux:</td>
<td class="file">/usr/share/gpxsee/</td>
</tr><tr>
<td class="os">OS X:</td>
<td class="file">/Applications/GPXSee.app/Contents/Resources/</td>
</tr><tr>
<td class="os">Android<sup><a href="#androidGlobalConfig">1</a></sup>:</td>
<td class="file">assets://</td>
</tr>
</table>
<p>User specific directories that - when present - override the global
directory have the following paths:</p>
<table class="config-files">
<tr>
<td class="os">Windows:</td>
<td class="file">%APPDATA%\GPXSee\</td>
</tr><tr>
<td class="os">Linux:</td>
<td class="file">~/.local/share/gpxsee/</td>
</tr><tr>
<td class="os">OS X:</td>
<td class="file">~/Library/Application Support/GPXSee/</td>
</tr><tr>
<td class="os">Android:</td>
<td class="file">/storage/emulated/0/Android/data/org.gpxsee.gpxsee/files/</td>
</tr>
</table>
<p>The expanded user specific paths, including the actual configuration
directories, are also accesible from the GPXSee "Help" menu.</p>
<h2 id="data">Data files</h2>
<p>GPXSee opens GPX, TCX, FIT, KML, NMEA, IGC, CUP, SIGMA SLF, Suunto SML,
LOC, GeoJSON, OziExplorer (PLT, RTE, WPT), Garmin GPI,
<a href="http://www.poi-factory.com/garmin-csv-file-format">Garmin CSV</a>,
TomTom OV2 &amp; ITN, ONmove OMD/GHP, TwoNav (TRK, RTE, WPT), GPSDump WPT
and geotagged JPEG files, however not all format features are supported
for all formats. Generally, GPXSee supports four kinds of data objects:</p>
<ul>
<li>Tracks</li>
<li>Routes</li>
<li>Waypoints</li>
<li>Areas (polygons)</li>
</ul>
<p>Naturally, if a format supports only a subset of the objects, GPXSee also
supports only this subset. Some formats - especially KML - have support for
other data objects like 3D structures. Those are not supported by GPXSee.</p>
<p>In addition to GPS data, data from the following sensors is supported
by GPXSee:</p>
<ul>
<li>Heart rate</li>
<li>Cadence</li>
<li>Power</li>
<li>Temperature</li>
<li>Gear ratio/shifts (Shimano Di2, SRAM eTap)</li>
</ul>
<h3 id="filtering">Data filtering</h3>
<p>Outlier elimination and data smoothing is implemented and enabled by default.
In most cases this improves the representation of the recorded data but in some
special cases you may get much worse results than without it. A typical example
of such data are ski mountaineering tracks or in general tracks that are composed
of parts with very different speed profiles.</p>
<p>If you get unexpected results, try to disable the outlier elimination in
the preferences.</p>
<h3 id="symbols">Waypoint symbols</h3>
<p>Waypoints that have a symbol name (GPX <code>&lt;sym&gt;</code> tag) defined
can be shown with an icon corresponding to the name. The icons are searched
in the global/user <code>symbols</code> directory and the icon is selected when
the image basename (without extension) matches the symbol name.</p>
<h2 id="maps">Maps</h2>
<p>Two kinds of maps are supported by GPXSee - online maps and offline maps.
You may either load them "ad hoc" from the GUI or they can be loaded
automatically at program startup from the <code>maps</code> directory. The map
directory is recursively searched when loading the maps, so it may contain an
arbitrary directory structure (which will be preserved in the map menu).</p>
<p>Supported map projections are Mercator (including Web Mercator),
Transverse Mercator (including UTM), Lambert Conformal Conic, Albers Equal Area,
Lambert Azimuthal Equal Area, Polar Stereographic, Oblique Stereographic, Křovák's,
Polyconic, and Latitude/Longitude (2D geographic). Additionally, the Swiss
and Hungarian Oblique Mercator projections are supported using LCC1 approximation.
For list of supported datums and projected coordinate systems see the
<a href="https://github.com/tumic0/GPXSee/blob/master/data/CRS/gcs.csv">GCS.csv</a>
and <a href="https://github.com/tumic0/GPXSee/blob/master/data/CRS/pcs.csv">PCS.csv</a>
configuration files (can be modified or overridden by user files like the map
directory).</p>
<h3 id="online">Online maps</h3>
<p>Online maps are represented by map source definition XML files. For the formal
map source file syntax see the <a href="map/1.5/map.xsd">map source
XSD file</a>. The paragraphs below are a "human-readable" summary of the XSD
syntax/semantics divided by map type.</p>
<h4 id="OSM">OSM/Google tiles</h4>
<p>The root <i>map</i> element contains two mandatory elements - <i>name</i>
and <i>url</i>, and two optional elements - <i>zoom</i> and <i>bounds</i>.
The tile X and Y coordinates are replaced with <code>$x</code> and
<code>$y</code> in the URL and the zoom level is replaced with
<code>$z</code>. An example map source definition file can look like:</p>
<pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;map xmlns="http://www.gpxsee.org/map/1.5" type="OSM"&gt;
&lt;name&gt;USGS Imagery&lt;/name&gt;
&lt;url&gt;https://navigator.er.usgs.gov/tiles/aerial_Imagery.cgi/$z/$x/$y&lt;/url&gt;
&lt;zoom min="2" max="15"/&gt;
&lt;bounds bottom="0" top="74"/&gt;
&lt;/map&gt;
</pre>
<p>The bounds are WGS84 latitude/longitude values in degrees. If omitted, the
default zoom range is &lt;0,&nbsp;19&gt; and the default bounds are
&lt;-85.0511,&nbsp;85.0511&gt; and &lt;-180,&nbsp;180&gt;.</p>
<p>GPXSee supports HiDPI map tiles. To specify that a map uses HiDPI tiles
use the pixelRatio attribute of the <i>tile</i> tag. For the most common
512x512px tiles (that shall be rendered as 256x256px tiles), set the value
to 2.</p>
<pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;map xmlns="http://www.gpxsee.org/map/1.5"&gt;
&lt;name&gt;OSM - HiDPI&lt;/name&gt;
&lt;url&gt;https://a.osm.rrze.fau.de/osmhd/$z/$x/$y.png&lt;/url&gt;
&lt;tile pixelRatio="2"/&gt;
&lt;/map&gt;
</pre>
<p>In case of vector tile images (MVT<sup><a href="#pbf">2</a></sup>),
set the type attribute of the <i>tile</i> tag to "vector". This will
adjust the pixel ratio of the tile to the pixel ratio of the display
device.</p>
<pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;map xmlns="http://www.gpxsee.org/map/1.5"&gt;
&lt;name>MapTiler&lt;/name&gt;
&lt;url>https://maps.tilehosting.com/data/v3/$z/$x/$y.pbf?key=apikey&lt;/url>
&lt;tile type="vector" size="512"/&gt;
&lt;zoom max="14"/&gt;
&lt;/map&gt;
</pre>
<p>The map URL can be also a local file URL (<i>file:</i> scheme).</p>
<h4 id="TMS">TMS</h4>
<p>TMS maps with the global-mercator profile are supported by GPXSee in addition
to the OSM/Google tiles maps. The configuration is exactly the same as in the case
of OSM maps, the only difference is that TMS maps must have the <i>map</i>
<i>type</i> attribute set to <code>TMS</code>.</p>
<h4 id="QuadTiles">QuadTiles</h4>
<p>QuadTiles (BING) maps - another variation of the OSM/Google tiles maps - are also
supported by GPXSee. Use <code>QuadTiles</code> as the <i>map</i> <i>type</i>
attribute and <code>$quadkey</code> as the quadkey placeholder in the URL.</p>
<h4 id="WMTS">WMTS</h4>
<p>WMTS maps are distinguished by setting the <i>type</i> attribute of the
<i>map</i> element to <code>WMTS</code>. Both the KVP and REST access methods
are supported.</p>
<p>For KVP, the <i>url</i> element represents the WMTS base URL and two
additional elements are required - <i>layer</i> and <i>set</i>
(TileMatrixSet in WMTS). Optional <i>format</i> and <i>style</i> elements may
be specified defining the desired image format and layer style. If not set,
<code>image/png</code> is used for <i>format</i> and the default style for
<i>style</i>.</p>
<pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;map xmlns="http://www.gpxsee.org/map/1.5" type="WMTS"&gt;
&lt;name&gt;CUZK&lt;/name&gt;
&lt;url&gt;http://geoportal.cuzk.cz/WMTS_ZM_900913/WMTService.aspx&lt;/url&gt;
&lt;layer&gt;zm&lt;/layer&gt;
&lt;set axis="yx"&gt;ogc:1.0:globalcrs84pixel&lt;/set&gt;
&lt;/map&gt;
</pre>
<p>For REST access, the <i>url</i> element's <i>type</i> attribute must be set
to <code>REST</code>. The URL then represents the URL of the capabilities XML
document. Defining the format has no relevance for the REST access method.</p>
<pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;map xmlns="http://www.gpxsee.org/map/1.5" type="WMTS"&gt;
&lt;name&gt;Wien - Ortho&lt;/name&gt;
&lt;url type="REST"&gt;http://maps1.wien.gv.at/wmts/1.0.0/WMTSCapabilities.xml&lt;/url&gt;
&lt;layer&gt;lb&lt;/layer&gt;
&lt;style&gt;farbe&lt;/style&gt;
&lt;set&gt;google3857&lt;/set&gt;
&lt;/map&gt;
</pre>
<p>There is one more important attribute - the <i>axis</i> attribute of the
<i>set</i> element. It specifies the axis order of the CRS used for the
tile matrix set. The default order is obtained from the CRS definition like
specified in the standard, but in praxis many servers use a wrong order. This
is why GPXSee enables overriding the default axis order using the <i>axis</i>
attribute. Possible values are <code>xy</code> and <code>yx</code>.</p>
<p>Finally, one can define additional dimensions like <code>Time</code> using
the <i>dimension</i> element. Use a separate entry for every additional dimension.</p>
<p>HiDPI WMTS tiles are supported too. Local (<i>file:</i> scheme) URLs are
supported in the map definition file as well as in the WMTS capabilities file.
This enables a fully local REST WMTS map configuration without the need of a web
server.</p>
<h4 id="WMS">WMS</h4>
<p>WMS maps are distinguished by setting the <i>type</i> attribute of the
<i>map</i> element to <code>WMS</code>. WMS map definitions are very similar to
WMTS map definitions, the main difference is that you must specify the map
CRS using the <i>crs</i> element instead of specifying the tile set. Like in the
case of the <i>set</i> element, you may specify the <i>axis</i> attribute to
override the default axis order.</p>
<p>It is possible to combine multiple WMS layers together in one map. To do so,
use a comma separated list of WMS layers as the <i>layer</i> element content and
a corresponding comma separated list as the <i>style</i> element content (can be
omitted if all styles are the default style).</p>
<pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;map xmlns="http://www.gpxsee.org/map/1.5" type="WMS"&gt;
&lt;name&gt;Katastr nemovitostí&lt;/name&gt;
&lt;url&gt;http://services.cuzk.cz/wms/wms.asp&lt;/url&gt;
&lt;layer&gt;polygony_parcel,polygony_budov,polygony_k_u&lt;/layer&gt;
&lt;crs axis="yx"&gt;EPSG:3034&lt;/crs&gt;
&lt;/map&gt;
</pre>
<h4 id="headers">Server access</h4>
<p>If the map server requires HTTP authentication, you can use the <i>authorization</i>
element to specify HTTP basic authorization credentials:</p>
<pre>
...
&lt;authorization username="joe" password="123456"/&gt;
</pre>
<p>Since version 13.3 you may also specify additional HTTP request headers using
the <i>header</i> element:</p>
<pre>
...
&lt;header name="Referer">https://referer.limited/&lt;/header&gt;
&lt;header name="User-Agent">Mozilla/5.0 (GNU Hurd)&lt;/header&gt;
</pre>
<h3 id="offline">Offline maps</h3>
<p>OziExplorer maps, TrekBuddy maps/atlases, Garmin JNX &amp; IMG/GMAP maps,
TwoNav RMaps, MBTiles, KMZ maps, AlpineQuest AQM maps, Locus/OsmAnd/RMaps SQLite
maps, Mapsforge maps, BSB charts, ENC charts, QCT maps, GEMF maps,
Osmdroid SQLite maps, Orux maps and GeoTIFF and World-File georeferenced images
are supported by GPXSee.</p>
<p>You may easily create offline atlases from online map services by using
<a href="http://mobac.sourceforge.net/">Mobile Atlas Creator (MOBAC)</a>.</p>
<h4 id="IMG">IMG maps</h4>
<p>There is support for IMG maps overlay in GPXSee since version 7.30. If the map
name is <i>mapname.img</i> and there is also a file named <i>mapname.img.1</i>
(.2, .3, ... for additional layers) in the same path, than it will be automatically
loaded as an overlay of <i>mapname.img</i>.</p>
<h4 id="JNXKML">JNX &amp; KMZ maps</h4>
<p>JNX &amp; KMZ maps do not contain any info about the projection of their
tile images, so it has to be provided externaly<sup><a href="#garmin">3</a></sup>.
Generally, only two projections are used for JNX/KMZ maps - EPSG:4326 and
EPSG:3857. If you see <a href="img/wrong_proj.png">background color stripes</a>
in your JNX/KMZ map, you have to switch to the propper input projection
in the preferences.</p>
<h4 id="worldfiles">World Files</h4>
<p>World-File georeferenced images require the projection info to be provided
additionaly to the world file. This can be done either using a separete PRJ
file in <a href="https://portal.ogc.org/files/?artifact_id=999">WKT1 format</a>
or by selecting the input projection in the preferences. If a PRJ file
exists, it takes precedence.</p>
<p>Note, that the WKT datum entry must contain at least one of the
<code>TOWGS84</code> or <code>AUTHORITY</code> keys to provide a valid projection
info (the <code>AUTHORITY</code> info overrides any parameter values). The
WKT data must follow the OGC naming convention. Generally, the OGC WKT entries
from <a href="https://epsg.io/">epsg.io</a> should work.</p>
<h3 id="styles">Map styles</h3>
<p>MVT(PBF), Mapsforge and Garmin IMG maps can be styled with user defined styles.
To apply a user defined style, place it to the <code>style</code> directory in
one of the configuration paths. The style must be named <i>style.typ</i> (Garmin
IMG), <i>style.xml</i> (Mapsforge) or <i>style.json</i> (MVT) for GPXSee to use it.
If a Garmin IMG map contains a TYP file, it takes precedence over the user TYP
file.</p>
<h2 id="poi">POI files</h2>
<p>All of the supported formats with waypoints capability - GPX, KML, TCX, NMEA,
CUP, WPT, LOC, GeoJSON and Garmin GPI &amp; CSV - can be loaded either as data
files or as POI files. When a file is opened as a POI file, only waypoints reasonable
near the tracks/waypoints of the loaded data files are displayed.</p>
<p>To make GPXSee load a POI file automatically on startup, add the file to the
<code>POI</code> directory in one of the configuration paths.</p>
<h2 id="dem">DEM files</h2>
<p>Digital Elevation Model (DEM) files can be used as elevation source
instead of the recorded GPS data. The format of the DEM data is the SRTM HGT
file format (SRTM3, SRTM1 and SRTM0.5). The DEM files must be put in
the <code>DEM</code> directory in one of the configuration paths for GPXSee
to use them.</p>
<p>The DEM files must have the expected filename format of <code>NXXEYYY.hgt</code>
or <code>NXXEYYY.hgt.zip</code> for GPXSee to use them.</p>
<h3 id="dem_downloads">DEM downloads</h3>
<p>Since GPXSee 9.6 you can download the required DEM files for the area covered
by the loaded data from the GPXSee GUI. The URL is specified as a template where
the NYY/SYY and EXXX/WXXX coordinates strings are replaced by
<code>$lat</code> and <code>$lon</code>:</p>
<pre>https://bailu.ch/dem3/$lat/$lat$lon.hgt.zip</pre>
<p>The downloaded files are automatically renamed, if the file name is not in
the required format.</p>
<p>Since version 10.2, there is a default DEM tiles download source hosted
by the GPXSee project predefined in the preferences. The data is the
<a href="http://viewfinderpanoramas.org/dem3.html">DEM3 data</a> originaly
provided by Jonathan de Ferranti and repacked by the
<a href="https://bailu.ch/aat/">AAT</a> project.</p>
<h2 id="positioning">Positioning</h2>
<p>Since version 10.0, GPXSee is able to show the real-time GPS position
using the Qt positioning API. To make it work, you have to select and setup
the positioning plugin used in the program preferences. See the Qt Positioning Plugins
<a href="https://doc.qt.io/qt-5/qtpositioning-plugins.html">documentation</a>
for more info.</p>
<h3 id="positioning_winmac">Windows &amp; OS X</h3>
<p>If your device/OS supports the platform positioning API (Core Location
/ Windows.Devices.Geolocation) you may try that first. If you have an external
USB/serial GPS device connected, you can use the <code>serialnmea</code> plugin.
In such case you have to provide the serial port id/device in the plugin
parameters. Use something like <code>COM3</code> on Windows and
<code>/dev/tty.SerialPort-3</code> on Mac.</p>
<h3 id="positioning_linux">Linux</h3>
<p>On Linux, you can use Geoclue2 as the platform plugin, but Geoclue is "Gnome
quality" software at its best and you will most probably not
<a href="https://github.com/OpenOrienteering/mapper/issues/1569#issuecomment-611442924">make
it work</a>.</p>
<p>Theoretically, you can also use the <code>serialnmea</code> plugin like on Windows/Mac,
but practically
<a href="https://bugzilla.opensuse.org/show_bug.cgi?id=1193604">almost</a>
<a href="https://bugzilla.redhat.com/show_bug.cgi?id=2030899">all</a> distributions
fail to build the plugin... The only exception are distributions using Qt6 like
ArchLinux. The <a href="https://doc-snapshots.qt.io/qt6-dev/position-plugin-nmea.html">NMEA
plugin</a> has been completely reworked in Qt6, is much more powerfull than in Qt5 and
is compiled by default.</p>
<h2 id="issues">Known issues</h2>
<h3>Android file system</h3>
<p>Due to the limited file system access on Android, all map formats that consist of
multiple files (eg. OziExplorer maps or World-file georeferenced images) will not load
properly when loaded from the application menu. You have to put such maps
to the GPXSee map directory to make them work. The same applies to all SQLite-based
map formats because of a Qt bug/limitation.</p>
<p>Even though all other maps will load from the application menu, <b>it is strongly
recommended for all offline maps to be moved to the GPXSee map directory</b> as the file
access on Android is two orders of magnitude (100x) slower when the file is opened from
the file open dialogue than if it is opened from the application folder! Especially IMG
maps on new Android versions (>=11) are almost unusable when opened from the application
menu.</p>
<h3>OpenGL</h3>
<p>There are numerous OpenGL issues in Qt that cause some kind of broken rendering
or even an application crash. OpenGL is thus disabled by default even if it can
significantly speed up rendering of big data sets. You may enable OpenGL in
the preferences, but be prepared that "strange things" may happen...</p>
<h3>Qt6</h3>
<p>Many Linux distributions compile GPXSee using Qt6, but Qt6 has serious rendering issues
that affect GPXSee. See the following Qt bugs list for details.</p>
<h3>Qt bugs</h3>
<p>This is the list of the most severe Qt bugs that affect GPXSee (some of them are
platform/Qt version specific):</p>
<ul>
<li><a href="https://bugreports.qt.io/browse/QTBUG-123126">QTBUG-123126</a>
- QGraphicsView content is blured when fractional scaling and OpenGL is used</li>
<li><a href="https://bugreports.qt.io/browse/QTBUG-111499">QTBUG-111499</a>
- Multiple QPainter::drawImage() calls are broken when OpenGL is used</li>
<li><a href="https://bugreports.qt.io/browse/QTBUG-120498">QTBUG-120498</a>
- QOpenGLWidget as QGraphicsView viewport crashes Qt on Android</li>
<li><a href="https://bugreports.qt.io/browse/QTBUG-126848">QTBUG-126848</a>
- QMenu on Android is completely broken in Qt 6.7.2</li>
<li><a href="https://bugreports.qt.io/browse/QTBUG-120455">QTBUG-120455</a>
- QPainter coordinates rounding broken when HiDPI scaling is used</li>
<li><a href="https://bugreports.qt.io/browse/QTBUG-96467">QTBUG-96467</a>
- QFontMetrics unusable in multithreaded applications</li>
<li><a href="https://bugreports.qt.io/browse/QTBUG-123125">QTBUG-123125</a>
- QMainWindow::devicePixelRatioF() reports wrong ratio on Wayland</li>
<li><a href="https://bugreports.qt.io/browse/QTBUG-121460">QTBUG-121460</a>
- Broken opening of files with content:// Uri filenames</li>
<li><a href="https://bugreports.qt.io/browse/QTBUG-110878">QTBUG-110878</a>
- Fullscreen windows rendered behind navigation bar</li>
<li><a href="https://bugreports.qt.io/browse/QTBUG-81791">QTBUG-81791</a>
- QToolbar rendering broken</li>
</ul>
<div id="footnote">
<p id="androidGlobalConfig"><i>[1] The Android global configuration is part of the APK
and is not accessible on an unrooted phone.</i></p>
<p id="pbf"><i>[2] To display PBF(MVT) tiles, <a href="https://github.com/tumic0/QtPBFImagePlugin">
QtPBFImagePlugin</a> is required (included in the Windows and OS&nbsp;X builds).</i></p>
<p id="garmin"><i>[3] Some tools like Garmin software &quot;solve&quot; this by
rescaling the images, but this introduces a small, but still visible distortion
to the map.</i></p>
</div>
</div>
<div id="sidebar">
<div id="outline">
<div class="h4l"><a href="#paths">Paths</a></div>
<div class="h4l"><a href="#data">Data files</a></div>
<div class="h5l"><a href="#filtering">Data filtering</a></div>
<div class="h5l"><a href="#symbols">Waypoint symbols</a></div>
<div class="h4l"><a href="#maps">Maps</a></div>
<div class="h5l"><a href="#online">Online maps</a></div>
<div class="h6l"><a href="#OSM">OSM/Google tiles</a></div>
<div class="h6l"><a href="#TMS">TMS</a></div>
<div class="h6l"><a href="#QuadTiles">QuadTiles</a></div>
<div class="h6l"><a href="#WMTS">WMTS</a></div>
<div class="h6l"><a href="#WMS">WMS</a></div>
<div class="h6l"><a href="#headers">Server access</a></div>
<div class="h5l"><a href="#offline">Offline maps</a></div>
<div class="h6l"><a href="#IMG">IMG maps</a></div>
<div class="h6l"><a href="#JNXKML">JNX &amp; KMZ maps</a></div>
<div class="h6l"><a href="#worldfiles">World Files</a></div>
<div class="h5l"><a href="#styles">Map styles</a></div>
<div class="h4l"><a href="#poi">POI files</a></div>
<div class="h4l"><a href="#dem">DEM files</a></div>
<div class="h5l"><a href="#dem_downloads">DEM downloads</a></div>
<div class="h4l"><a href="#positioning">Positioning</a></div>
<div class="h5l"><a href="#positioning_winmac">Windows &amp; OS X</a></div>
<div class="h5l"><a href="#positioning_linux">Linux</a></div>
<div class="h4l"><a href="#issues">Known issues</a></div>
</div>
</div>
<div class="cl">&nbsp;</div>
</div>
</div>
</div>
<div class="footer">
<div class="shell">
<p class="lf">&copy; 2017-2024 Martin Tůma, CC BY-ND 4.0</p>
<p class="rf">Design by <a href="http://www.websitecsstemplates.com/" target="_blank">WebsiteCSSTemplates</a></p>
<div style="clear:both;"></div>
</div>
</div>
<!-- END PAGE SOURCE -->
</body>
</html>