DE:Osmchange (program)

From OpenStreetMap Wiki
Jump to navigation Jump to search

Mit dem Tool osmchange können .osc-OsmChange-Dateien in eine .osm-Planet-Datei eingearbeitet werden. Um den geografischen Bereich der Karte zu begrenzen, kann eine Boundig-Box oder ein Bounding-Polygon vorgegeben werden. Das Tool ist in C geschrieben und ziemlich schnell.

Für neue Projekte bitte osmconvert verwenden, weil osmchange nicht mit modernen OSM-Dateiformaten wie pbf und o5m umgehen kann.

Download

Diese Downloads sind verfügbar:

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

Programmbeschreibung

Es gibt zwei Hauptfunktionen: das Updaten einer .osm-Datei und das Begrenzen des Kartenausschnitts auf einen bestimmten geografischen Bereich.

Updaten von .osm-Dateien

Eine .osm-Datei kann mit Hilfe einer .osc-Datei auf den neuesten Stand gebracht werden. Beispielsweise kann die Datei planet.osm oder die Datei germany.osm von gestern mit Hilfe der .osc-Datei von heute Früh auf den Stand von heute upgedatet werden. Der Programmaufruf sieht etwa so aus:

<alt.osm ./osmchange change-Datei.osc >neu.osm

Für den Fall, dass die .osm-Datei schon älter ist, kann man für ein Update auf den aktuellen Stand auch mehrere .osc-Dateien gleichzeitig angeben:

<sehr_alt.osm ./osmchange c1.osc c2.osc c3.osc >neu.osm
<Tag24.osm ./osmchange c24_25.osc c25_26.osc >Tag26.osm

Auch komprimierte .osm-Dateien können verwendet werden. Zum Beispiel:

bzcat alt.osm.bz2 | ./osmchange c1.osc | gzip -1 >neu.osm.gz

Komprimierte .osc-Dateien müssen dekomprimiert werden, bevor man sie mit osmchange verwenden kann.

Einschränkungen: In der Change-Datei darf jedes OSM-Objekt (node, way, relation) nur einmal vorkommen. Minütliche und stündliche Change-Dateien können mehrere Versionen von bestimmten OSM-Objekten enthalten und sollten deshalb nicht mit osmchange verarbeitet werden. Tägliche und wöchentliche Change-Dateien sind geeignet.

Datenquelle: planet.openstreetmap.org/daily / ftp5.gweg.de...daily

Anwenden von geografischen Grenzen

Falls die Kartendaten auf eine bestimmte geografische Region begrenzt werden sollen, kann eine so genannte Bounding-Box als begrenzendes "Rechteck" definiert werden. Dazu müssen die Koordinaten der südwestlichen und der nordöstlichen Ecke angegeben werden. Zum Beispiel:

<germany.osm ./osmchange -b=10.5,49,11.5,50 >nuernberg.osm

An Stelle einer einfachen Bounding-Box kann auch ein Bounding-Polygon als Begrenzung definiert werden. Dadurch kann man eine politische Grenze genau vorgeben. Zum Beispiel:

<germany.osm ./osmchange -B=hamburg.poly >hamburg.osm

Das Format der Border-Polygon-Datei ist hier beschrieben. Die Formatbeschreibung muss nicht strikt eingehalten werden; wichtig ist jedoch, dass jede Koordinatenzeile mit einem oder mehreren Leerzeichen beginnt.

Kombinieren der Funktionen

Die oben beschriebenen Funktionen können kombiniert werden. Dadurch kann man eine .osm-Datei updaten und den geografischen Bereich im gleichen Durchlauf auf eine bestimmte Region begrenzen. Zum Beispiel:

<Tag24.osm ./osmchange -B=p.poly c24_25.osc >Tag25.osm

Plausibilitäts-Prüfung

Der Parameter -t unterdrückt die Standardausgabe des Programms. Das ist nützlich, wenn man nur die Eingabedateien prüfen lassen und keine Ausgabedatei schreiben will. Es werden dann nur Fehler- und Warnungsmeldungen ausgegeben.

Eingabedatei

Falls das Betriebssystem in Bezug auf Pipes nur wenig leistungsfähig ist, kann für die Eingabedatei der Parameter -i genutzt werden. Zum Beispiel:

./osmchange -i=gestern.osm change.osc >heute.osm

Anwendungsbeispiele

Das Programm osmchange wird in verschiedenen Projekten eingesetzt, die aktuelle OSM-XML-Dateien benötigen. Die Wiki-Seite Daily update an OSM XML file beschreibt den Update-Vorgang im Detail.

Ressourcen

Hauptspeicher

Das Programm selbst belegt nur wenige MB Hauptspeicher. Falls mehrere .osc-Dateien gleichzeitig verwendet werden, ist je Datei mit ca. 20 MB Platzbedarf zu rechnen. Falls geografische Grenzen angewendet werden sollen (Parameter -b oder -B), benötigt das Programm weitere 400 MB für einen Hash-Speicher. Diese Hash-Speichergröße kann mit dem Parameter -h... verändert werden, zum Beispiel: -h1000.

Benchmarks

(Bitte ergänzen.)