OpenOutdoorMap
- Wie erstelle ich eigene Mapsforge Karten? -
Aktuelle Version: 29.1.2026
INHALT
- Eigene Karten erstellen - Warum?
- Der Kartenbau Prozess - Übersicht
- Vorbereitungen - notwendige Software Installationen
- Woher kommen die Daten? - Datenquellen
- Die Schritte des Kartenbau Prozesses
- Hinweise zu einzelnen Kartenbau-Schritten
- OpenOutdoorMap - Beispiele
- OpenOutdoorMap-Karten zum Download
- Spenden willkommen
Eigene Karten erstellen - Warum?
Nachdem ich viele Jahre die sehr guten Karten von OpenAndroMaps genutzt habe, wollte ich verstehen, wie diese Karten erstellt werden. Das würde mir dann ermöglichen, eigene Karten mit jeder gewünschten Abdeckung zu erstellen und mir die Freiheit geben, Symbole, Darstellungen und erweiterte Funktionen nach eigenen Bedürfnissen einzubauen und zu verändern.
Einfach war es nicht, aber irgendwann hat es funktioniert. Hier möchte ich meine Erfahrungen bei der Erstellung von Mapsforge Karten weitergeben. Denn in vielen Stunden des Probierens und Optimierens habe ich dafür ein Windows-Batch-Skript entwickelt, das
- auf handelsüblichen Windows Rechnern läuft
- geeignet für die Erstellung von Karten von allen Gebieten der Welt ist
- eine routingfähige und topographische Karte produziert,
- die für mehrere Kartenthemen verwendbar ist
- und mit mehreren Apps nutzbar ist
Im Detail: Mein Skript für die Erstellung einer OpenOutdoorMap Karte ist ein Windows-Batch-Skript (.bat Datei), dass andere Skripte und/oder Software in einer festgeleften Reihenfolge automatisiert aufruft. Zum Ausführen reicht die auf jedem Windows Rechner verfügbare Konsole (CMD). Das Skript kann mit einem einfachen Texteditor (Editor, Wordpad, notepad++ ...) bearbeitet und angepasst werden.
Das ist notwendig, da vor der ersten Verwendung einige Grundeinstellungen vorgenommen werden müssen. Dazu gehören die Pfade zu den Roh-Daten, zu installierten Software-Paketen und zur Ablage von Kartenprojekten und den erstellten Karten. Die Karten-spezifischen Einstellungen werden aus einer .config Datei eingelesen. Diese kann ebenfalls mit einem Texteditor angepasst werden und muss den gleichen Namen wie die zu erstellende Karte tragen.
Die "Karten-Name".config Datei enthält folgende Parameter:
- Karten-Name
- Name der Openstreetmap Rohdaten Datei, die den gewünschten Bereich abdeckt
- Spracheinstellungen für die jeweilige Karte (ein oder mehrere Sprachen, Komma-separiert)
- den zu verwendenden Map-Style ("tagmapping", wichtig für den Mapsforge Mapwriter, siehe unten)
- Angaben zu den Höhendaten:
- ob diese bereits vorhanden sind und deswegen nicht neu erstellt werden müssen
- ob sie als Bereich aus einer vorgefertigen Höhendaten-Datei ausgeschnitten werden sollen (z. B. aus einer Gesamtdatei von Europa)
- welche Quelldaten für die neue Erstellung von Höhendaten verwendet werden sollen ("Phyghtmap", siehe unten)
- welchen Mindestabstand die Höhenlinien haben sollen - ob die Karte Meeresgebiete enthält (und damit alle Polygone für die Landflächen erstellt werden müssen)
- welchen Bereich die Karte abdecken soll und wie die dazughörige Polygon Datei heißt
Im Skript selber muss dann nur noch der Name der zu verwendenden .config Datei angegeben werden (=Karten-Name). Danach kann das Skript gestartet werden und die einzelnen Schritte des Kartenbaus werden automatisch abgearbeitet. Gleich zu Beginn wird dabei für die Karte automatisch ein Ordner angelegt, in dem sich alle temporären Dateien aus den einzelnen Schritten und am Ende auch die fertige Karte befindet. Dort wird ebenfalls je eine Log-Datei / Error-Log-Datei abgelegt. Das Skript selber zeigt während des Laufes den Fortschritt an.
Je nach Größe des Kartenbereichs und der Rechner-Ausstattung dauert eine Kartenerstellung wenige Minuten bis mehrere Stunden. Zum Beispiel: Eine Karte von Gesamt-Bayern (Datei-Größe der fertigen Karte ca. 0,9 GB) dauert bei mir 3-4 Stunden (Laptop mit i7-11. Gen, 16 GB Ram, SSD). Für die ersten Versuche sollte man aber besser mit einem eher kleinen Kartenbereich starten.
Vorbereitungen - Notwendige Software Installationen
Ich lege alles, was mit dem Kartenbau zu tun hat (bis auf die Python-Installationen) in einem Kartenbau-Ordner ab, der jeweils Unterordner für die DATEN, die Hilfssoftware (TOOLS), die abgelegtgen HÖHENDATEN usw. enthält. Auf diesem Ordner sollten volle Schreibrechte bestehen. Hier ein Vorschlag für eine Ordnerstruktur:
Es werden folgende Software Pakete benötigt:
- Java Runtime Umgebung (bei mir aktuell Version 8 Update 471, offline, 64 Bit)
- Osmosis (bei mir aktuell Version 0.48.3)
- Mapsforge Map-Writer Plugin für Osmosis (bei mir aktuell Version 0.27)
- Osmconvert (bei mir aktuell Version 0.8.8, 64 bit)
- Osmfilter(bei mir aktuell Version 1.4.5)
- Python 2 Umgebung für Phyghtmap (bei mir aktuell Version 2.7.9, 64 Bit)
- Python 3 Umgebung für mehrere Hilfs-Skripte (bei mir aktuell Version 3.9.11, 64 Bit)
- Phyghtmap (bei mir aktuell Version 1.72, benötigt Python 2.7)
- ogr2ogr (GDAL und Python bindings)
* Für Karten, die keine Meeresgebiete und Küstenlinien enthalten, benötigt man die Software unter Punkt 9. nicht. Da die dafür notwendigen Installationen etwas komplizierter sind, kann man sie also für die ersten Test-Karten zunächst weglassen.
Da einige Software Pakete eine spezielle Konfiguration brauchen, gebe ich folgende Erfahrungen weiter:
1. Java Umgebung
Einfache Standard Installation (bei mir für Windows 64 Bit) ohne weitere Einstellungen.
2. Osmosis
Eine Java-Software, die nicht speziell installiert werden muss. Man entpackt die heruntergeladene Datei und schiebt den gesamten Ordner (am besten umbenannt in "osmosis") in den "TOOLS"-Ordner (Kartenbau-Ordner, siehe oben). Anschließend müssen noch Parameter eingestellt werden. Dazu öffnet man die Datei ".\osmosis\bin\osmosis.bat" mit einem Text-Editor und trägt folgende Zeilen ein (oberhalb der letzten 3 Zeilen, die mit "set" beginnen):
set JAVACMD_OPTIONS=-Xms3G -Xmx12G -server -Djava.io.tmpdir=XXX
Diese Parameter bestimmen die Nutzung von Arbeitsspeicher und legen den Ablageort für temporäre Dateien fest. Bei "XXX" muss ein Pfad zum Ordner für die temporären Dateien eingetragen sein. Der Ordner kann irgendwo abgelegt werden und frei benannt sein.
Wichtig! Wird die Ordnerstruktur für diese temporären Dateien verändert, dann muss dies in die Datei ".\osmosis\bin\osmosis.bat" eingetragen werden!
Da je nach Osmosis Version noch weitere Anpassungen vorgenommen werden müssen, biete ich hier meine "funktionierende" Osmosis Version als Download an (enthält schon eine .bat Datei und es muss nur noch das Mapsforge Map-Writer Plugin, wie im nächsten Abschnitt beschrieben, installiert werden)
3. Mapsforge Map-Writer Plugin für Osmosis
Dies ist die zentrale Software, die aus den gesammelten Daten am Ende die Karte rendert. Es ist ein Plugin für die gerade schon installierte Osmosis Software. Wenn nicht schon vorhanden, muss man im Ordner "osmosis" den Ordner "plugins" anlegen. Da hinein wird die entpackte .jar Datei des Mapsforge Map-Writer Plugins abgelegt. Eine weitere Installation ist nicht nötig.
4. Osmconvert
Die ".exe" Datei am besten auch in den Tools-Ordner gelegen. Es ist keine Installation erforderlich. Aktuell funktioniert bei mir nur die verlinkte Version 0.8.8!
5. Osmfilter
Wie bei Osmconvert. Es ist keine Installation erforderlich.
6. Python 2
Für die Verwendung der Phyghtmap Software (siehe unten) muss eine Python 2 Umgebung installiert werden. Ich verwende aktuell Python 2.7.9 (64bit). Wichtig ist, dass bei der Installation gleich die Option "Add Python 2.7 to PATH" angewählt wird. Die notwendigen Umgebungsvariablen werden so automatisch eingetragen.
7. Python 3
Alle sonst in meinem Kartenbau-Skript verwendeten Python-Skripte laufen unter Python 3. Einige davon aber nur, wenn die entsprechenden "Python bindings" installiert sind. Man muss also neben Python 2 (für Phyghtmap) eine weitere Python Installation vornehmen. Ich habe dazu aktuell Python 3.9.9 (64bit) installiert. Wichtig ist dabei auch hier, dass bei der Installation gleich die Option "Add Python 3.9 to PATH" angewählt wird. Die notwendigen Umgebungsvariablen werden so automatisch eingetragen. Die im Kartenbau-Skript verwendeten Python-Skripte selber sollten wieder in den "TOOLS" Ordner abgelegt werden.
Ich habe diese Skripte für die Erstellung einer OpenOutdoorMap angepasst. Deshalb sollten jeweils nur folgende Varianten verwendet werden:
Für diese Skripte wird PyOsmium (eine "Python binding to Osmium Library") benötigt. Diese lässt sich in einer Kommandozeile über diesen Befehl installieren:
pip install osmium
8. Phyghtmap
Die korrekte Installation dieser Software für die Erstellung der Höhenlinien-Daten stellt eine gewisse Hürde da. Phyghtmap benötigt eine Python 2 Installation und mehrere zusätzliche Module, die in einer bestimmten Reihenfolge installiert werden müssen. Da ich diese Software auch für die Erstellung von Karten für Garmin-GPS Geräte benötige, habe ich dafür schon eine genaue Anleitung geschrieben.
9. ogr2ogr (GDAL und Python bindings)
"ogr2ogr" ist Teil einer GDAL Installation. Passend zur installierten Python Version 3.9 (siehe vorheriger Abschnitt) habe ich diese GDAL core-Version heruntergeladen. Nach einer Standard Installation von GDAL 3.8.4 müssen noch folgende Umgebungsvariablen (jeweils als Systemvariable) eingetragen werden:
Variable GDAL_DATA Wert C:\Program Files\GDAL\gdal-data (Wenn GDAL in den Ordner C:\Program Files\GDAL installiert wurde)
Variable GDAL_DRIVER_PATH Wert C:\Program Files\GDAL\gdalplugins
Variable PROJ_LIB Wert C:\Program Files\GDAL\projlib
Und in der Variable PATH der Eintrag C:\Program Files\GDAL
Die "Python bindings" kann man am leichtesten über die Datei "GDAL 3.8.4 Python 3.9 binding (für 64 bit Rechner)" installieren: Dazu in diesem Verzeichnis die Datei "GDAL-3.8.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" suchen und herunterladen. Nach dem Download wird die Datei in den Ordner der Python Installation gelegt (bei mir C:\Python39\) und in der Kommandozeile über diesen Befehl installiert:
py -m pip install GDAL-3.8.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Eine erfolgreiche Installation kann man prüfen, in dem man z. B. in seinem Kartenbauordner die Kommandozeile aufruft und den Befehl "ogr2ogr" eingibt. Es sollten dann die "usage" und die "advanced options" aufgelistet werden.
Validierungen vor dem Start des Kartenbaus
Mit einem Batch-Skript kann man hier einen Teil der notwendigen Vorraussetzungen für das Ausführen und erfolgreiche Durchlaufen des OpenOutdoorMap-Skripts pürfen. Es werden das Vorhandensein von Software-Tools, das Erkennen von Aufrufen, der freie Speicherplatz auf der Festplatte, die Anzahl der Rechenkerne und "Threads", der Arbeitsspeicher und der "Java-Heap Space" ausgegeben. Dies hilft u. a. bei den Grundeinstellungen des Kartenbau-Skripts und hilft generelle Fehler zu vermeiden. Das Skript 01_OpenOutdoorMap_PRE_CHECK.bat ist im Download der OPENOUTDOORMAP_SKRIPTE.zip Datei enthalten und kann unabhängig vom Kartenbau-Skript ausgeführt werden.
Woher kommen die Daten? - Datenquellen
Openstreetmap Daten
Grundlage jeder OpenOutdoorMap sind die Daten der OpenStreetMap Datenbank. Man muss also einen Ausschnitt, der mindestens so gross ist, wie der Bereich, für den man eine Karte erstellen will, von OpenStreetMap herunterladen. Hier 3 Datenquellen als Beispiel:
- Die aktuellsten Datenauszüge (nach Ländern oder Regionen) bekommt man bei der Geofabrik -> -> hier
- Bei BBBike kann man spezielle Bereiche nach eigenen Wünschen erhalten (am besten im PBF Format) -> -> hier
- Eine weitere Möglichkeit bietet OSM by the slice. Auch hier können die Daten über eine Rechteck- oder Polygon-Auswahl eingrenzt werden -> -> hier
Kartengrenzen (.poly Dateien)
Die passenden Polygon Dateien (nach Ländern oder Regionen) bekommt man ebenfalls bei der Geofabrik. Sie sind im Download Bereich für einen Kartenbereich unter "Other Formats" verlinkt.
Für die freie Erstellung von Polygonen verwende ich am liebsten -> hier. Die abgespeicherte map.geojson Datei muss anschließend mit einem weiteren kleinen ->Tool eine .poly Datei umgewandelt werden. Für dessen Verwendung stelle ich eine kleine Batch Datei zur Verfügung, die dieses Tool automatisch aufrufen kann (enthalten in "OpenOutdoorMap-Skripte").
Daten für Höhenlinien
Die Daten für die Erstellung der Höhenlinien werden von der Software Phyghtmap automatisch heruntergeladen (wenn sie nicht für eine Kartenerstellung schon einmal geladen worden sind). Die .hgt Dateien werden dabei in einen Ordner abgelegt, der in den Einstellungen des Kartenbau-Skripts festgelegt wird.
Daten für Gipfel- und Pass Optimierungen
Nicht jeder Gipfel ist gleich "wichtig" (unterschiedliche Prominenz). Deshalb macht es Sinn, Gipfel auf Grund ihres horizontalen Abstands und ihres Höhenunterschieds zu anderen Gipfeln unterschiedlich darzustellen bzw. früher oder später in der Karte anzuzeigen (Hintergrund dazu). Dafür muss für jeden Gipfel der Tag "peak dominance" (pd_1-5) erstellt und beim Kartenbau eingebaut werden. Alle weiteren Daten zu Gipfeln sind in OpenStreetMap enthalten.
Die Daten für den horizontalen Abstand der Gipfel ("isolation") werden hier (ca. 28 MB) zur Verfügung gestellt.
Bei einem Pass-/Sattelübergang im Gebirge kann man die Darstellung in einer Karte verbessern, in dem das Symbol für den Pass senkrecht zur gedachten Verbindungslinie der den Pass eingrenzenden Anhöhen ausgerichtet wird.
Für diese gewinkelte Darstellung werden hier (ca. 2 MB) die notwendigen Daten zur Verfügung gestellt.
Beide Datensätze müssen heruntergeladen und im Ordner "_TOOLS" abgelegt werden. Beim Kartenbau wird das Python-Skript make_peak_saddle_data.py aufgerufen und damit für den jeweiligen Kartenausschnitt die "peak dominance" und die "saddle direction" Daten berechnet.
Landpolygone (coastline Daten)
Wenn ein Kartenbereich Meeresflächen enthält, dann müssen die Küstenlinien (entlang des Festlands und um die Inseln) in einem extra Schritt erstellt werden und können anschließend über den Hintergrund der Meeresfläche gelegt werden. Da sich die dafür benötigten "land polygons" Daten im Normalfall nicht wirklich verändern, müssen sie nur einmal heruntergeladen werden: -> hier
Ich verwende dabei die Version "Large polygons are split, Projection: WGS84". Die geladenen Daten (enthält die komplette Welt) werden in einen Ordner entpackt und bei der späteren Kartenerstellung durch das Kartenbau-Skript entsprechend zugeschnitten und in das .osm Format konvertiert. So erreicht man die durchgängige Darstellung des Meeres und aller Inseln und Küstenlinien.
Routen (Fahrrad, Mountainbike, Wandern, Schlitten, Skitour) und ÖPNV Netzwerk
Fahrrad-, Mountainbike und Wanderrouten und teils auch Schlittenbahnen und Skitourenrouten werden in Openstreetmap oft als sogenannte "relations" eingetragen. Darin wird festgehalten, welche "ways" zusammengenommen eine Route bilden. Routennamen und Referenznummern werden dann zu diesen "relations" eingetragen. Leider kann der "Mapsforge Map-Writer" nicht mit "relations" umgehen und deshalb wären diese nicht in einer Karte enthalten. Deshalb muss man hier einen kleinen Trick anwenden.
Ein Python-Skript legt für jeden Weg einer "relation" einen neuen Weg an, der mit den notwendigsten Tags (=Infos aus Openstreetmap) versehen ist. Diese speziellen Routen-Wege können dann in der Karte mit einem geeigneten Kartenthema entsprechend dargestellt werden (z. B. als farbige Linien neben den eigentlichen Wegen, mit Informationen über die Referenznummer und den Namen). Für diesen Prozess benötigt man keine weiteren Daten (es werden die vorhandenen Openstreetmap Daten verwendet). Der gesamte Routenprozess ist im "OpenOutdoorMap-Skript" enthalten und wird automatisch mit ausgeführt.
Nach dem gleichen Prinzip werden alle Routen, die ein ÖPNV Netzwerk bilden (Bus-, Tram-, U-Bahn, S-Bahn, Zuglinien), verarbeitet. Mit einem geeigneten Kartenthema kann auch hier anschließend das Netzwerk entsprechend dargestellt werden.
Die Schritte des Kartenbau Prozesses
Alle folgenden Schritte eines Kartenbaus werden aus einem einzigen Windows Batch-Skript 02_OpenOutdoorMap_CREATE_MAP.bat heraus ausgeführt. Das Skript kann über die Kommandozeile aufgerufen werden. Um Fehlermeldungen zu vermeiden, müssen, bevor man startet, folgende Bedingungen erfüllt sein:
- die notwendige Software ist installiert und funktioniert
- alle notwenigen Datenquellen sind vorhanden
- im Kartenbau-Skript sind die notwendigen Grundeinstellungen vorgenommen
- alle Karten-spezifischen Einstellungen sind in einer Konfigurationsdatei "Karten-Name".config eingetragen
- der zu verwendende Kartenbereich liegt als Polygon-Datei (.poly) vor
Das Skript besteht aus 16 einzelnen Schritten, die als jeweiliger Startpunkt angewählt werden können. Das "XXX" ist der Platzhalter für den Kartennamen. Die Schritte 11-13 sind dabei nur nötig, wenn die Karte einen Meeres-Bereich enthält (markiert mit optional * )
| # | Schritt | Benötigte Software | Entstehende Datei |
|---|---|---|---|
| 1 | Ausschneiden der OSM-Daten (nach Polygon Grenzen) | OSMCONVERT | 01_XXX_osmdata_raw.pbf |
| 2 | Nicht notwendige "Tags" werden entfernt | OSMCONVERT,OSMFILTER | 02_XXX_osm_cleaned.pbf |
| 3 | Tag-Transform | OSMOSIS | 03_XXX_osm_transformed.pbf |
| 4 | Nicht notwendige "Relations" werden entfernt | OSMCONVERT,OSMFILTER | 04_XXX_osm_norelations.o5m |
| 5 | Nicht notwendige "Ways" werden entfernt | PYTHON3,OSMOSIS,OSMCONVERT | 05_XXX_osm_final.pbf |
| 6 | Erstellung der Kartengrenzen | PYTHON3 | 06_XXX_map-border.osm |
| 7 | Erstellung der Verwaltungsgrenzen | PYTHON3 | 07_XXX_admin_ways.osm |
| 8 | Routen-Wege und ÖPNV-Netzwerk erzeugen | PYTHON3 | 08_XXX_route_ways.osm |
| 9 | Erstellung der Polygon-Namen | OSMCONVERT,OSMFILTER | 09_XXX_label_nodes.osm |
| 10 | "Peak/Saddle"-Daten prozessieren | OSMFILTER,PYTHON3 | 10_XXX_peak_saddle.osm |
| 11 | Meeresfläche erzeugen optional * | im Skript selber | 11_XXX_sea.osm |
| 12 | Land-Polygone erzeugen optional * | OGR2OGR,PYTHON3 | 12_XXX_land.osm |
| 13 | Land-Polygone und Meerflächen Kombinieren optional * | OSMOSIS | 13_XXX_sea_land.osm |
| 14 | Erstellung der Höhenlinien-Daten | OSMCONVERT,PYTHON2-PHYGHTMAP | 14_XXX_contours.o5m |
| 15 | Kombination aller Teil-Daten | OSMCONVERT | 15_XXX_map_data.pbf |
| 16 | Rendern der Karte | OSMOSIS,MAPSFORGE MAP-WRITER | OOM-XXX-v"Jahr-Monat".map |
Wichtige Hinweise
Für die hier vorgestellte OpenOutdoorMap werden im Skript-Ablauf die Openstreetmap Daten prozessiert ("tagtransform"). Dabei erhalten ausgewählte Tags spezielle Bezeichnungen, die dann im letzten Schritt der Kartenerstellung (Mapsforge-mapwriter) zusammen mit einem spezifischen "tagmapping" verwendet werden können, um erweiterte Darstellungen zu ermöglichen. Dies muss dann z. B. im Locus-App Karten-Theme entsprechend berücksichtigt werden. Deshalb sollte für eine OpenOutdoorMap immer die komplette Kombination aus "tagtransform", "tagmapping" und "theme" verwendet werden.
Die Karten werden in der "mapsforge V5" Version geschrieben.
Für die korrekte Darstellung wird deshalb ein V5 kompatibles Kartenthema benötigt.
Hinweise zu einzelnen Kartenbau-Schritten
Allgemein
Die Karten werden nach folgendem Muster benannt:
OOM-"Kartenname"-Version (also z. B. eine Karte von Bayern erstellt im Januar 2026 heißt dann: "OOM-BAYERN-v26-01.map").
Schritt 2 - "Tags" entfernen
Für diesen Schritt wird die Datei param_remove_tags.txt benötigt. Sie enthält die Definition der Tags, die nicht benötigt werden und gleich am Anfang des Kartenbaus aus den Openstreetmap Daten gefiltert werden. Nach dem Download muss die Datei entpackt und in den Ordner "TOOLS" ablegt werden.
Schritt 3 - "Tag-Transform"
Mit dem sogenannten "Tag-Transform" (eine Funktion der Osmosis Software) können Fehler in den Tags der Openstreetmap Daten korrigiert werden, Tags können vereinheitlicht werden, aber auch neue Tags können an Hand von Regeln erstellt werden. Die dafür benötigte tagtransform.xml Datei kann mit einem Text-Editor bearbeitet werden. Die hier hinterlegten Regeln sind wichtig und für die Erstellung der OpenOutdoorMap essentiell. Nach dem Download muss die Datei entpackt und in den Ordner "TOOLS" ablegt werden.
Nur durch dieses "Tag-Transform" wird es möglich, dass zusammen mit einem passenden Karten-Thema (OUTDOOR + DESERT) z. B. folgende Extras in der Karte angezeigt werden können:
- Öffnungszeiten bei Supermärkten, Drogeriemärkten und Bäckereien
- Verwendung von unterschiedlichen Parkplatz Symbolen und Anzeige zur Nutzung eines Parkplatzes
- Parkplatzgebühr
- Buslinien, die an einer Haltestelle halten
- Gate-Namen am Flughafen ...
Schritt 4 - "Relations" entfernen
Auch hier wird eine Parameter-Datei benötigt: param_remove_relations.txt benötigt. Sie enthält die Definition aller Relationen, die nicht benötigt werden. Nach dem Download muss die Datei entpackt und in den Ordner "TOOLS" ablegt werden.
Schritt 5 - Nicht notwendige Wege entfernen
Wege und Relationen, die später gar nicht beim Rendern der Karte berücksichtigt werden, werden hier entfernt. Dazu wird das Python-Skript make_way-ids_to_reduce.py aufgerufen. Es sammelt diese zu entfernenden Daten, die dann in einem anschließenden Schritt von den Openstreetmap Daten der Karte entfernt werden.
Schritt 6 - Kartengrenzen erzeugen
Damit die Grenze des Kartenbereichs in der gerenderten Karte dargestellt werden kann, wird aus der Karten-spezifischen .poly-Datei ein entsprechender "Weg" erstellt. Dazu wird das Python-Skript make_map_border.py verwendet.
Schritt 7 - Verwaltungsgrenzen erzeugen
Analog zu Schritt 6 werden hier mit dem Python-Skript make_admin_ways.py die Verwaltungsgrenzen erzeugt. Aus den Relationen der Landes-, Gebiets- und Regionsgrenzen werden "Wege" erstellt, solange diese nicht identisch mit einer Küstenlinie sind.
Schritt 8 - Routen und ÖPNV-Netzwerk prozessieren
Auch die Routen für Radfahren, Mountainbiken, Wandern, Skitouren, Schlittenfahren und das ÖPNV-Netzwerk liegen in Openstreetmap als Relationen vor. Wie oben unter "Datenquellen" beschrieben, müssen auch hier aus den Relationen "Wege" erstellt werden. Dazu ruft das "OpenOutdoorMap-Skript" zwei Python-Skripte auf: make_route_ways.py make_network_ways.py
Schritt 9 - Polygon-Namen erzeugen
Damit die Beschriftung von Polygonen (und Multipolygonen) über je einen zentralen "Knotenpunkt" (node) erfolgen kann, werden diese von relevanten Daten angelegt. Was "relevant" ist, ist in der folgenden Parameter-Datei festgelegt. Nach dem Download muss die Datei entpackt und in den Ordner "TOOLS" ablegt werden.
Beispiele für relevante Polygone: Seen, Gletscher, Wälder, Inseln, Buchten, National-Parks .... und komplexe Gebäude.
Schritt 10 - "Peak" und "Saddle" Daten prozessieren
Wie oben unter "Datenquellen" beschrieben, werden hier durch das Python-Skript make_peak_saddle_data.py die Gipfel-Dominanz und Sattel-Richtungswerte erzeugt.
Schritte 11-13 - Meeresflächen und Landpolygone
Diese drei Schritte werden nur ausgeführt, wenn in der config-Datei angegeben wurde, dass der entsprechende Kartenbereich Meeresflächen enthält. In drei Schritten wird zuerst eine Meeresfläche, die das gesamte Kartengebiet abdeckt, erzeugt, dann werden alle Landpolygone (Festland-Flächen, Inseln) erzeugt und am Schluss werden die beiden Datensätze fusioniert. Da die Meeresflächen den "tag" "layer=-5" bekommen und die Landflächen "layer=-4" wird gewährleistet, dass Landflächen immer über dem "Hintergrund" der Meeresfläche liegen. Mehrere verschiedene Software (ogr2ogr, Osmosis und das Python-Skript ogr2osm.py) werden hierbei vom "OpenOutdoorMap-Skript" aufgerufen.
Schritt 14 - Daten für die Höhenlinien erzeugen
Eine topographische Karte benötigt Höhenlinien. Wie oben beschrieben, können beim Kartenbau bereits existierende Daten dafür verwendet werden (da sich die Höhendaten normalerweise nicht mehr ändern und damit nur einmal erstellt werden müssen) oder die Daten werden neu erzeugt. Hat man die Installation der Python-Software Phyghtmap geschafft, dann sollte auch die Neuerstellung der Höhendaten funktionieren. Je nach Kartengröße braucht dieser Schritt aber etwas Zeit.
Schritt 15 - Alle Daten kombinieren
Bevor die Karte gerendert wird, müssen alle Datensätze, die in den Schritten davor erzeugt wurden, zu einer Datei ("15_XXX_map_data.pbf") kombiniert werden.
Schritt 16 - Rendern der Karte durch den Mapsforge-Map-Writer
Das Osmosis-Plugin "mapsforge map-writer" erstellt am Ende die eigentliche Karte ("rendern"). Dazu wird die Datei tagmapping.xml benötigt. In ihr ist festgelegt, welche Elemente in der Karte enthalten sind und ab welchem Zoom-level sie dargestellt werden. Ohne diese Einschränkung würde die Kartendatei unnötig groß und wahrscheinlich auch langsamer in ihrer Nutzung werden.
Ich stelle hier zwei leicht unterschiedliche Versionen zur Verfügung. Die Version "tagmapping_desert" sollte für Kartenbereiche verwendet werden, die weniger dicht besiedelt und weniger gut kartiert sind. Sie ist abgestimmt mit dem Karten-Thema "DESERT". Die "normale" Version ist abgestimmt mit dem Karten-Thema "OUTDOOR".
"clean_directory.bat"
Bei jedem Kartenbau wird ebenfalls eine clean_directory.bat Datei generiert. Mit diesem Batch-Skript kann das jeweilige Kartenprojekt-Verzeichnis aufgeräumt werden. Alle Dateien, außer die fertige Karte (.map) und die Datei mit den Höhendaten (denn diese kann man beim nächsten Karten-Update ja wieder verwenden), werden damit gelöscht.
OpenOutdoorMap - Beispiele
Das "richtige" Karten Thema für die LOCUS App
Für die OpenOutdoorMap wird ein spezielles Karten-Thema benötigt. Durch das Zusammenspiel von "tagtransform", "tagmapping" und "theme" können alle in der Karte enthaltenen Details optimal dargestellt werden. Das Karten-Thema wird am Endgerät für die entsprechende Karten-App (z. B. LOCUS) benötigt.
Alle Infos und natürlich die passenden Karten-Themen dazu gibt es hier: OUTDOOR + DESERT - Karten-Themen für die LOCUS App
Hat alles geklappt, dann erhält man eine Karte, die ungefähr so aussehen sollte (die Schattierung wird von der LOCUS App generiert).
Beispiel-Karte: OOM-BAYERN-v26-01 (OpenOutdoorMaps von "Bayern"), im Bild 2 ist das ÖPNV-Netzwerk eingeblendet
OpenOutdoorMap-Karten zum Download
Einige mit dem beschriebenen Skript erzeugte Karten gibt es hier zum Download. Alle Karten sind mit 10m-Höhenlinien erstellt worden.
| Name | Dateigröße (MB, .zip) | Stand |
|---|---|---|
| BAYERN | 637 | 01-2026 |
| BADEN-WÜRTTEMBERG | 440 | 01-2026 |
| ÖSTERREICH | 1012 | 01-2026 |
| SCHWEIZ | 645 | 01-2026 |
Spenden willkommen . . .
Ich freue mich auf euer Feedback (Fragen, Anregungen, Verbesserungen, gefundene Fehler ...).
Bitte nutzt dazu das Kontaktformular -> KONTAKT
Wenn dir mein OpenOutdoorMap Skript gefällt, freue ich mich sehr über ein kleine Spende. Es ist eine Wertschätzung meiner Arbeit und spornt mich an, weitere Verbesserungen zu entwickeln.





