[Talk-de] Relation runterladen?
Rainer Kluge
rkluge50 at web.de
Mi Okt 6 14:11:21 UTC 2010
Hallo,
Am 05.10.2010 19:16, schrieb Carsten Gerlach:
> Lässt sich das so erweitern, daß man als Quelle eine lokale osm-Datei (z.B.
> germany.osm) verwenden kann, aus der die Relation extrahiert wird?
Das wäre machbar aber äußerst ineffizient. Die osm-Dateien sind reine
Textdateien im XML-Format. Will man die Wege und Knoten einer Relation aus einer
solchen Datei auslesen, dann muss man die komplette Datei lesen.
Ein XML-Parser, den ich für die sauberste Lösung halte, stößt da schon bei
Bundesland-Dateien an Speichergrenzen, von der Rechenzeit ganz zu schweigen.
Dieses Verfahren habe ich probeweise implementiert, und es funktioniert bei
kleinen osm-Dateien für ein Gebiet mit etwa 20x20 km Seitenlänge gut. Aber schon
bei der baden-wuerttemberg.osm.bz2 bekomme ich einen out-of-memory-Fehler.
Als Alternative könnten die Daten mit dem Perl-Modul OSM::osm ausgelesen werden.
Da die Knoten, Wege und Relationen in dieser Reihenfolge in der osm-Datei
liegen, müsste die Datei dreimal durgegangen werden, einmal, um die Relation(en)
zu finden, dann die zugehörigen Wege und zuletzt die zugehörigen Knoten. Das
wäre wohl speichermäßig unproblematisch aber ebenfalls sehr zeitaufwendig.
Ausserdem müsste ich die gesamte Programmlogik ändern.
Beim Online-Zugriff über das API werden immer nur genau die Daten abgerufen, die
benötigt werden. Die übertragenen Datenmengen sind daher sehr gering. Außerdem
garantiert diese Methode die höchstmögliche Aktualität der Daten.
Aber wenn mir jemand ein überzeugendes Argument für das extrahieren einzelner
Relationen aus einer lokalen osm-Datei liefert, denke ich nochmals über eine
Implementierung mit OSM::osm nach.
> Der zweite Wunsch wäre, das als Ergebnis wieder eine osm-Datei ensteht.
Da ich mich weder mit dem OSM-XML-Format noch mit der Erstellung von XML aus
Perl auskenne, sieht es da noch schlechter aus als beim ersten Wunsch. Aber auch
hier würde mich der Anwendungsfall interessieren.
Gruß
Rainer
Mehr Informationen über die Mailingliste Talk-de