Hallo,

Am Mittwoch 06 Oktober 2010 schrieb Rainer Kluge:
> 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.

Wie Andre schon schrieb, man schont die API. Ich habe zum Beispiel alle 
Relationen mit admin_level=2 über die XAPI runtergeladen (zur Zeit ca. 700 
MB). Wenn ich jetzt alle diese Relationen nochmal über die API hole, lade ich 
vielleicht ca. 1 GB runter, weil ja viele Wege in zwei Relationen drin sind.
> 
> > 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.

Ich möchte gern jede Relation für sich als Bild rendern, und das kann z.B. 
mapgen.pl sehr gut.


Als generell andere Idee hatte ich schon, die 700-MB-Datei in eine Datenbank 
zu packen. Wenn ich dann "Gib mir Relation 1234 mit allen Knoten und Wegen als 
osm-Datei raus." sagen kann, wäre ich auch zufrieden. In der Datenbank 
(PostgreSQL mit Postgis) hab ich die Daten schon (nach der Anleitung im Wiki), 
bloß mit der Abfrage weiß ich noch nicht weiter. Oder kann man der lokalen 
Mapnik-Installation sagen, das er nur Relation XYZ rendern soll?

Gruß, Carsten

_______________________________________________
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de

Reply via email to