Osmosis - Changeset auf postgres importieren

Morgen,

ich habe auf meinem postgres einen Planet-Import mit osmosis vom 3. April und würde jetz gerne das aktuelle Changeset draufschieben. Leider steige ich nicht ganz durch, wie osmosis die Daten genau haben will. Versucht habe ich unter anderem

.\osmosis --rxc file="P:\OSM\changesets\changesets-120508.osm" --wpc host="host" database="osm" user="x" password="y"

Da steigt er mit

direkt wieder aus.
Warum ist das kein OSM-Changeset?

Gruß

Uff, kann es sein, dass in der changesets-latest nur die Metadaten der sich geänderten Daten enthalten sind und ohne die aktuelle Planet wertlos ist?

Du hast Change-File und Changeset-File verwechselt. Das ist was anderes.

Normalerweise haben die den Suffix .osc und stammen von planet.openstreetmap.org. Der Suffix ist nicht zwingend (Namen sind hier Schall und Rauch) aber er macht mich schon stutzig.

Gruss
walter

edit: nachgebessert

D. h. ich brauche jedes mal die aktuelle Planet + Changesets um mir das Changefile zu erstellen, welches ich dann importiere?

Ziemlich ungewöhnliche Vorgehensweise. Was hast du eigentlich genau vor?

  • was steht in der db drin?
  • was im changeset?
  • was soll nacher in der db stehen?
    natürlich nur als Beispiel.

also. Butter bei die Fische
Walter

In der DB sind die OSM Daten stand 3. April, importiert mit Osmosis. Diese Daten hätte ich nun gerne auf dem neusten Stand und wöchentlich aktualisiert.

Ich bin nach dieser Anleitung vorgegangen. Allerdings steigt er dann beim Abschnitt “Catching Up” mit

Mai 15, 2012 8:52:09 AM org.openstreetmap.osmosis.core.Osmosis run
Information: Osmosis Version 0.40.1
Mai 15, 2012 8:52:09 AM org.openstreetmap.osmosis.core.Osmosis run
Information: Preparing pipeline.
Mai 15, 2012 8:52:09 AM org.openstreetmap.osmosis.core.Osmosis run
Information: Launching pipeline execution.
Mai 15, 2012 8:52:09 AM org.openstreetmap.osmosis.core.Osmosis run
Information: Pipeline executing, waiting for completion.
Mai 15, 2012 8:52:30 AM org.openstreetmap.osmosis.core.pipeline.common.ActiveTaskManager waitForCompletion
Schwerwiegend: Thread for task 1-rri failed
org.openstreetmap.osmosis.core.OsmosisRuntimeException: Unable to read the state from the server.
        at org.openstreetmap.osmosis.replication.common.ServerStateReader.getServerState(ServerStateReader.java:105)
        at org.openstreetmap.osmosis.replication.common.ServerStateReader.getServerState(ServerStateReader.java:46)
        at org.openstreetmap.osmosis.replication.v0_6.BaseReplicationDownloader.runImpl(BaseReplicationDownloader.java:2
67)
        at org.openstreetmap.osmosis.replication.v0_6.BaseReplicationDownloader.run(BaseReplicationDownloader.java:349)
        at java.lang.Thread.run(Thread.java:722)
Caused by: java.net.ConnectException: Connection timed out: connect
        at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
        at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:75)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:337)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:198)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180).

aus. Auf welchen Server versucht er da zuzugreifen? Den aus der configuration.txt?

Hi,

diese “Anleitung” ist mMn nicht zu gebrauchen. Es handelt sich um “Tertiär-Literatur”, in der der Autor unvollständig, unter Benutzung knapper Zitate, darauf hinweist, dass es ihm nach vielen Versuchen irgendwie gelungen ist. Netter Versuch.
Erste Quelle sollte die Original-Doku des Osmosis-Autors (1) und das OSM-Wiki (2) sein, wobei ich zugeben muss, dass ich (1) erst dann richtig verstanden habe, nachdem das Zeug bei mir lief.

Ansonsten fehlen in deiner Anfrage alle relevanten Informationen: Inhalt von configuration.txt und alle Befehle, die du eingegeben hast und die komplette Fehlermeldung.

Im Prinzip bist du auf dem richtigen Weg - wesentlich besser als bei der Original-Anfrage

Gruss
Walter

  1. http://wiki.openstreetmap.org/wiki/Osmosis/Detailed_Usage#Replication_Tasks
  2. http://wiki.openstreetmap.org/wiki/Planet.osm/diffs

eventuell haben die Kollegen noch nen besseren Text im wiki - bin gerade knapp mit Zeit :frowning:

