User:Nakaner/Sandbox

From OpenStreetMap Wiki
Jump to: navigation, search
Available languages — OsmAndMapCreator
· Afrikaans · Alemannisch · aragonés · asturianu · azərbaycanca · Bahasa Indonesia · Bahasa Melayu · Bân-lâm-gú · Basa Jawa · Baso Minangkabau · bosanski · brezhoneg · català · čeština · dansk · Deutsch · eesti · English · español · Esperanto · estremeñu · euskara · français · Frysk · Gaeilge · Gàidhlig · galego · Hausa · hrvatski · Igbo · interlingua · Interlingue · isiXhosa · isiZulu · íslenska · italiano · Kiswahili · Kreyòl ayisyen · kréyòl gwadloupéyen · Kurdî · latviešu · Lëtzebuergesch · lietuvių · magyar · Malagasy · Malti · Nederlands · Nedersaksies · norsk bokmål · norsk nynorsk · occitan · Oromoo · oʻzbekcha/ўзбекча · Plattdüütsch · polski · português · português do Brasil · română · shqip · slovenčina · slovenščina · Soomaaliga · suomi · svenska · Tiếng Việt · Türkçe · Vahcuengh · vèneto · Wolof · Yorùbá · Zazaki · српски / srpski · беларуская · български · қазақша · македонски · монгол · русский · тоҷикӣ · українська · Ελληνικά · Հայերեն · ქართული · नेपाली · मराठी · हिन्दी · অসমীয়া · বাংলা · ਪੰਜਾਬੀ · ગુજરાતી · ଓଡ଼ିଆ · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · සිංහල · ไทย · မြန်မာဘာသာ · ລາວ · ភាសាខ្មែរ · ⵜⴰⵎⴰⵣⵉⵖⵜ · አማርኛ · 한국어 · 日本語 · 中文(简体)‎ · 吴语 · 粵語 · 中文(繁體)‎ · ייִדיש · עברית · اردو · العربية · پښتو · سنڌي · فارسی · ދިވެހިބަސް

OsmAndMapCreator ist ein Open-Source Java-Hilfsprogramm für OsmAnd. Es kann Kacheln von Mapnik herunterladen und OSM-Dateien (.osm, .bz2, .pbf) nach POIs, Adressen und ÖPNV-Routen indizieren. Besonders hervorzuheben ist die Fähigkeit, OBF-Dateien aus OSM-Dateien zu erzeugen. Diese OBF-Dateien sind die Grundlage für Offline-Karten und Offline-Routenberechnung auf dem Smartphone.

Anmerkung des Verfassers: Dieser Text ist geschrieben, dass ihn auch Laien verstehen. Deshalb ist er an manchen Stellen etwas (zu) ausführlich und mag für manchen Freak auch nach einer Anleitung für DAUs klingen.

Screenshot OsmAndMapCreator

Ablauf der Kartenerstellung

Die Erstellung der OBF-Dateien läuft wie folgt ab: 1. Lade einen Auszug (auch Extrakt genannt) aus der OpenStreetMap-Datenbank im PBF-Format bei der Geofabrik für das gewünschte Gebiet herunter. Beachte bei der Größe des Gebiets den hohen Arbeitsspeicherbedarf von OsmAndMapCreator (siehe unten). 2. Falls der Extrakt zu groß ist, musst du aus ihm mit Osmconvert einen kleineren Ausschnitt ausschneiden. 3. Erzeuge mit OsmAndMapCreator die OBF-Datei. 4. Kopiere die OBF-Datei auf dein Smartphone.

OsmAndMapCreator herunterladen

OsmAndMapCreator benötigt keinen besonderen Installationsprozess. Zum Ausführen benötigt man keine Root- bzw. Admin-Rechte, es muss nur Java (Windows) oder OpenJDK (Linux, OSX) installiert sein. Wenn man nicht weiß, ob man Java installiert hat, öffnet man eine Kommandozeile und führt den Befehl java aus. Wenn die Ausgabe ausführlich diverse Optionen zum Programmstart beschreibt und nicht ein einfaches "Programm nicht gefunden" präsentiert, ist Java installiert.

OsmAndMapCreator kann man auf der Webseite der Entwickler herunterladen, den Download entpackt man nun an einem beliebigen Ort. Unter unixoiden Betriebssystemen (Linux, OSX) muss man die .jar-Datei noch ausführbar machen.

Erzeugung der OBF-Datei mit der grafischen Benutzeroberfläche

