DE:Osmchange (program)
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:
- Programmdatei für Linux 32 bit
- Programmdatei für Linux 64 bit
- Programmdatei für Windows
- Quellcode (neueste Version, möglicherweise Beta-Version)
(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.)