MapComposer 0.86: BufferUnderflow bei Kosmos-Aufbereitung

Moin moin,

ich bin recht neu bei MapComposer dabei und treffe prompt auf ein kleines Problem. Ich habe verschiedenste Jobs definiert, um einige europäische Länder als aktuelle Karten vorliegen zu haben. Neben Belgien, Luxemburg auch die Niederlande, Deutschland, Frankreich und ein paar mehr.

Das klappt mit MapComposer alles auch sehr gut. Wenn ich allerdings “größere” Länder auch für Kosmos aufbereiten möchte, bekomme ich eine Exception: java.nio.BufferUnderflowException. Der komplette Stack-Trace in der Konsole ist:

01.09.11 19:44 java.nio.BufferUnderflowException
01.09.11 19:44 Exception copying data files
java.nio.BufferUnderflowException
at java.nio.Buffer.nextGetIndex(Unknown Source)
at java.nio.DirectByteBuffer.get(Unknown Source)
at nop.osm.OSMInputChannel.read(OSMInputChannel.java:205)
at nop.osm.OSMInputChannel.readTag(OSMInputChannel.java:262)
at nop.osm.OSMInputChannel.findTag(OSMInputChannel.java:246)
at nop.osm.OSMInputChannel.findTag(OSMInputChannel.java:210)
at nop.osm.OSMInputChannel.findEnd(OSMInputChannel.java:179)
at nop.osm.OSMOutputChannel.merge(OSMOutputChannel.java:67)
at nop.osmc.generator.simple.IgorMapper.exportData(IgorMapper.java:92)
at nop.osmc.generator.simple.IgorMapper.exportImages(IgorMapper.java:59)

    at nop.osmc.generator.simple.KosmosMapper.generate(KosmosMapper.java:48)

    at nop.osmc.generator.Mapper.generate(Mapper.java:260)
    at nop.osmc.MapComposer$12.act(MapComposer.java:407)
    at nop.gui.MenuThreadAction.run(MenuThreadAction.java:27)
    at java.lang.Thread.run(Unknown Source)

Dabei ist die temporäre Zwischendatei, die im Kosmos-Projektverzeichnis angelegt wird (in meinem Fall Niederlande_data.tmp) exakt 2GB groß. Das sieht für mich so aus, als wäre irgendeine Variable auf 32bit beschränkt. Da es in Java meines (bescheidenen) Wissens nach keine Unterscheidung zwischen “signed” und “unsigned” gibt, könnte man das Problem möglicherweise durch Verwendung eines größeren Datentyps lösen.

Ich benutze übrigens ein 64-Bit-Java, ich starte mapComposer auch mit der start_x64.bat (habe Win7 Ultimate 64bit mit 8GB Speicher).

Ist das tatsächlich ein Problem im mapComposer oder liegt das doch eher in Java verborgen?

Um das ganze Problem bei Bedarf nachstellen zu können, hier ein paar Daten aus mapComposer.
Die Region “Niederlande” habe ich wie folgt definiert: Länge 3.3-7.3, Breite 51.1-53.8, Ausschnit aus Planet-Datei netherlands.osm. Konturen-Basis 10m, normale Linien 50m, Hauptlinien 100m.

Der Job “Niederlande bauen” hat folgende Daten:
Polygon aus, angecklick sind “Daten holen”, “Garmin” und “Kosmos”, und alle DropDown-Boxen stehen auf “bei Bedarf”. Lediglich die Küstenlinien sind aus. Zudem sind angeklickt: Daten verarbeiten “schnell (nur für sortierte Daten)”, Garmin “Kachelaufteilung berechnen” und “abrunden” sowie “Image für Gerät”.

Auf der Parameterseite habe ich den Node-Cache auf 10000 erhöht und sonst alles gelassen wie es war - natürlich habe ich Namen, ID etc. vergeben. Das Kosmos-Projektverzeichnis ist auch gesetzt.

Vielleicht kann ja jemand helfen oder mir erklären, was da schief geht - meine Vermutung habe ich ja oben schon beschrieben.