Um OsmAndMapCreator zu starten ist ein Doppelklick auf die .jar-Datei nicht der richtige Weg. Damit das Programm nicht aus Speichermangel abstürzt, sollte man ihm mehr Speicherplatz (im RAM) als üblich zuweisen.

  • Leute mit Kommandozeilenerfahrung: Man öffnet eine Kommandozeile, wechselt mit cd in das Verzeichnis, in dem OsmAndMapCreator.jar liegt und führt den Befehl java -jar -Xms1G -Xmx6G OsmAndMapCreator.jar aus. Die Zahlen bei -Xms und -Xmx geben den zugewiesenen Arbeitsspeicher an (in diesem Beispiel 1 GB bis 6 GB). M ist die Abkürzung für Megabyte, G für Gigabyte. Die Menge ist vom zur Verfügung stehenden Arbeitsspeicher und der Größe der .pbf-Datei abhängig, Details siehe unten.
  • Leute ohne Kommandozeilenerfahung: Man startet einen Dateinmanager (Windows Explorer, Nautilus o.ä.), wechselt in den Ordner, in dem OsmAndMapCreator.jar liegt und klickt dort doppelt auf OsmAndMapCreator.bat (Windows) bzw. OsmAndMapCreator.sh (OSX, Linux usw.). Die .bat- bzw. .sh-Datei startet OsmAndMapCreator und weißt ihm wie der obige Kommandozeilenbefehl einen angegebene Speichermenge zu. Die Speichermenge kann/sollte man in der .bat- bzw. .sh-Datei ändern, Details dazu siehe unten.

Nach dem Start von OsmAndMapCreator klickst du auf Datei, dann auf Erstelle .obf von OSM-Datei und wählst die heruntergeladene und ggf. ausgeschnittene PBF-Datei aus. Warte nun bis das OsmAndMapCreator fertig ist. Wenn du noch ein zweite Karte erstellen willst, solltest du OsmAndMapCreator neu starten, damit es den genutzen Arbeitsspeicher frei gibt.

Erzeugung von OBF-Dateien über die Kommandozeile

Wer des Öfteren OBF-Dateien erstellt, wird oft das Bedürfnis haben, diesen Prozess zu automatisieren. Auch wenn es auf den ersten Blick nicht so scheint, OBF-Dateien kann man auch über die Kommandozeile und somit per Cronjob erstellen.

Wer regelmäßig neue OsmAnd-Karten erstellt, kann auch die heruntergeladenen Extrakte selbst mit Osmconvert oder Osmosis aktualisieren. Dann muss man nicht jedes Mal die großen Extrakte herunterladen.

Batch.xml

Bevor man OsmAndMapCreator über die Kommandozeile startet, passt man die Einstellungen in der Datei batch.xml im OsmAndMapCreator-Verzeichnis an.

Zu installieren: Ubuntu: libcommons-logging-java

Muster-Datei

<?xml version="1.0" encoding="utf-8"?&tt;
<batch_process&tt;
	<!--<process_attributes mapZooms="" renderingTypesFile="" zoomWaySmoothness="" 
		osmDbDialect="sqlite_in_memory" mapDbDialect="sqlite_in_memory"/>--/>
	<process_attributes mapZooms="" renderingTypesFile="" zoomWaySmoothness="" />	
	 <!-- zoomWaySmoothness - 1-4, typical mapZooms - 8-10;11-12;13-14;15   --/>
	<process directory_for_osm_files="/home/michael/Downloads/OSM/Rohdaten/osmand" 
		directory_for_index_files="/home/michael/osmand" 
		directory_for_generation="/home/michael/osmand"
		skipExistingIndexesAt="/home/osmand" 
		indexPOI="true" indexRouting="true" indexMap="true"	
		indexTransport="true" indexAddress="true"/>		
	</process/>
</batch_process/> 

Einstellungen in der batch.xml

Mit den Attributen des Tags process_attributes werden Einstellungen für die Erzeugung einer OBF-Datei angegeben. Mit den Attributen der obigen Musterdatei kann man i.d.R. gut arbeiten. Wer sehr viel Arbeitsspeicher (mindestens 12 GB) zur Verfügung hat, kann die temporären SQLite-Datenbanken auch im Arbeitsspeicher statt im Arbeitsverzeichnis auf der Festplatte/SSD (standardmäßig ~/osmand unter OS X und Linux bzw.  %HOMEPATH%\osmand unter Windows) speichern. Das beschleunigt die Erstellung der OBF-Dateien enorm. Bei zu wenig Arbeitsspeicher nützt ein Speichern der SQLite-Datenbanken im Arbeitsspeichern jedoch nichts, da das System dann swappt. Um die SQLite-Datenbanken im Arbeitsspeicher zu halten, statt auf der Festplatte/SSD zu speichern, ändere man die batch.xml wie folgt:
<process_attributes mapZooms="" renderingTypesFile="" zoomWaySmoothness="" />
durch
<process_attributes mapZooms="" renderingTypesFile="" zoomWaySmoothness="" osmDbDialect="sqlite_in_memory" mapDbDialect="sqlite_in_memory"/>
ersetzen. Achtung! Für ein Land wie Baden-Württemberg (230 MB) sollte man dann mindestens 12 GB Arbeitsspeicher haben.

Die weiteren Einstellmöglichkeiten in der batch.xml sind:

Schlüssel Wert
directory_for_index_files Verzeichnis, in dem die fertigen OBF-Dateien abgelegt werden
directory_for_generation Verzeichnis, in dem die SQLite-Datenbanken zwischengespeichert werden
indexPOI POIs indizieren
indexRouting Wegenetz indizieren
indexMap Kartenelemente (für Rendering) indizieren
indexTransport ÖPNV indizieren
indexAddresses Adressen indizieren

Erzeugung starten

Mit folgendem Befehl startet man die Erzeugung der OBF-Dateien:

java -Djava.util.logging.config.file=logging.properties -Xms256M -Xmx6300M -cp "./OsmAndMapCreator.jar:/.lib/*.jar" net.osmand.data.index.IndexBatchCreator batch.xml

Speicherbedarf

Speicherverbrauch

OsmAndMapCreator benötigt ein vielfaches an Arbeitsspeicher gegenüber der Größer der .pbf-Datei. Man sollte OsmAndMapCreator nur dann größere Gebiete rechnen lassen, wenn der Computer genügend Arbeitsspeicher hat. Dabei sollte man berücksichtigen, dass das Betriebssystem selbst auch noch etwas Platz benötigt. Dazu schaut man einfach mal im Leerlauf im Task-Manager nach dem Speicherverbrauch. Bedenke, dass 32-Bit-Systeme nur 3,3 GB RAM nutzen können.

Die folgende Tabelle listet die Dateigrößen und Speicherverbräuche einzelner Bundesländer als Beispiel mit Stand vom März 2013 auf. Bitte beachte, dass OpenStreetMap immer mehr Daten enthält und die herunterladbaren Dateien dadurch täglich größer werden. Die Berechnungszeit bezieht sich auf ein Ubuntu 12.10 (64 Bit) mit einem Intel Core i5-460M und 8 GB eingebautem RAM. Dabei lief nur OsmAndMapCreator, keine anderen anspruchsvollen Programme.

Anmerkung: Diese Tabelle ist noch nicht fertig. Die Spalte mit dem RAM-Verbrauch kann jeder füllen, der das jeweilige Gebiet für sich konvertiert hat, den der RAM-Verbrauch ist vom Prozessor unabhängig.

Bundesland Größe der .obf-Datei Verbrauch RAM zugewiesener RAM beim Programmstart Rechenzeit
Baden-Württemberg 220 MB ca 3 h 15 min
Bayern 300 MB wurde vom Benutzer nach über 7 h abgebrochen
Niedersachsen 280 MB unter 4 GB 1500 MB (OsmAndMC V1.1.0) 52 min (Win 64, AMD II X2 3.0 GB, 16 GB RAM)
Sachsen-Anhalt 46 MB ca. 15–20 min

Gebiete ab der Größe Bayerns kann man nicht mehr auf einmal in das .obf-Format konvertieren. Man muss diese Gebiete aufteilen und die Teile konvertieren. Deshalb werden auch keine .obf-Dateien für ganz Deutschland angeboten.

Menge des zugewiesenen Speichers anpassen

In der .bat- bzw. .sh-Datei taucht die Zeichenfolge -Xms64M -Xmx512M auf. Diese ersetzt man je nach Größe der .obf-Datei und des vorhandenen Arbeitsspeichers durch die Wert der Tabelle. Dabei sollte man, wenn keine weiteren Programme laufen unter Windows dem System mindestens 1,3 GB übrig lassen. Unter Linux ist der Speicher, den man dem System übrig lässt, von der Desktopumgebung abhängig; unter anspruchsvollen Oberflächen wie Unity sollten es mindestens 800 MB sein.

Beispielrechnung:

(1) installierter Arbeitsspeicher 4 GB
(2) Speicherverbrauch im Leerlauf (systemabhängig, im Task-Manager nachschauen) 1,3 GB
(3) Differenz aus (1) und (2) 2,7 GB
(4) minimale Speicherzuweisung (Wert hinter -Xms) 200 MB
(5) maximale Speicherzuweisung (Wert hinter -Xmx) 2,5 GB (Achtung Dezimaltrenner! Schreibe: -Xmx2500M)

Bitte beachte, dass zwischen den Zeichenfolgen -Xms und -Xmx und dem dazugehörigen Zahlenwert kein Leerzeichen stehen darf.

Die fertige .obf-Datei auf das Handy kopieren

OsmAndMapCreator gibt eine .obf-Datei aus, welche man auf dem Android-Smartphone im Anwendungsverzeichnis von OsmAnd ablegt. Den Ort des Anwendungsverzeichnisses kann man in den OsmAnd-Einstellungen unter dem Punkt Allgemein ändern. Es empfiehlt sich, /mnt/sdcard/osmand (Achtung! Der Einhängepunkt der SD-Karte ist auf manchen Smartphones ein anderer als /mnt/sdcard) zu verwenden. Dafür wählt man in den OsmAnd-Einstellungen dann das Verzeichnis /mnt/sdcard. Beachte, dass Android auf Linux basiert und bei Dateien und Ordnern auf Groß- und Kleinschreibung geachtet werden muss. /mnt/extSdCard ist nicht mit /mnt/extsdcard identisch!