DE:Osmconvert

From OpenStreetMap Wiki
Jump to: navigation, search
Help
Verfügbare Sprachen
Deutsch English Русский

Mit osmconvert lassen sich Dateien zwischen verschiedenen OpenStreetMap-Formate umwandeln und verarbeiten. Der Funktionsumfang des Programms ist einiges geringer als der der Standardsoftware Osmosis, so besitzt osmconvert beispielsweise keine Datenbank-Schnittstelle, jedoch erledigt das Programm die Standardaufgaben schneller und besitzt ein paar Spezialfunktionen (--all-to-nodes, --complex-ways und --out-statistics).

Contents

Download

Diese Downloads sind verfügbar:

Wie üblich: Gewährleistung ausgeschlossen, so weit wie gesetzlich zulässig.

Aufruf des Programms per Doppelklick

osmconvert kann sowohl unter Linux als auch unter Windows per Doppelklick aufgerufen werden. Es erscheint ein Textmenü, über das die Grundfunktionen ausgewählt werden können. Diese Art der Bedienung ist für Anwender gedacht, die mit der Kommandozeilen-Eingabe keine Erfahrung haben. Um die volle Leistungsfähigkeit des Programms nutzen zu können, muss es per Kommandozeile gestartet werden (unter Windows beispielsweise per Windows-Taste+R oder über das Menü Start->Ausführen->Öffnen: cmd).

Ein Hinweis zu Windows: die Nachfolgenden Aufrufbeispiele beginnen immer mit "./osmconvert". Der einleitende Punkt und der Schrägstrich sind bei Linux notwendig und gehören dort zum Sicherheitskonzept. Windows kann damit nichts anfangen, daher darf dort nur der reine Programmname osmconvert eingegeben werden.

Beschreibung des Programms

Eine detaillierte Beschreibung aller Optionen ist über die eingebaute englischsprachige Hilfefunktion abrufbar:

./osmconvert --help

Eine Übersicht über alle Optionen wird angezeigt mit:

./osmconvert -h

Die folgenden Absätze beschreiben die wichtigsten Funktionen des Programms.

Dateien konvertieren

Eine Umwandlung ist zwischen diesen Formaten möglich:

Falls die Ausgabe in die Standardausgabe erfolgen soll, muss dem Programm mitgeteilt werden, welches Ausgabeformat gewünscht ist:

--out-osm (default), --out-osc, --out-osh, --out-o5m, --out-o5c oder --out-pbf.

Wird die Option -o= zur Angabe des Namens der Ausgabedatei verwendet, ermittelt osmconvert das Format selbst anhand der gewählten Dateiendung. Beispiele für beide Fälle:

./osmconvert norway.pbf >norway.osm
./osmconvert region.pbf -o=region.o5m
./osmconvert region.o5m -o=region.pbf
./osmconvert 20110510_20110511.osc --out-o5c >20110510_20110511.o5c

Komprimierte Eingabedateien können ebenfalls verarbeitet werden. Auch die Ausgabedatei lässt sich komprimieren, wenn man den Weg per Standardausgabe nutzt. Beispiele:

bzcat europe.osm.bz2 | ./osmconvert - -o=europe.o5m
./osmconvert norway.pbf | gzip -1 >norway.osm.gz

Die Option "-" zeigt dem Programm, dass es die Eingabe über die Standardeingabe erwarten soll.

osmconvert bietet eine begrenzte Dekomprimierungsfunktion: es kann .gz-Dateien entpacken. Das Programm erkennt die Komprimierung von selbst, so dass man sich nicht darum kümmern muss, welche Eingabedatei komprimiert ist und welche nicht. Der eingebaute Dekomprimierungsalgorithmus ist weniger leistungsfähig als bei spezialisierten Entpacker-Programmen; trotzdem ist diese Funktion recht hilfreich, wenn man etwa eine Reihe neu heruntergeladener komprimierter .osc-Dateien verarbeiten will. Beispiele:

