Regelmäßiges Update meiner reduzierten Postgis DB mittels osmosis

Hi zusammen!

Ich habe hier folgendes Szenario, das ich euch kurz beschreiben möchte.

In unserem Projekt benötigen wir einen Auszug aus der germany.osm, der um es konkret zu machen, lediglich Informationen zu UBahn-Linien, Stops etc. speichert.
Dazu habe ich mir einen osmosis Filter entwickelt, der auf Grundlage der von mir vorgegeben Tags die Daten stark reduziert. Im nächsten Schritt habe ich die gefilterte
OSM-Datei mit Osmosis in meine Postgis-DB importiert.

Nun die spannende Frage:
Kann ich diesen Auszug ebenfalls aktuell halten? Ich habe mich ein wenig in die osmosis Funktionen eingelesen (Initialisierung mittels --rrii etc.) und weiß jetzt aber nicht weiter. So wie ich es verstanden habe, erstellt mir osmosis ja dann Diff-Dateien, die ich grundsätzlich sofort importieren könnte, was bei mir aber nicht funktionieren wird, das ich ja nur mit gefilterten Daten (Subset der germany.osm) arbeite.

Muss ich die erstellten change-filesets nun auch wieder mit dem gleichen Filter bearbeiten oder wie kann ich die von mir gesuchte Lösung bauen?

Vielen Dank für eure Hilfe
fr

Falls hier kein osmosis-Spezie eine Antwort weiß, dann bleibt dir noch in der deutschen oder den zwei großen englischen Mailinglisten (general bzw. dev.) nachzufragen.

Doch, sollte eigentlich gehen, alles was in der DB fehlt, wird bei Änderungen einfach hinzugefügt, was gelöscht werden soll und nicht in der DB ist, kann auch nicht gelöscht werden.

Im Endeffekt wirst Du nach und nach immer mehr Obejkte außerhalb Deines Bereiches in der DB haben. Im Extermfall, wenn alle OSM-Objekte einmal angefaßt würden, hättest Du die komplette OSM-Datenbank drin.

Das wird schwierig sein. Es können z.B. in den Diffs Änderungen an Nodes oder Ways drin sein, die Deine Ways bzw. Relationen betreffen oder auch nicht, es müßte erst geprüft werden ob z.B. ein Node in einem Way vorhanden ist, der bei Dir schon in der Datenbank steht. Dieses Vorgehen wird soweit ich weiß, nicht gemacht.

Das gleiche Problem hast Du auch, wenn Du nur einen bestimmten lokalen Auszug aktuell halten willst. Ein Auweg sollen da die sogenannten Augmented_Diffs [1] bringen.

Also ist würde die Diffs einspielen und damit Leben, daß Du für Dich überflüssige Daten drin hast. Wenn die DB zu groß wird, spiele einfach wieder Dein Extrakt ein.

Christian

[1] http://wiki.openstreetmap.org/wiki/Overpass_API/Augmented_Diffs

Der Weg über parallel aktuell gehaltene OSM-Datei sollte gehen.

die germany.osm mit osmupdate aktuallisieren, mittels Germany.poly kann man nur die germany-Daten reinhauen

dann würd ich beide (alte + neue) germany.osm mit osmfilter reduzien auf die gewollten Infos.

Aus beiden gefilterten Dateien mit osmconvert ein Diff erstellen

Das Diff kannst du nun direkt in die DB reinhauemn da nur noch der gewünschte Bereich und gewünschte Infos drin sind.

Ob ein Update auf schon gefilterte OSM-Daten geht kann ich nicht sagen (da noch nie gemacht) und bringt glaub ich zeitlich nicht viel.
Osmconvert und Osmfilter erledigen die Filter+Ausschneid-Aufgaben wesentlich schneller als OSMOSIS

Osmosis würd ich dann zum reinhauen in die DB verwenden…