Also die Befehle bisher waren

.\osmosis --rrii workingDirectory="C:\Daten\OSM\Changesets\Daily"
.\osmosis --rri workingDirectory="C:\Daten\OSM\Changesets\Daily" --sc --wpc host="localhost" user="y" database="osm" password="x"

state.txt:

configuration.txt:

Hier die komplette Ausgabe:

PS C:\Daten\Tools\osmosis-0.40.1\bin> .\osmosis --rri workingDirectory="C:\Daten\OSM\Changesets\Daily" --sc --wpc host="
localhost" user="x" database="osm" password="y"
Mai 15, 2012 11:48:11 AM org.openstreetmap.osmosis.core.Osmosis run
Information: Osmosis Version 0.40.1
Mai 15, 2012 11:48:11 AM org.openstreetmap.osmosis.core.Osmosis run
Information: Preparing pipeline.
Mai 15, 2012 11:48:11 AM org.openstreetmap.osmosis.core.Osmosis run
Information: Launching pipeline execution.
Mai 15, 2012 11:48:11 AM org.openstreetmap.osmosis.core.Osmosis run
Information: Pipeline executing, waiting for completion.
Mai 15, 2012 11:48:33 AM org.openstreetmap.osmosis.core.pipeline.common.ActiveTaskManager waitForCompletion
Schwerwiegend: Thread for task 1-rri failed
org.openstreetmap.osmosis.core.OsmosisRuntimeException: Unable to read the state from the server.
        at org.openstreetmap.osmosis.replication.common.ServerStateReader.getServerState(ServerStateReader.java:105)
        at org.openstreetmap.osmosis.replication.common.ServerStateReader.getServerState(ServerStateReader.java:46)
        at org.openstreetmap.osmosis.replication.v0_6.BaseReplicationDownloader.runImpl(BaseReplicationDownloader.java:2
67)
        at org.openstreetmap.osmosis.replication.v0_6.BaseReplicationDownloader.run(BaseReplicationDownloader.java:349)
        at java.lang.Thread.run(Thread.java:722)
Caused by: java.net.ConnectException: Connection timed out: connect
        at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
        at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:75)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:337)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:198)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
        at java.net.Socket.connect(Socket.java:579)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:388)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:483)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:213)
        at sun.net.www.http.HttpClient.New(HttpClient.java:300)
        at sun.net.www.http.HttpClient.New(HttpClient.java:316)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:992)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:928)
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:846)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1296)
        at org.openstreetmap.osmosis.replication.common.ServerStateReader.getServerState(ServerStateReader.java:91)
        ... 4 more

Mai 15, 2012 11:48:33 AM org.openstreetmap.osmosis.core.Osmosis main
Schwerwiegend: Execution aborted.
org.openstreetmap.osmosis.core.OsmosisRuntimeException: One or more tasks failed.
        at org.openstreetmap.osmosis.core.pipeline.common.Pipeline.waitForCompletion(Pipeline.java:146)
        at org.openstreetmap.osmosis.core.Osmosis.run(Osmosis.java:92)
        at org.openstreetmap.osmosis.core.Osmosis.main(Osmosis.java:37)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
        at org.codehaus.classworlds.Launcher.main(Launcher.java:47)

Habe schon in den Quelltext geguckt, die Methode getServerState() scheint auf den Server aus der configuration.txt unter baseUrl angegebenen Adresse zuzugreifen zu wollen. Was er aber scheinbar auf Grund eines Timeouts nicht schafft.

Hi,
die URL hatte sich wegen der Lizenzumstellung doch geändert?
Chris

Richtig, siehe:
http://blog.osmfoundation.org/2012/04/04/api-read-write-returns/

Gruß,
Mondschein

Danke. Aber wenn ich

http://planet.openstreetmap.org/redaction-period/day-replicate/

eintrage, ändert das leider gar nichts. Gleiche Exception.

hi,

bei mir klappt das. es kommt schon mal ab und zu vor, dass es genau an dieser Stelle klemmt.

ich würde zum Testen configuration.txt etwas ändern:


baseUrl=http://planet.openstreetmap.org/redaction-period/minute-replicate
maxDownloadCount = 10
maxInterval = 600

damit holt er sich die Daten in kleineren Häppchen. Wenn es dann funktioniert, kannst du die Werte anpassen.

Gruss
Walter

p.s. Welchen Bereich des Planets willst du denn aktuell halten? Diese Methode lohnt sich eigentlich erst ab Germany aufwärts. Bei kleineren Bereichen und/oder grossen Intervallen ist ein Neu-Import einfacher.

