Hallo, Tobias Wendorff schrieb: > Wie gesagt könnte man natürlich ein Script schreiben, was die > Changesets abarbeitet und Informationen rauswirft. > Ich habe dazu vor einem Monat ein Java-Programm geschrieben, das zu einem Bereich die Changesets ausgibt, die tatsächlich in diesem Bereich etwas verändert haben. >>> Problem ist da natürlich, dass Du teilweise riesige Changesets >>> bekommst, aber das möchtest Du ja. >>> >> eigentlich nicht.
Über die API bekommt man ja alle Changesets, die mit dem gewählten Bereich eine Schnittmenge bilden, also auch die, in denen ein Bot etwas in London und in Kairo geändert hat, aber deinen Bereich unberührt lässt (Das ist der Großteil!). Das Programm geht folgendermaßen vor: 1. Es liest von http://www.openstreetmap.org/browse?bbox=[Bereich] alle Changesetnummern zwischen z.B. der Seite 10 und 38 ein und speichert die Nummern in einer DB 2. Es holt sich von der API das XML des Changesets, speichert alle darin enthaltenen Knoten in einer DB und holt sich zu jedem Weg alle Knoten, die je zu dem Weg dazugehört haben. 3. Es lädt sich die History jedes Knotens und prüft, ob der Knoten in dem Bereich liegt oder lag. Vorteil: Es markiert nur die Changesets als relevant, die auch wirklich etwas in dem Gebiet gemacht haben. D.h. es erkennt auch, wenn Knoten eines Weges verschoben wurden (innerhalb des Bereichs, aus den Bereich heraus und in den Bereich hinein) Nachteil: Laufzeit, Belastung der OSM-Server, Laufzeit, achja, Laufzeit und Belastung des API-Servers war auch noch dabei. Das Programm ist mehrere Nächte gelaufen und hat in diesen Nächten so viele Zugriffe auf Port 80 generiert wie sonst tagsüber vorhanden sind (laut munin). Problematisch war insbesondere, dass einige Changesets so groß sind, dass der Server sehr lange (mindestens 10 Minuten, gefühlte 30) brauchte, um mir das XML zu liefern. Entweder habe ich den falschen Ansatz gewählt oder einen groben Programmierfehler gemacht oder - was ich eher glaube - es gibt im Moment keine praktikable Lösung. Viele Grüße, Matthias _______________________________________________ Talk-de mailing list [email protected] http://lists.openstreetmap.org/listinfo/talk-de

