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 _______________________________________________ Talk-de mailing list [email protected] http://lists.openstreetmap.org/listinfo/talk-de

