Hallo,
ich bin normalerweise kein Freund von Doppel-Posts, allerdings scheint die englische ‘Questions and Answers’ Sektion nicht so gut besucht zu sein wie das deutsche Forum. Deshalb versuche ich es nochmal hier. Mein Anliegen ist das folgende:
Ich bin gerade dabei, xml Extrakte mittels des dump bulk-load Ansatzes in Postgres zu importieren. Bis jetzt hat das ohne Probleme funktioniert, d.h. die verwendete Toolchain leistet das Gewünschte. Die Extrakte habe ich bisher von der GeoFabrik bezogen. Jetzt will ich allerdings von den vorgenerierten Extrakten weg und nur die Daten in einer von mir definierten Polygonregion importieren. Das funktioniert ebenfalls ohne Probleme, solange ich mit den Daten der Geofabrik arbeite. Ein Beispiel:
C:\Program Files\osmosis\bin>osmosis.bat --read-xml file=C:\osmosis\germany-latest.osm.bz2 --bounding-polygon file=C:\osmosis\bayern.poly --write-pgsql-dump directory=C:\osmosis\20131103_bayern
Jan 15, 2015 10:27:53 AM org.openstreetmap.osmosis.core.Osmosis run
INFO: Osmosis Version 0.43.1
Jan 15, 2015 10:27:53 AM org.openstreetmap.osmosis.core.Osmosis run
INFO: Preparing pipeline.
Jan 15, 2015 10:27:53 AM org.openstreetmap.osmosis.core.Osmosis run
INFO: Launching pipeline execution.
Jan 15, 2015 10:27:53 AM org.openstreetmap.osmosis.core.Osmosis run
INFO: Pipeline executing, waiting for completion.
[...]
Mir ist bewusst, dass auf Geofabrik schon ein Bayern Extrakt existiert und dass deshalb das Ausschneiden aus Germany nicht viel Sinn macht. Ich habe das auch nur testweise gemacht um die verwendete Toolchain zu testen. Später will ich wie gesagt auf ein von mir definiertes Polygon umschwenken.
Sobald ich den Germany Extrakt der Geofabrik durch das volle planet.osm File ersetzte, starten die Probleme. Ich bekomme dann einen ‘Unable to parse xml file’ Fehler. Wieso dieser Fehler auftritt, kann ich mir nicht erklären. Sowohl die Extrakte von der Geofabrik als auch das planet.osm File sind im *.osm.bz2 Format, d.h. xml. Für mich deutet das drauf hin, dass es einen Unterschied zwischen den Geofabrik Extrakten und den planet.osm Files auf planet.openstreetmap.org geben muss. Hier der genaue Fehler:
C:\Program Files\osmosis\bin>osmosis.bat --read-xml file=C:\osmosis\planet-141008.osm.bz2 --bounding-polygon file=C:\osmosis\bayern.poly --write-pgsql-dump directory=C:\osmosis\20131103_bayern
Jan 15, 2015 10:34:03 AM org.openstreetmap.osmosis.core.Osmosis run
INFO: Osmosis Version 0.43.1
Jan 15, 2015 10:34:03 AM org.openstreetmap.osmosis.core.Osmosis run
INFO: Preparing pipeline.
Jan 15, 2015 10:34:03 AM org.openstreetmap.osmosis.core.Osmosis run
INFO: Launching pipeline execution.
Jan 15, 2015 10:34:03 AM org.openstreetmap.osmosis.core.Osmosis run
INFO: Pipeline executing, waiting for completion.
Jan 15, 2015 10:34:04 AM org.openstreetmap.osmosis.core.pipeline.common.ActiveTask
Manager waitForCompletion
SEVERE: Thread for task 1-read-xml failed
org.openstreetmap.osmosis.core.OsmosisRuntimeException: Unable to parse xml file C:\osmosis\planet-141008.osm.bz2. publicId=(null), ystemId=(null), lineNumber=3956, columnNumber=223.
at org.openstreetmap.osmosis.xml.v0_6.XmlReader.run(XmlReader.java:116)
at java.lang.Thread.run(Unknown Source)
Caused by: org.xml.sax.SAXParseException; lineNumber: 3956; columnNumber: 223; XML document structures must start and end within the same entity.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
[...]
Der Fehler ‘XML document structures must start and end within the same entity’ tritt unmittelbar nach Start von osmosis auf und wie gesagt nur bei den planet.osm Files. Hat jemand eine Idee, wieso das passiert?
Einen kaputten Download kann ich ausschliessen, denn die MD5 Checksumme meiner lokalen Kopie ist korrekt:
//
// File Checksum Integrity Verifier version 2.05.
//
732620d02e2f14112b65df61120dcc9b c:\osmosis\planet-141008.osm.bz2
Und noch was interessantes: der Fehler tritt sogar noch auf, wenn ich den “–bounding-polygon” Switch weglasse. Das ist für mich insofern verwunderlich, weil doch sicher schonmal jemand mit osmosis einen OSM dump für den Import in Postgres erzeugt hat. Insofern hätte so ein Fehler doch schon längst auffallen müssen.
Die von mir verwendete Java Version ist die folgende:
C:\Program Files\osmosis\bin>java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
Allerdings ist es nach meiner Meinung extrem unwahrscheinlich, dass es an Java liegt. Denn dann dürfte germany-latest.osm.bz2 von der Geofabrik ja auch nicht funktionieren.
Edit:
Einen Unterschied gibts natürlich, nämlich die Größe der Files. Allerdings bringt auch ein ‘set JAVACMD_OPTIONS=“-Xmx16G”’ vor dem Aufruf von osmosis keine Besserung.
Grüße,
Pete.