./osmconvert alt.o5m daily_updates/2011*.osc.gz -o=neu.o5m
./osmconvert daily_updates/2011*.osc.gz --merge-versions --out-osc | gzip >kumuliert.osc.gz

Geografische Grenzen verwenden

Ausschneiden per Längen- und Breitengrad

Das Angeben von Koordinaten ist die einfachste Art der Auswahl eines geografischen Bereichs. Bei manchen Karten wird die Mausposition in Form von Längen- und Breitengrad eingeblendet. Beispiele: Osmarenderer-Karte, ÖV-Karte.

Für die Definition eines begrenzenden Quasi-Rechtecks müssen die Koordinaten der südwestlichen und der nordöstlichen Ecke angegeben werden. Beispiel:

./osmconvert germany.pbf -b=10.5,49,11.5,50 -o=nuernberg.o5m

Ausschneiden per Vieleck

Anstelle der Koordinaten kann auch eine Grenzpolygon-Datei benutzt werden. Das ermöglicht die Begrenzung der Fläche beispielsweise entlang einer politischen Grenze:

./osmconvert germany.pbf -B=hamburg.poly -o=hamburg.pbf

Die Formatbeschreibung für eine Grenzpolygon-Datei kann hier im OSM-Wiki nachgeschlagen werden. Der Syntax muss nicht strikt eingehalten werden, wichtig ist jedoch, dass jede Koordinatenzeile mit einem oder mehreren Leerzeichen beginnt. osmconvert kann auch mit mehrfachen Polygonen und Polygonen mit ausgeschnittenen Inseln umgehen, wenn diese in der Polygondatei eindeutig definiert wurden.

Ausschneiden aus OSM-Change-Dateien?

Es ist nicht ratsam, geografische Grenzen bei OSM-Change-Dateien anzuwenden. Da nur Knoten Koordinaten enthalten, weiß das Programm nicht, was es mit Wegen und Relationen machen soll, deren referenzierte Knoten sich nicht in der gleichen Datei befinden. Als Ergebnis werden diese Wege und Relationen ausgeschlossen. Das ist jedoch nicht das, was man normalerweise erreichen will.

Grenzüberschreitende Wege komplett erhalten

Für manche Anwendungen ist es wichtig, die Linien (so genannte ways) jeweils auch dann komplett zu erhalten, wenn sich nur ein Abschnitt von ihnen im ausgewählten Bereich befindet. Das geht mit der Option --complete-ways. Beispiele:

./osmconvert germany.o5m -b=10.5,49,11.5,50 --complete-ways -o=nuernberg.o5m
./osmconvert germany.o5m -B=hamburg.poly --complete-ways -o=hamburg.pbf

Bei dieser wie auch bei der nachfolgend beschriebenen Option gilt für 32-Bit-Windows eine Größenbeschränkung für die Eingabedatei: Da die Datei mehrfach gelesen werden muss – es wird in der Datei "gesprungen" – darf ihre Größe 2 GiB nicht überschreiten. Für 64-Bit Windows sowie für 32- und 64-Bit-Linux gilt diese Einschränkung nicht.

Ebenfalls für diese und die nachfolgende Option wird empfohlen, als Eingabeformat .o5m zu verwenden, da .pbf-Dateien in der Regel intern komprimiert sind und deswegen deutlich länger benötigen um (mehrfach) eingelesen zu werden.

Grenzüberschreitende Multipolygone komplett erhalten

Immer mehr Flächen von Flüssen, Waldgebieten und Seen werden nicht durch eine einzige, sondern durch zusammengesetzte Linien begrenzt. Man verwendet dafür so genannte Multipolygone und ordnet ihnen die betreffenden Linien jeweils mit der Rolle outer oder inner zu.

