osmosis - eine Frage

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%


Was mache ich falsch bzw. wo liegt der Fehler?

Vielen Dank für eure Hilfe!

mfg
TiberiusNero

hi,

ich hab den bzip “in verdacht”.

ich würde mich so rantasten:

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??

Vielen Dank für Eure sehr schnellen Antworten:

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.

mfg

TiberiusNero

hi,

ohne script sollte nicht heissen “ohne optionen”.

d.h. -Xmx700m
sollte z.b. angegeben werden. und der class-pfad wohl auch.

ich neige bei solchen problemen dazu, erst mal alles wegzulassen, was verwirren könnte.
funktionuert denn der reine copy schon?

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.

Ein Beispiel:
java -Xmx1G -cp .\osmosis.jar;.\lib\default\commons-logging-1.1.1.jar;.\lib\default\commons-compress-1.0.jar;.\lib\default\jpf-1.5.jar org.openstreetmap.osmosis.core.Osmosis --read-xml enableDateParsing=no file=.\germany_temp.osm --bounding-polygon file=.\harz_osmosis_poly.txt clipIncompleteEntities=true --write-xml file=.\harz_current.osm

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.

Vielen Dank für die Hilfen!

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.

mfg

TiberiusNero