Geologische Karten für das Smartphone: Online- und Offline-Navigation
tags: osmand, geologische karten, qgis, webgisUpdate vom 16.01.2020: Mit der neuen Version OsmAnd 3.5.x vom November 2019 wurde die Beanshell-API entfernt und durch das RND-Pattern ersetzt. Bitte die Hinweise im Kommentarbereich beachten und gegebenfalls die Beispieldateien erneut herunterladen.
Die online verfügbaren Sektionen der historischen GK25 von Sachsen können seit kurzem in der Android/iOS-App „OsmAnd“ verwendet werden. Die zunächst leeren Dateien können unter der Liste zur GK25 Sachsen (letzte Spalte) heruntergeladen werden. Diese Dateien (*.sqlitedb) enthalten die Adressen zum Kacheldienst (TMS), die das Kartenforum der SLUB Dresden anbietet. Beim ersten Aufruf der gewählten GK25-Sektion innerhalb von OsmAnd muss natürlich eine Internetverbindung bestehen, um die Kacheln herunterzuladen und abzuspeichern. Die App liest die in der *.sqlitedb angegebene „URL-Maske“ zur jeweiligen Sektion aus, lädt die Kacheldateien herunter und speichert diese innerhalb der sqlitedb ab, so dass die georeferenzierten GK25 später auch ohne Onlinezugang in OsmAnd genutzt werden können.
Mit dieser Methode können natürlich auch die mittlerweile recht zahlreich online verfügbaren (geologischen) Karten genutzt werden. Anhand von zwei Beispielen erfolgt eine Kurzanleitung, um aktuelle geologische Karten offline für „Unterwegs“ verfügbar zu machen.
Die gesamte GÜK200 von Deutschland in einer sqlitedb-Datei für OsmAnd kann hier heruntergeladen werden (für OsmAnd 3.5 oder neuer – für OsmAnd 3.4 oder älter). Diese kann in den Zoomstufen 6 bis 11 bereits ohne Internetverbindung genutzt werden. Sogenannte GetFeature-Abfragen, mit denen Details zur Symbologie in Erfahrung gebracht werden können, sind natürlich nicht möglich. Dafür muss die Generallegende für Dienste bemüht werden (Download der Legende als PDF über bgr.de). Besteht die Möglichkeit Onlinedienste zu nutzen, sei auf den Geoviewer des BGR oder auf das WebGIS verwiesen. Beide Anwendungen sind auf Smartphones oder Tablets durchaus ausreichend gut zu Bedienen. Darin können die Abfragen zur Symbologie und Lithostratigraphie ausgeführt werden. In der OsmAnd-App ist dies nicht möglich.
Die folgenden Abbildungen zeigen die GÜK200 von Deutschland in der Zoomstufe 6 bis 11. Die sqlitedb ist bereits für diese Zoomstufen für das gesamte Kartengebiet „vorbefüllt“und Offline nutzbar.
Die höchste Zoomstufe wurde in der sqlitedb auf 16 festgelegt. Zwar unterstützt das WMS der GÜK200 auch höhere Zoomstufen, jedoch ist es sinnvoller in diesem Maßstabsbereich auf die detaillierteren Kartenwerke (GK50, GK25) der jeweiligen Landesbehörden zu wechseln. Ab Zoomstufe 12 ist bei der erstmaligen Verwendung eine Internetverbindung notwendig! Dabei werden automatisch die betrachteten Bereiche in der „GÜK 200 BGR.sqlitedb“ abgespeichert. Diese Bereiche können später dann ohne Internetverbindung betrachtet werden.
Das Einbinden weiterer (geologischer) Karten in OsmAnd kann mithilfe verschiedener Hilfsmittel erfolgen. Zum einen mit einer Textdatei (.metainfo), mit QGIS oder mit z.B. dem OsmAndMapCreator oder z.B: TileMill.
Variante 1: .metainfo-Datei
Erstellen Sie eine Datei mit dem Texteditor und nennen Sie diese .metainfo (Punkt am Anfang beachten). Kopieren Sie den Beispielinhalt aus der grauen Infobox unten hinein.
Die Datei enthält im Prinzip die URL-Maske zu einem (echten) Kachelserver. Es sollten bei bestehender Online-Verbindung die gewünschten Ausschnitte innerhalb der App angezeigt werden. Dabei werden die betrachteten Bereiche geladen und können später ohne Internetverbindung erneut genutzt werden. Da OsmAnd kein WMS unterstützt, sondern nur sogenannte Kacheldienste (Tileserver), muss über eine „HilfsURL“ die notwendige Standardkachelung erzeugt werden. Bei Tileservern werden aus einer online verfügbaren Ordnerstruktur XYZ-Kacheln (Z=zoom, XY-Kachelnamen) abgerufen und lokal im angelegten Verzeichnis abgespeichert. Der WMS-Dienst muss die Projektion EPSG:3857 unterstützen — besser wäre natürlich ein echter (W)MTS/XYZ-Dienst.
Folgend ein Beispiel am WMS der GK25 von Bayern. Die Beispieldatei kann auch direkt heruntergeladen werden. Dazu die Datei entpacken und den Ordner „GK25 Bayern“ mit der darin enthaltenen .metainfo-Datei auf das Smartphone in das OsmAnd-Verzeichnis unter „…>data>net.osmand.plus>files>tiles>“ kopieren. Anschließend kann innerhalb von OsmAnd der Layer genutzt werden.
Folgenden Inhalt in eine Datei .metainfo schreiben und diese in das OsmAnd-Verzeichnis unter "…>data>net.osmand.plus>files>tiles>GK25 Bayern/" ablegen. Die Darstellung dieser GK25 funktioniert natürlich nur für den Bereich Bayern.[url_template]
https://xyz2bbox.kreidefossilien.de/?wms=https://www.lfu.bayern.de/gdi/wms/geologie/dgk25&z={0}&x={1}&y={2}&l=verfuegbarkeit_dgk25,geoleinheit_dgk25,strukturln_dgk25&f=image/png8&v=1.3.0&t=true
[ext]
.png
[min_zoom]
12
[max_zoom]
16
[tile_size]
256
[img_density]
32
[avg_img_size]
20000
Weitere Hinweise, um „normale“ WMS-Dienste für OsmAnd nutzbar zu machen, finden sich in dieser Anleitung. Sofern verfügbar, sollten die (W)TMS-Kacheldienste in der metainfo angegeben werden. Dann ist der Umweg über xyz2bbox nicht notwendig.
Variante 2 (empfohlen): XYZ-Rasterkacheln vorab mit QGIS erstellen (ab Version 3.8)
Dazu sei lediglich auf folgende englischsprachige Anleitung verwiesen. OsmAnd unterstützt das SQLite-Format *.mbtiles nicht. Die „Konvertierung“ von *.mbtiles nach *.sqlitedb kann jedoch z.B. mit diesem Skript erfolgen: mbtiles2osmand.py.
Der Vorteil bei der Nutzung von QGIS liegt darin, dass auch individuelle Markierungen und zusätzliche QGIS-Layer in den XYZ-Kacheln als Rasterdaten abgespeichert werden können.
Hinweis: Es sollte in QGIS direkt mit der EPSG:3857-Projektion gearbeitet werden, um die Qualitätsverluste durch Transformation/Reprojektion zu vermeiden. Die meisten WMS unterstützen diese recht weitverbreitete Projektion.
QGIS unterstützt außerdem den direkten Export in eine XYZ-Verzeichnisstruktur. Dabei werden die Grafikdateien (256x256 pixel) aus dem WMS-Dienst oder einer beliebigen Rasterquelle von QGIS gebrauchsfertig erzeugt und abgelegt. Das Verzeichnis muss in das OsmAnd-Arbeitsverzeichnis unter „…>data>net.osmand.plus>files>tiles>“ kopiert werden. Vorteil ist zum einen die bessere Perfomance, als auch die direkte (Offline) Verfügbarkeit der erzeugten Kacheln gegenüber Variante 1.
Variante 1 und 2 lassen sich auch kombinieren, d.h. man erstellt vorab mit QGIS ein XYZ-Kachelverzeichnis und erstellt dann nach obigem Muster eine .metainfo-Datei. Dabei ist zu beachten, dass der WMS-Dienst EPSG:3857 anbietet (GetCapabilites-Abruf prüfen oder in QGIS die angebotenen Projektionen ansehen). Andere Projektionen werden nicht von OsmAnd unterstützt.
Nur für OsmAnd 3.4. oder älter: Die .metainfo für OsmAnd kann auch Beanshell-Anweisungen enthalten. Im .metainfo mit Beanshell-Beispiel hat sich ein Fehler eingeschlichen. Dort muss die Maskierung geändert werden. Von „((1 << z) - 1 - y)“ nach „((1 >> z) - 1 - y)“ . Damit können auch andere XYZ bzw. ZYX-Strukturen abgerufen werden. Hintergrundinfos zu den unterschiedlichen Kachelstrukturen (TMS/Google) und der daraus resultierenden unterschiedlichen Kachelnamen finden sich in folgendem Beitrag.
Schritt für Schritt Anleitung für QGIS (>3.8)
Zunächst wird ein neues Projekt mit der späteren Zielprojektion EPSG:3857 erstellt. Dann wird eine passende Rasterquelle, in diesem Fall der WMS der GK50 der eiszeitlich bedeckt Gebiete von Sachsen hinzugefügt. Es kann in QGIS natürlich auch „on-the-fly“ mit anderen Projektionen gearbeitet werden. Bei der Erstellung der XYZ-Kacheln werden diese automatisch nach EPSG:3857 reprojeziert. Allerdings leidet bei Rasteraten die Qualität darunter. Bei sehr vielen WMS wird EPSG:3857 angeboten.
Unter „Layer → Layer hinzufügen → WMS/WMTS-Layer hinzufügen“ klicken und z.B. folgende URL eintragen:
https://geoportal.umwelt.sachsen.de/arcgis/services/geologie/gk50/MapServer/WMSServer?request=GetCapabilities&service=WMS
Dann den gewünschten Layer hinzufügen und darauf achten, dass EPSG:3857 als Koordinatenbezugssystem ausgewählt wird.
Ausnahme für die GK50 Sachsen: Derzeit wird über die WMS-GetCapabilites die EPSG:3857-Projektion nicht angeboten, so dass der Umweg über den Hilfsdienst xyz2bbox.kreidefossilien.de gegangen werden musste. Dazu unter dem Menüpunkt „Layer → Datenquellenverwaltung“ eine neue Verbindung unter dem Abschnitt „XYZ-Tiles“ erstellen und folgende URL-Maske einfügen:
https://xyz2bbox.kreidefossilien.de/?wms=https://geoportal.umwelt.sachsen.de/arcgis/services/geologie/gk50/MapServer/WMSServer&z={z}&x={x}&y={y}&l=0&&f=image/png8&t=true&v=1.3.0&m=
Wichtig ist die korrekte Reihenfolge der Platzhalter {z}, {x}, {y} bei „echten“ XYZ-Tileservern. Dann wie gehabt den Layer zum Projekt hinzufügen.
Die Karte wird so dargestellt, wie Sie der WMS anbietet. In diesem Fall nur die Darstellung der geologischen Flächen und Grenzen. Die geologischen Symbole fehlen.
Vor dem Export in die XYZ-Verzeichnisstruktur können beliebige weitere Layer hinzugefügt werden. In diesem Beispiel werden, die im GK50-WMS fehlenden geologischen Symbole für den Maßstabsbereich zwischen 1:50.000 und 1:1000 hinzugefügt.
Vorraussetzung ist das Vorhandensein eines Vektordatendienstes, wie WFS (ggfls. vorher eine Reprojektion/Transformation nach EPSG:3857 durchführen).
Danach wird in QGIS die „Symbolisierung“ in den WFS-Layereigenschaften auf „Keine Symbole“ gestellt und nur die Beschriftung hinzugefügt (bei der GK50 Sachsen: SYMBOL oder TEXT). Die Darstellung der geologischen Symbole wird auf einen gewünschten (sinnvollen) Maßstabsbereich limitiert und die Schriftgröße angepasst.
Entspricht die Ansicht der Karte den eigenen Vorstellungen kann unter dem Menüpunkt „Verarbeitung→Werkzeugkiste->XYZ-Kacheln erzeugen (Verzeichnis)“ der Export erfolgen. Die Ausdehnung („Extent“), sowie den Minimum- und Maximum-Zoom einstellen. Sinnvoll für diese GK50 ist der Zoombereich zwischen 10 und 17. Allerdings werden mit jeder höheren Zoomstufe vier Mal mehr Kacheln erzeugt, so dass die Verzeichnisgröße bei einem sehr großen Kartenausschnitt - mit gleichzeitig hohem Zoombereich - „sprunghaft“ wächst.
Das erzeugte Verzeichnis kann dann auf das Smartphone in das OsmAnd-Arbeitsverzeichnis unter Android>data>net.osmand.plus>files>tiles>gk50sachsen kopiert werden. Die erzeugte Karte eignet sich in OsmAnd gut als sogenannte „Underlayer-Karte“ und kann für den gewählten Kartenausschnitt und den erzeugten Zoomstufen OFFLINE genutzt werden.
Mit QGIS erzeugte Offline-Karte der eiszeitlich bedeckten Gebiete von Sachsen (GK50). Erstellt mit QGIS 3.8, dem WMS (geol. Flächen und Grenzen) und dem WFS (geol. Symbole).
Update 02/2020:
Beispielvideo: GK50 der eiszeitlich bedeckten Gebiete Sachsen und der GK50 Erzgebirge/Vogtland in der OsmAnd-App.
Markus:
16. Januar 2020, 17:28 Uhr
Ab Version 3.5.x wird Beanshell nicht mehr unterstützt. Ein .metainfo-Template für (Y-invertierte) TMS-Kacheln sieht nun folgendermaßen aus:
[url_template]
https://geotile.kreidefossilien.de/tilecache.cgi/1.0.0/gk50sn-praequart/{0}/{1}/{2}.png
[ext]
.png
[min_zoom]
11
[max_zoom]
17
[tile_size]
256
[img_density]
8
[ellipsoid]
false
[inverted_y]
true
Wichtig ist der Parameter [inverted_y] !
bene:
23. Juni 2023, 17:57 Uhr
Beim Nutzen des Hilfsdienst https://xyz2bbox.kreidefossilien.de bin ich auf das Problem gestoßen, dass der Parameter "&m" bzw. dessen Ausgabe "map=" Probleme verursacht.
Beispiel:
Ohne "&map" bzw. "&m":
https://www.wms.nrw.de/geobasis/wms_nw_dop?FORMAT=image/png&crs=EPSG:3857&width=256&version=1.3.0&service=WMS&request=GetMap&HEIGHT=256&BBOX=763147.2902929697,6666531.857991942,763758.7865191649,6667143.354218139&layers=nw_dop_rgb
über des Hilfsdienst wird dabei aber immer irgendwo in der URL "&map=" eingefügt:
https://www.wms.nrw.de/geobasis/wms_nw_dop?FORMAT=image/png&crs=EPSG:3857&width=256&version=1.3.0&service=WMS&request=GetMap&HEIGHT=256&BBOX=763147.2902929697,6666531.857991942,763758.7865191649,6667143.354218139&layers=nw_dop_rgb&map=
Gibt es eine Möglichkeit, das Verhalten von "&m" zu steuern oder Parameter ganz zu unterdrücken?
Ich habe in der Dokumentation [1] auch leider keine Informationen zu dem map-Parameter gefunden, ebenso bei der von WhooTS.
[1]
https://opengeospatial.github.io/e-learning/wms/text/operations.html