Ich möchte mit OSMOSIS einen Teil aus der Europakarte extrahieren, um mir damit für we-travel eine neue Deutschlandkarte zu generieren. Ich habe mir dazu die vorhandenen .bat –Datei mit einigen Ergänzungen die ich hier im Forum und woanders gefunden habe, aufbereitet.
Nach dem Aufruf startet OSMOSIS und bricht nach kurzer Zeit mit folgender Fehlermeldung wieder ab.
20.04.2010 12:46:36 org.openstreetmap.osmosis.core.Osmosis run
INFO: Osmosis Version 0.34
20.04.2010 12:46:36 org.openstreetmap.osmosis.core.Osmosis run
INFO: Preparing pipeline.
20.04.2010 12:46:36 org.openstreetmap.osmosis.core.Osmosis run
INFO: Launching pipeline execution.
20.04.2010 12:46:36 org.openstreetmap.osmosis.core.Osmosis run
INFO: Pipeline executing, waiting for completion.
20.04.2010 12:46:36 org.openstreetmap.osmosis.core.pipeline.common.ActiveTaskManager waitForCompletion
SCHWERWIEGEND: Thread for task 1-read-xml failed
java.lang.NoClassDefFoundError: org/apache/commons/compress/compressors/bzip2/BZip2CompressorInputStream
at org.openstreetmap.osmosis.core.xml.v0_6.XmlReader.run(XmlReader.java:102)
at java.lang.Thread.run(Unknown Source)
20.04.2010 12:46:36 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:85)
at org.openstreetmap.osmosis.core.Osmosis.main(Osmosis.java:30)
Ich benutze WinXP mit java Build 1.6.0_03-b05 sowie osmosis v0.34.
Die bat sieht so aus:
@ECHO OFF
IF EXIST %ALLUSERSPROFILE%\osmosis.bat CALL %ALLUSERSPROFILE%\osmosis.bat
IF EXIST %USERPROFILE%\osmosis.bat CALL %USERPROFILE%\osmosis.bat
IF "%JAVACMD%"=="" set JAVACMD=java
SET JAVACMD_OPTIONS=-Xmx700m
@echo JAVACMD_OPTIONS=%JAVACMD_OPTIONS%
set SAVEDIR=%CD%
set MYAPP_HOME=%~dp0..
@echo myapp ist installiert in %MYAPP_HOME%
@echo SAVEDIR ist %SAVEDIR%
@echo ON
cd %MYAPP_HOME%
set MYAPP_HOME=%CD%
@echo off
@echo on
cd %SAVEDIR%
@echo off
set MAINCLASS=org.openstreetmap.osmosis.core.Osmosis
set quelldaten=europe.osm
set zieldaten=deutschland.osm
set OSMOSIS_OPTIONS=--read-xml %quelldaten% --tee 1 --bounding-box top=56 left=4 bottom=47 right=16 --write-xml %zieldaten%
SET EXEC=%JAVACMD% %JAVACMD_OPTIONS% -cp %MYAPP_HOME%\osmosis.jar;%MYAPP_HOME%\lib\default\aopalliance-1.0.jar;%MYAPP_HOME%\lib\default\bzip2-20090327.jar;%MYAPP_HOME%\lib\default\commons-dbcp-1.2.2.jar;%MYAPP_HOME%\lib\default\commons-logging-1.1.1.jar;%MYAPP_HOME%\lib\default\commons-pool-1.3.jar;%MYAPP_HOME%\lib\default\jpf-1.5.jar;%MYAPP_HOME%\lib\default\mysql-connector-java-5.1.10.jar;%MYAPP_HOME%\lib\default\postgis-1.3.2.jar;%MYAPP_HOME%\lib\default\postgresql-8.3-603.jdbc4.jar;%MYAPP_HOME%\lib\default\spring-beans-2.5.6.SEC01.jar;%MYAPP_HOME%\lib\default\spring-context-2.5.6.SEC01.jar;%MYAPP_HOME%\lib\default\spring-core-2.5.6.SEC01.jar;%MYAPP_HOME%\lib\default\spring-jdbc-2.5.6.SEC01.jar;%MYAPP_HOME%\lib\default\spring-tx-2.5.6.SEC01.jar;%MYAPP_HOME%\lib\default\stax2-api-3.0.1.jar;%MYAPP_HOME%\lib\default\woodstox-core-lgpl-4.0.3.jar;%MYAPP_HOME%\lib\default\commons-codec-1.4.jar;%MYAPP_HOME%\lib\default\plexus-classworlds-2.2.2.jar %MAINCLASS% %OSMOSIS_OPTIONS%
%EXEC%
a) ein kleineres file nehmen
b) file selber entpacken
c) nur read und write xml nehmen. macht dann copy. damit sieht man, ob die quelle sauber ist.
d) befehl ohne script aufrufen.
danach wieder “tunen”
gruss
wambacher.
noch nen kleiner tip: osmosis ist äußerst “sensibel” was die reihenfolge der optionen angeht. ist hier zwar nicht der fall, könnte später aber wichtig werden.
Es scheint ein Fehler beim entpacken zu sein. Zumindest sagt er, dass irgendwas bz2-artiges fehlt.
Allerdings hast du als Quelldatei kein bz2 dran. Ist die Datei entpackt??
Ich habe das auch schon ohne script probiert, doch da funktioniert die Speicherzuweisung für java nicht. Da bricht osmosis nach 5min mit einem Speicherfehler ab.
Die Daten habe ich schon entpackt und als Quelle benutze ich die europe.osm vom 23.03.2010.
Das osmosis ein kleines "Sensibelchen ist habe ich auch schon bemerkt. Die bat ist nach einigen Tagen intensiven Suchens im Netz entstanden, auch aufgrund der Fehlersuche. Aber dazu war nichts zu finden.
Hat zwar nichts mit deinem aktuellen Problem zutun, aber du solltest mal dein java auf den neusten Stand bringen.
set input=
set output=
set options=
set osmosis_path=
java -Xmx1000M -cp %osmosis_path%osmosis.jar;%osmosis_path%lib\default\commons-compress-1.0.jar;%osmosis_path%lib\default\commons-logging-1.1.1.jar;%osmosis_path%lib\default\jpf-1.5.jar org.openstreetmap.osmosis.core.Osmosis --fast-read-xml-0.6 file=%input% %options% --write-xml file=%output%
So sieht mein Osmosis-Aufruf aus. Du musst nur im Kopf des Skripts die Variablen mit den Werten füllen. osmosis_path muss mit \ enden.
Die Ordnerstruktur sieht bei mir so aus.
osmosis.jar
lib
-default
-commons-compress-1.0.jar
-commons-logging-1.1.1.jar
-jpf-1.5.jar
Meine Osmosis-Aufrufe entsprechen so ziemlich denen von aighes. Nur die Pfade und Werte packe ich zumeist direkt in den Programmaufruf. Die Ordnerstruktur ist genauso wie bei aighes.
Neben osmosis.jar sollten die von aighes und mir im Aufruf genannten drei Bibliotheken (commons-logging…, commons.compress…, jpf…) für die meisten Osmosis-Operationen ausreichen.
Der Vollständigkeit halber solltest Du zuerst aber mal Deine Java-Umgebung aktualisieren. Du hast Build 3, für Windows ist Build 20(!) aktuell, siehe http://java.sun.com/javase/downloads/index.jsp. Ich glaube zwar nicht, dass es daran liegt. Aber sicher ist sicher. Hier kann man dies aufgrund der vielen bekannten Sicherheitslücken veralterer Java-Versionen sogar wörtlich nehmen. Erst neuere Java-Versionen aktualisieren sich dabei im gleichen Ordner. Ältere bleiben ggf. parallel bestehen. Du solltest also erst die aktuelle Version herunterladen, dann die alte deinstallieren, danach ggf. den Rechner neu starten und erst als letztes die aktuelle Version installieren.
Es läuft jetzt.
Zum einen hat die commons-compress-1.0.jar gefehlt und zum anderen war irgendwo “so ein dreckiges Leerzeichen” dazwischengerutscht. Ich habe den Aufruf der Bibliotheken neu gemacht, egal ob ich alle Dateien brauche oder nicht. Und im Moment tut es.