osmconvert kann beim Anwenden von geografischen Grenzen auf solche Multipolygone Rücksicht nehmen und sie auch dann komplett erhalten, wenn sich nur ein kleiner Abschnitt innerhalb des gewünschten Bereichs befindet. Verantwortlich dafür ist die Option --complex-ways. Beispiele:

./osmconvert germany.o5m -b=10.5,49,11.5,50 --complex-ways -o=nuernberg.o5m
./osmconvert germany.o5m -B=hamburg.poly --complex-ways -o=hamburg.pbf

Bitte auch die beiden Hinweise am Ende des vorherigen Abschnitts beachten.

Referenzen zu außerhalb liegenden Objekten ausschließen

Wenn es notwendig ist, Referenzen zu Objekten zu löschen, die außerhalb einer geografischen Grenze befinden, kann die Option --drop-broken-refs verwendet werden (nützlich eventuell für Datenimporte in OSM Map Composer oder JOSM).

Zwei oder mehr geographische Bereiche zusammenführen

Unter bestimmten Voraussetzungen können OSM-Dateien zusammengeführt werden. Wenn sie Objekte (nodes, ways, relations) mit denselben IDs beinhalten, müssen diese denselben Inhalt haben. Beispiel: Wenn ein Weg die geografische Grenze zwischen zwei regionalen Dateien kreuzt, muss der Datensatz des Weges jede Node-Referenz enthalten, also auch die Referenzen zu Punkten, die außerhalb der Grenzen der betrachteten Datei liegen. Solche Regionen dürfen daher nicht mit der Option --drop-brokenrefs ausgeschnitten worden sein. Beispiele für das Zusammenführen geographischer Bereiche:

./osmconvert austria.o5m germany.o5m switzerland.o5m -o=dach.o5m
./osmconvert north_america.osm south_america.osm -o=americas.osm

Sonderfall: Höhenlinien schneiden

Siehe: Howto render Garmin countour layers with no artefacts

Informationen oder Inhalte aus der Ausgabedatei ausschließen

Autor-Information entfernen

Die meisten Programme benötigen keine Autor-Informationen. Zum Entfernen der Informationen von Benutzername, Benutzer-ID, Changeset und Zeitstempel muss das Kommando um die Option --drop-author ergänzt werden. Beispiel:

./osmconvert --drop-author a.pbf -o=a.osm

In aller Regel sind keine Probleme zu erwarten, wenn bei den Formaten .osm und .o5m die Autor-Informationen fehlen, beim Format .pbf kann das jedoch zu Problemen führen und wird in diesem Fall nicht empfohlen.

Falls die Autor-Informationen später aus formalen Gründen wieder benötigt werden, etwa, weil ein nachgeschaltetes Programm diese zwar nicht benötigt, aber aus formalen Gründen erwartet, kann man sie mit der Option --fake-author wieder hinzufügen. Natürlich handelt es sich dabei dann nicht um die gelöschten Informationen sondern um Ersatzwerte, die lediglich den Formatvorgaben entsprechen.

OSM-Objekttypen ausschließen

Es ist möglich ganze Objektgruppen aus einer Datei zu entfernen:

--drop-nodes
--drop-ways
--drop-relations

Detailliertere Filtermöglichkeiten bietet das Programm osmfilter.

Wege und Relationen entfernen und in Knoten umwandeln

Manchmal ist es für die weitere Verarbeitung von OSM-Daten einfacher, wenn die Datei nur noch einen Objekttyp enthält, nämlich den Typ Knoten (node). osmconvert bietet die Möglichkeit, alle Wege und Relationen zu entfernen und stattdessen deren geografische Mittelpunkte als Knoten neu in die Datei aufzunehmen. Für jeden Weg entsteht ein Knoten mit genau den gleichen Tags. Als ID wird die ID des Wegs verwendet, dabei aber um 1015 erhöht. Für Relationen gilt das Gleiche, die ID wird jedoch um 2*1015 erhöht. Beispiel:

./osmconvert hamburg.pbf --all-to-nodes -o=hamburg_nodes.osm

