DE:Osmupdate
Osmupdate | |
---|---|
Lizenz: | GNU Affero General Public License v3 |
Plattformen: | Windows und Linux |
Version: | 0.9 (2018-05-30) |
Quellcode: | https://gitlab.com/osm-c-tools/osmctools |
Programmiersprache: | C |
Osmupdate lädt OSM-Changefiles herunter und verbindet sie. Dies ermöglicht es, für jede Zeitspanne ein passendes Changefile zu erstellen und OSM-Dateien in regelmäßigen oder auch unregelmäßigen Abständen zu aktualisieren.
Osmupdate zu benutzen ist nicht die einzige Möglichkeit, OSM-Dateien zu aktualisieren. In den meisten Fällen kann man dies auch mit anderen Programmen, zum Beispiel mit Osmosis erledigen. Osmupdate ist ein kleines, schnelles Programm, das ausschließlich für diese Aufgabe entwickelt wurde. Es bietet einige Funktionen, die Osmosis nicht besitzt, umgekehrt fehlen ihm aber auch viele Funktionen, die Osmosis bietet.
Anwendungsfälle
- Du möchtest eine lokale PostgreSQL-Datenbank aktuell halten und minütlich mit den OpenStreetMap-Servern synchronisieren.
- Du möchtest eine OSM-Datei eines kleinen Gebietes alle paar Wochen aktualisieren.
- Benutze nicht osmupdate. Lade jedes Mal einen neuen Auszug herunter.
- Du hast eine alte planet.osm-Datei gefunden und möchtest sie aktualisieren.
- Benutze nicht osmupdate. Lade eine neue planet.osm-Datei herunter.
- Du hast eine OSM-Datei einer größeren Region und möchtest sie alle paar Stunden, jeden Tage oder jede Wochen aktualisieren.
- Benutze osmupdate.
Download
Diese Downloads sind erhältlich:
- Programmdatei für Linux 32 bit
- Programmdatei für Linux 64 bit
- Programmdatei für Windows 32 bit (bei Vista oder Windows 7 nach dem Download die Datei umbenennen in z. B. osmup.exe, da Windows sonst davon ausgeht, es handle sich um ein Update)
- Programmdatei für Windows 64 bit
- source code (neueste Version)
- (vorheriger Quellcode)
- Download und Linken in einem Rutsch:
wget -O - http://m.m.i24.cc/osmupdate.c | cc -x c - -o osmupdate
Wie üblich: Gewährleistung ausgeschlossen, so weit wie gesetzlich zulässig.
Voraussetzungen
Osmupdate nutzt folgende Hilfsprogramme, die auf dem System verfügbar sein müssen:
- osmconvert
- wget
- gzip (nur für gzip-Kompression)
Benutzung
OSM-Datei aktualisieren
Veraltete OSM-Dateien können aktualisiert werden und als neue Datei ausgegeben werden. Unterstützt werden .o5m, .o5m.gz, .osm, .osm.gz und .pbf. Aus Sicherheitsgründen wird die alte Datei nicht gelöscht.
Beispiele:
./osmupdate old_file.o5m new_file.o5m
./osmupdate old_file.o5m.gz new_file.o5m.gz
./osmupdate old_file.osm new_file.osm
./osmupdate old_file.osm.gz new_file.osm.gz
./osmupdate old_file.pbf new_file.pbf
Wenn die alte OSM-Datei keinen Zeitstempel enthält, kann dieser manuell angegeben werden.
./osmupdate old_file.osm 2011-02-15T23:30:00Z new_file.osm
Ansonsten versucht das Programm den Zeitstempel der alten Datei automatisch auszulesen.
Hinweis: Es wird nicht empfohlen, große .osm-formatierte Dateien zu aktualisieren, da dies Stunden oder sogar Tage dauern kann. Besser eignen sich die Formate .pbf und .o5m (etwas schneller) für diesen Zweck.
Changefiles erstellen
Es ist möglich, die veralteten Daten nicht direkt zu aktualisieren, sondern ein Changefile für diese zu erstellen. Dieses kann dann zum Aktualisieren der alten Daten verwendet werden. Außerdem können Osmosis oder osm2pgsql hiermit Datenbanken aktualisieren.
Beispiele:
./osmupdate alte_datei.o5m change_file.o5c
./osmupdate alte_datei.osm change_file.osc
./osmupdate 2011-02-15T23:30:00Z change_file.o5c
./osmupdate 2011-02-15T23:30:00Z change_file.osc.gz
Geografische Grenzen verwenden
Im folgenden Beispiel, möchten wir eine OSM-Datei aktualisieren, die nur Europa enthält. Planet-Changefiles enthalten jedoch die ganze Welt, so dass viele unnötige Daten hinzugefügt werden würden. Mit dem Argument -B=
kann eine Polygon-Datei angegeben werden, sodass nur die Daten innerhalb dieses Polygons verwendet werden.
./osmupdate europe_old.o5m europe_new.o5m -B=europe.poly
Außerdem steht das Argument -b=
zur Verfügung, um einen rechteckigen Kartenausschnitt (Bounding-Box) zu definieren.
Ein effektiverer Weg, regionale OSM-Dateien zu aktualisieren, besteht darin, an Stelle von Planet-Changefiles regionale Changefiles zu verwenden. Dazu muss die Internetadresse für die jeweilige Quelle vorgegeben werden (siehe weiter unten). Die Angabe des Grenzpolygons erübrigt sich dadurch.
Siehe auch: osmconvert
Changefile-Kategorien begrenzen
Wenn man eine OSM-Datei nur einmal am Tag oder seltener aktualisiert, kann es nützlich sein, die Changefile-Kategiorie auf daily (täglich) zu beschränken. Das verhindert, dass Changefiles der Kategorie minutely (minütlich) oder hourly (stündlich) verwendet werden und spart daher Traffic. Benutze hierfür folgende Option:
--day
Um eine Datei alle paar Stunden zu aktualisieren, braucht man keine Changefiles der Kategorie minutely (minütlich). Daher sollte man folgende Option benutzen, um nur hourly (stündlich) und daily (täglich) zu verwenden:
--hour --day
Temporäre Dateien behalten
Eine andere Möglichkeit, den Netzwerkverkehr zu reduzieren, ist, lokale Kopien jeder heruntergeladenen Datei zu speichern. Dies ist insbesondere beim Verarbeiten von sich zeitlich überschneidenden Changefiles sinnvoll.
--keep-tempfiles
Ausführliche Ausgabe
osmupdate gibt während der Abarbeitung sehr wenige Hinweise aus. Sollte der Verdacht bestehen, dass etwas schief läuft, kann die Ausgabe ausführlicher gestaltet werden durch:
-v
Datenquelle
Normalerweise holt lädt osmupdate die Änderungsdateien von https://planet.openstreetmap.org/replication/. Falls andere Quellen genutzt werden sollen, zum Beispiel der Fork, FOSM, ein regionales Update-Repositorium oder die während des Lizenzwechsels verfügbaren Daten, muss die Option --base-url=
verwendet werden. Oft ist auch die Angabe von --base-url-suffix=-replicate
als URL-Suffix notwendig. Beispiele:
--base-url=mirror
--base-url=http://planet.fosm.org/planet/ --base-url-suffix=-replicate
--base-url=https://planet.openstreetmap.org/ --base-url-suffix=-replicate
--base-url=https://planet.openstreetmap.org/redaction-period/ --base-url-suffix=-replicate
--base-url=download.geofabrik.de/europe/germany/bremen-updates
Benchmarks
- updating the whole planet
Hardware: 16 GB RAM, 7200 rpm Disk, Quelldatei: ohne Zeitstempel, 14 Tage alte Planet-Datei.
time ./osmupdate planet-latest.o5m new-planet-latest.o5m --planet-url=https://planet.openstreetmap.org/redaction-period/
real 31m12.246s
user 13m45.716s
sys 0m57.056s
Hardware: Core i7 2600, 16GB RAM, RAID6, Quelldatei: pbf, ohne Zeitstempel, 3 Tage alte Planet-Datei.
time ./osmupdate32 -v planet-latest.osm.pbf planet-latest2.osm.pbf
real 52m52.208s
user 43m39.028s
sys 0m43.891s
Bitte ergänzt hier eure Benchmark-Ergebnisse.
Bekannte Probleme
- Osmupdate funktioniert nicht über Internet-Proxy-Verbindungen (Stand: 24.01.2014).
- Der Projektstatus ist nicht klar (bzgl. Aktualisierung etc.), siehe die Diskussion auf der dev-Mailingliste im Februar 2021