Es haperte scheinbar an einer Proxy-Einstellung, jetz steigt er zumindest nicht mehr aus. Habe es mal mit meiner vorherigen config probier und jetz mit deiner:

Mai 15, 2012 2:52:22 PM org.openstreetmap.osmosis.core.Osmosis run
Information: Osmosis Version 0.40.1
Mai 15, 2012 2:52:23 PM org.openstreetmap.osmosis.core.Osmosis run
Information: Preparing pipeline.
Mai 15, 2012 2:52:23 PM org.openstreetmap.osmosis.core.Osmosis run
Information: Launching pipeline execution.
Mai 15, 2012 2:52:23 PM org.openstreetmap.osmosis.core.Osmosis run
Information: Pipeline executing, waiting for completion.
Mai 15, 2012 2:52:23 PM org.springframework.jdbc.core.JdbcTemplate extractReturnedResults
Information: Added default SqlReturnResultSet parameter named #result-set-1
Mai 15, 2012 2:52:23 PM org.openstreetmap.osmosis.core.Osmosis run
Information: Pipeline complete.
Mai 15, 2012 2:52:23 PM org.openstreetmap.osmosis.core.Osmosis run
Information: Total execution time: 889 milliseconds.
PS C:\Daten\Tools\osmosis-0.40.1\bin>

Er ackert kurz durch, aber passieren tut nicht wirklich etwas, außer das er mir die state.txt überschreibt und diese anschließend so aussieht:

#Tue May 15 14:55:52 CEST 2012
sequenceNumber=1268792
timestamp=2012-04-01T08\:07\:02Z

Ich würde gerne die gesamte Erde etwa wöchentlich aktuell halten.

Etwas komisch. Da muss ich leider passen. Ich hab aber das Gefühl, dass er sich aufgrund des State-Files nur wenige Daten besorgt. Da muss du noch etwas rumdrehen.

Das wäre dann ein riesiger Update; besser erscheint es mir, auf kleiner Intervalle umzustellen und die Sache permanent laufen zu lassen.
Aber erst mal überhaupt hinkriegen.
Gruss
walter

p.s. mit welchen Schema hast du denn den Planet importiert? Simple, Snapshot oder osm2pgsql?

Habe mal auf Minute umgestellt, da läd er was runter und steigt dann mit einer DuplicateKeyException aus:

Mai 16, 2012 10:03:02 AM org.openstreetmap.osmosis.core.pipeline.common.ActiveTaskManager waitForCompletion
Schwerwiegend: Thread for task 1-rri failed
org.springframework.dao.DuplicateKeyException: PreparedStatementCallback; SQL [INSERT INTO actions(data_type, action, id
) VALUES(?, ?, ?)]; FEHLER: doppelter Schl³sselwert verletzt Unique-Constraint ╗pk_actions½
  Detail: Schl³ssel ╗(data_type, id)=(W, 160148223)½ existiert bereits.; nested exception is org.postgresql.util.PSQLExc
eption: FEHLER: doppelter Schl³sselwert verletzt Unique-Constraint ╗pk_actions½
  Detail: Schl³ssel ╗(data_type, id)=(W, 160148223)½ existiert bereits.
        at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTrans
lator.java:241)
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptio
nTranslator.java:72)

Ich verstehe nur nicht, warum die bei der actions-Table auftritt… Da steht nämlich noch gar nichts drin.

Die state.txt erstelle ich immer mit diesem Tool. Gibt es da vielleicht eine Alternative?

Langsam verzweifle ich hier…

PgSnapshot.

Nachtrag: Wenn ich die actions-Table lösche, arbeitet er etwa 10 Sekunden und erklärt dann sein Vorhaben für erfolgreich abgeschlossen…

Mit der State von hier scheint es jetzt zu laufen. Zumindest ein paar minutes haben nach dieser Anleitung geklappt, jetz versuche ich alles auf den neusten Stand zu bringen.

Danke an Alle.

Der Tool ist schon ok - wenn die leidige Übergangszeit zur neuen Lizenz endlich rum ist. Derzeit sind ja viele Pfade “verbogen”.

Kommt ganz, ganz selten mal vor; die Tabelle wird aber wirklich nur während eines Updates gebraucht. truncate actions stört aber nicht.

welches os verwendest du? für linux hätte ich nen kleinen script.

Gruss
walter

Truncate hätte nicht viel bewirkt, da sie ja bereits leer war. Aber Mittlerweile scheint es ja zu klappen, das Update läuft nun seit ner Stunde. Mal sehen wann er fertig ist.