Die OpenLinkMap nutzt diese Möglichkeit beispielsweise, um die weitere Verarbeitung der Daten zu vereinfachen. Für den Fall, dass ein anderer ID-Versatz verwendet werden soll, kann man diesen mit der Option --object-type-offset= konkret vorgeben.

OSM-Dateien aktualisieren

OSM-Datein der unterschiedlichen Formate (*.osm, *.o5m oder *.pbf) können mit Hilfe von einem oder mehreren OSM-Change-Files (*.osc oder *.o5c) aktualisiert werden.

Wenn man beispielsweise eine planet.osm-Datei oder einen regionalen Ausschnitt wie germany.o5m mit Stand von gestern hat, kann man diese Datei mit der Change-Datei von heute aktualisieren (spart Downloadzeit und Traffic). Beispiele:

./osmconvert planet_old.osm changefile.osc -o=planet_new.osm
./osmconvert planet_old.o5m changefile.osc.gz -o=planet_new.o5m
./osmconvert germany_old.o5m changefile.osc -B=germany.poly -o=germany_new.o5m

Wenn die OSM-Datei schon älter ist, können auch mehrere Change-Dateien gleichzeitig verarbeitet werden:

./osmconvert veryold.osm c1.osc c2.osc c3.osc -o=new.osm
./osmconvert day24.o5m c24_25.osc c25_26.osc -o=day26.o5m
./osmconvert day01.o5m november/*.osc -o=day30.o5m

In der Change-Datei dürfen nur OSM-Objekt-Unikate enthalten sein. Das bedeutet, das jeder Punkt (node), jeder Weg (way) und jede Relation (relation) nur einmal vorkommen dürfen. Minütliche und stündliche Change-Files können mehr als eine Version von OSM-Objekten enthalten. In diese Fällen werden Warnmeldungen angezeigt. Die verschiedenen Versionen eines Objekts lassen sich mit der Option --merge-versions jeweils zu einer zusammenführen. Dadurch verbleibt von jedem Objekt nur die jeweils neueste Version in der Datei.

Beim Aktualisieren und automatischen Zusammenfassen von Change-Dateien hilft auch das Programm osmupdate.

Unterschiede zwischen zwei OSM-Dateien berechnen

Die Unterschiede zwischen zwei OSM-Dateien können ermittelt und in eine OSM-Change-Datei geschrieben werden. Beispiele:

./osmconvert old.osm new.osm --diff -o=changefile.osc
./osmconvert old.o5m new.o5m --diff -o=changefile.o5c

Andere Operationen, wie zum Beispiel das Anwenden regionaler Grenzen, können in diesem Fall nicht gleichzeitig durchgeführt werden. Beide Dateien müssen nach Objekttyp und ID sortiert sein. Neu erstellte Objekte werden als "modified" in die Ausgabedatei geschrieben, außer sie haben Versionsnummer 1.

Beim Berechnen von Dateiunterschieden orientiert sich osmconvert an den Versionsnummern der jeweils zu vergleichenden Objekte. Wurden die Versionsnummern vorher herausgefiltert oder sollen die Objekte aus anderen Gründen inhaltlich miteinander verglichen werden (etwa, weil es sich um gefilterte Objekte handelt), kann man das mit der Option --diff-contents erreichen (klappt nur mit Dateien im .o5m-Format).

osmconvert speichert zu löschende Objekte grundsätzlich nur mit ID und Versionsnummer (und ggf. Autor-Daten), aber ohne Inhalt. Dies hat sich bewährt, weil es vom Verfahren her überflüssig ist, Information zu transportieren, die gleich wieder gelöscht wird. Manche Programme erwarten jedoch bei Knoten aus formalen Gründen die Angabe von Längen- und Breitengrad, um diese dann im nächsten Schritt wieder zu löschen. Mit der Option --fake-lonlat können Ersatzwerte für Längen- und Breitengrad hinzugefügt werden.

Zeitstempel vorgeben

OSM-Dateien enthalten in der Regel einen Zeitstempel. Dieser bleibt bei Dateiumwandlungen erhalten, er kann aber auch von Hand vorgegeben oder verändert werden. Beispiel:

./osmconvert hamburg.o5m --timestamp=2011-08-01T23:50:00Z -o=hamburg.o5m

Ermitteln statistischer Daten

Es gibt verschiedene Wege, die Metadaten oder die statistischen Daten einer OSM-Datei anzuzeigen. Zum einen kann mit --out-timestamp der Datei-Zeitstempel ausgegeben werden (das Z am Ende des Zeitstempels steht für Zulu):

./osmconvert Datei_mit_Zeitstempel.o5m --out-timestamp
2011-08-01T23:50:00Z
./osmconvert Datei_ohne_Zeitstempel.o5m --out-timestamp
(invalid timestamp)

Zum anderen kann mit --out-statistics die gesamte Datei analysiert werden. Ausgegeben werden dann verschiedene statistische Daten. Beispiel:

./osmconvert germany.osm.pbf --out-statistics

timestamp min: 2005-07-05T02:14:17Z
timestamp max: 2011-07-31T19:59:46Z
lon min: -20.0712330
lon max: 21.1441799
lat min: 47.0830289
lat max: 59.9982830
nodes: 78138447
ways: 11342322
relations: 176024
node id min: 1
node id max: 1380816490
way id min: 92
way id max: 123952798
relation id min: 159
relation id max: 1693098

Funktionen kombinieren

Die meisten der vorgestellten Funktionen können kombiniert werden. So ist es beispielsweise möglich, eine OSM-Datei zu aktualisieren und gleichzeitig geografisch zu begrenzen:

./osmconvert day24.osm -B=p.poly c24_25.osc -o=day25.osm

Parameter-Datei

Die Kommandozeilen-Optionen können lang werden, wenn komplizierte Verarbeitungen durchgeführt werden sollen. In solchen Fällen empfiehlt sich die Verwendung einer Parameter-Datei. Beispiel:

./osmconvert --parameter-file=meine_parameter

Datei "meine_parameter":

-v

// Eingabedatei
planet.o5m

// begrenzendes Rechteck
-b=8.123,10.123,9.456,11.456

--complex-ways

-o=region.o5m

Die einzelnen Optionen müssen durch Leerzeilen getrennt werden. Zeilenwechsel innerhalb von Optionen werden in Leerzeichen umgewandelt. Mit "// " beginnende Zeilen werden als Kommentar betrachtet und vom Programm ignoriert.

Technische Details

Temporäre Dateien

Für manche Operationen legt osmconvert temporäre Dateien an und löscht diese anschließend wieder. Diese Dateien sind eher klein – jedenfalls im Vergleich zu den verarbeiteten OSM-Dateien. Ihr Name beginnt mit "osmconvert_tempfile" und endet mit einer Nummer. Der Linke Teil des Namens sowie der Dateipfad können vom Benutzer geändert werden. Beispiel:

./osmconvert germany.pbf -B=n.poly -t=/media/hd70/temp -o=nuernberg.o5m

Speicherverwaltung

Mit den Optionen --hash-memory=, --max-refs= und --max-objects= kann die Nutzung des Hauptspeichers beeinflusst werden. Details hierzu sind in der ausführlichen Hilfe zum Programm beschrieben. Anzeige der Hilfe (englisch):

./osmconvert --help

Testausgaben

Manchmal ist es hilfreich, während des Programmlaufs zusätzliche Testausgaben zu erhalten. Diese können mit -v (für englisch verbose, "wortreich") eingeschaltet werden. Mit -v=2 erhält man zusätzlich noch detailliertere Testausgaben.

Benchmarks

Bitte ergänzt hier Eure Benchmark-Ergebnisse.

Personal tools
Namespaces
Variants
Actions
site
Toolbox