x

OSM Composer: XMLStreamException: ParseError at ... Pemature EOF


  1. OSM Composer: XMLStreamException: ParseError at ... Pemature EOF · WrongWayGC (Gast) · 17.02.2010 08:10 · [flux]

    Hallo,

    beim Download von Kartendaten per OSM Composer (V0.81, Linux) sehe ich regelmäßig die folgende Fehlermeldung:

    Downloading␣http://api.openstreetmap.org/api/0.6/map?bbox=11.799999999999997,49.70000000000001,11.8,49.8
    javax.xml.stream.XMLStreamException:␣ParseError␣at␣[row,col]:[4057,57]
    Message:␣Premature␣EOF
    

    Dementsprechend(?) weist die später generierte Karte eine ganze Reihe von "Löchern" auf, d.h., es fehlen in bestimmten Bereichen Straßen, Wege, usw. Was mache ich oder was macht der OSM Composer hier falsch?


    • Re: OSM Composer: XMLStreamException: ParseError at ... Pemature EOF · Nop (Gast) · 17.02.2010 14:14 · [flux]

      Das weist auf unvollständige Daten durch abgebrochene Downloads hin.


    • Re: OSM Composer: XMLStreamException: ParseError at ... Pemature EOF · WrongWayGC (Gast) · 17.02.2010 20:27 · [flux]

      Kann ich irgendwie genauere Information dazu generieren lassen? Ich sehe zwar ein paar wenige HTTP 400, aber das sind Statuscodes bei denen überhaupt keine Übertragung stattfindet -- bis zur Zeile 4000undwas, wie oben in der Fehlermeldung genannt, reicht das nicht. 🙁


    • Re: OSM Composer: XMLStreamException: ParseError at ... Pemature EOF · Nop (Gast) · 17.02.2010 20:41 · [flux]

      Du findest mehr infos in der Datei errorlog.txt. Mit dem Stacktrace dazu könnte ich mehr sagen.

      bye
      Nop


    • Re: OSM Composer: XMLStreamException: ParseError at ... Pemature EOF · WrongWayGC (Gast) · 17.02.2010 21:21 · [flux]

      Ups, auf meine Konsole hätte ich ja ruhig schauen können (*schäm*). Der 400er taucht dort wie folgt auf:

      17.02.10␣21:10␣java.io.IOException:␣Server␣returned␣HTTP␣response␣code:␣400␣for␣URL:␣http://api.openstreetmap.org/api/0.6/map?bbox=11.2,49.300000000000004,11.299999999999999,49.400000000000006
      17.02.10␣21:10␣Exception␣downloading:␣http://api.openstreetmap.org/api/0.6/map?bbox=11.2,49.300000000000004,11.299999999999999,49.400000000000006
      java.io.IOException:␣Server␣returned␣HTTP␣response␣code:␣400␣for␣URL:␣http://api.openstreetmap.org/api/0.6/map?bbox=11.2,49.300000000000004,11.299999999999999,49.400000000000006
      at␣sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1269)
      at␣java.net.URL.openStream(URL.java:1029)
      at␣nop.osm.DataSegment.gatherData(DataSegment.java:43)
      at␣nop.osm.DataDownloader$DataJob.run(DataDownloader.java:179)
      at␣java.lang.Thread.run(Thread.java:636)
      

      Die Parser-Fehler kommen ja erst später:

      17.02.10␣21:14␣javax.xml.stream.XMLStreamException:␣ParseError␣at␣[row,col]:[1054,111]
      Message:␣Premature␣EOF
      17.02.10␣21:14␣Exception␣reading␣data␣from␣downloaded␣file
      javax.xml.stream.XMLStreamException:␣ParseError␣at␣[row,col]:[1054,111]
      Message:␣Premature␣EOF
      at␣com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:582)
      at␣nop.osm.OSMInputFile.getNext(OSMInputFile.java:154)
      at␣nop.osmc.generator.RegionMapper.downloadRegion(RegionMapper.java:107)
      at␣nop.osmc.generator.Mapper.generate(Mapper.java:186)
      at␣nop.osmc.MapComposer$12.act(MapComposer.java:361)
      at␣nop.gui.MenuThreadAction.run(MenuThreadAction.java:27)
      at␣java.lang.Thread.run(Thread.java:636)
      

      Im Log steht ja in diesem Fall das Gleiche drin.


    • Re: OSM Composer: XMLStreamException: ParseError at ... Pemature EOF · Nop (Gast) · 17.02.2010 23:21 · [flux]

      Merkwürdig. Ich glaube nicht, daß die beiden zusammenhängen.

      Ein Code 400 bedeutet, daß die angefragte Region zu groß ist. Dabei werden aber gar keine Daten geschickt, daß heißt es sollte auch kein verstümmeltes File entstehen können.

      bye
      Nop


    • Re: OSM Composer: XMLStreamException: ParseError at ... Pemature EOF · Augustus Kling (Gast) · 18.02.2010 02:03 · [flux]

      Die Anfrage für oben genannte URL liefert mir mit HTTP Code 400:
      Content-Type: text/html
      Error: You requested too many nodes (limit is 50000). Either request a smaller area, or use planet.osm
      Transfer-Encoding: chunked
      Date: Thu, 18 Feb 2010 00:49:17 GMT
      Server: lighttpd/1.4.22

      <html><head><title>Bad Request</title></head><body><p>You requested too many nodes (limit is 50000). Either request a smaller area, or use planet.osm</p></body></html>

      Es werden dabei offensichtlich Daten geschickt – nämlich die Fehlermeldung. Jedoch scheinen die beiden Exceptions nichts miteinander zu tun zu haben weil sich die Uhrzeiten unterscheiden und außerdem keine Zeile 1054 in der Fehlermeldung vom Server existiert.

      Kannst du den Inhalt der Datei lesen bei der Xerces abbricht? Falls ja, wie lauten die letzten Zeilen?


    • Re: OSM Composer: XMLStreamException: ParseError at ... Pemature EOF · WrongWayGC (Gast) · 18.02.2010 07:35 · [flux]

      Wenn ich wüsste, auf welcher Datei Xerces konkret dann arbeitet, könnte ich da weitere Informationen geben. Hier müsste mir Nop mit Informationen helfen, wie ich das verfolgen kann. Wenn das jetzt Open Source wäre, dann hätte ich schon längst Eclipse angeworfen und selbst nachverfolgt, aber so muss das halt wieder Stille Post werden. 😉


    • Re: OSM Composer: XMLStreamException: ParseError at ... Pemature EOF · Oberoner (Gast) · 18.02.2010 13:14 · [flux]

      Hallo,

      ich kann oben genannte Fehler von WrongWayGC ebenfalls bestätigen. Ich versuche schon seit Tagen vergeblich mit dem OSM Composer 0.81 eine aktuelle Karte von Madeira zu erstellen.

      18.02.10 12:29 javax.xml.stream.XMLStreamException: ParseError at [row,col]:[101
      93,22]
      Message: Premature EOF
      18.02.10 12:29 Exception reading data from downloaded file
      javax.xml.stream.XMLStreamException: ParseError at [row,col]:[10193,22]
      Message: Premature EOF
      at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.nextTag(Unknown Source)
      at nop.osm.OSMWay.readNodes(OSMWay.java:75)
      at nop.osm.OSMWay.<init>(OSMWay.java:29)
      at nop.osm.OSMInputFile.getNext(OSMInputFile.java:134)
      at nop.osmc.generator.RegionMapper.downloadRegion(RegionMapper.java:107)
      at nop.osmc.generator.Mapper.generate(Mapper.java:186)
      at nop.osmc.MapComposer$12.act(MapComposer.java:361)
      at nop.gui.MenuThreadAction.run(MenuThreadAction.java:27)
      at java.lang.Thread.run(Unknown Source)

      18.02.10 12:30 Exception reading data from downloaded file
      javax.xml.stream.XMLStreamException: ParseError at [row,col]:[10194,24]
      Message: Premature EOF
      at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(Unknown Source)
      at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.nextTag(Unknown Source)
      at nop.osm.OSMWay.readNodes(OSMWay.java:75)
      at nop.osm.OSMWay.<init>(OSMWay.java:29)
      at nop.osm.OSMInputFile.getNext(OSMInputFile.java:134)
      at nop.osmc.generator.RegionMapper.downloadRegion(RegionMapper.java:107)
      at nop.osmc.generator.Mapper.generate(Mapper.java:186)
      at nop.osmc.MapComposer$12.act(MapComposer.java:361)
      at nop.gui.MenuThreadAction.run(MenuThreadAction.java:27)
      at java.lang.Thread.run(Unknown Source)

      Parser-Fehler kommen nur manchmal vor, aber nach bzw während des Downloads des letzten Bereichs erscheint immer der nachfolgende BufferUnderflow-Fehler.

      18.02.10 12:30 java.nio.BufferUnderflowException
      18.02.10 12:30 Exception reading relations
      java.nio.BufferUnderflowException
      at java.nio.Buffer.nextGetIndex(Unknown Source)
      at java.nio.DirectByteBuffer.get(Unknown Source)
      at nop.osm.OSMInputChannel.read(OSMInputChannel.java:126)
      at nop.osm.OSMInputChannel.readTag(OSMInputChannel.java:151)
      at nop.osm.OSMInputChannel.findRelations(OSMInputChannel.java:80)
      at nop.osm.OSMInputChannel.extractRelationsTo(OSMInputChannel.java:40)
      at nop.osmc.generator.RouteMapper.readRelations(RouteMapper.java:74)
      at nop.osmc.generator.RegionMapper.downloadRegion(RegionMapper.java:126)
      at nop.osmc.generator.Mapper.generate(Mapper.java:186)
      at nop.osmc.MapComposer$12.act(MapComposer.java:361)
      at nop.gui.MenuThreadAction.run(MenuThreadAction.java:27)
      at java.lang.Thread.run(Unknown Source)

      Gleicher Fehler tritt immer wieder auch bei anderen Regionen (z.B. Kanarische Inseln) auf. Hier konnte ich mir helfen, indem ich die OSM-Daten von der Seite GeoFabrik heruntergeladen habe, die Datei in den Input-Ordner von OSM Composer kopiert habe und die Datei entsprechend umbenannt habe. Danach läuft der Composer mit den Einstellungen "Kartendaten bei Bedarf laden" durch und erstellt die gewünschte Karte vollständig.

      Nächster Test war, die OSM-Daten des gewünschten Kartenausschnitts mit GroundTruth herunterzuladen und als Input-File für den Composer zu verwenden. GroundTruth lädt zwar den Bereich ohne Fehlermeldung, jedoch ist die danach mit dem Composer erstellte Karte ebenfalls fehlerhaft.

      Scheint also kein Fehler des Composers zu sein, sondern ein Fehler des Download-Servers.


    • Re: OSM Composer: XMLStreamException: ParseError at ... Pemature EOF · WrongWayGC (Gast) · 18.02.2010 13:57 · [flux]

      Das muss im engen Sinne auch kein Fehler des OSM-Composers sein. Allerdings wäre es schön, wenn wir den Fehler einkreisen und dann ggf. einen Fehlerreport "upstream" schicken könnten, sofern die Ursache bei den OSM-Servern liegt. Damit wäre dann ja gleich allen geholfen.


    • Re: OSM Composer: XMLStreamException: ParseError at ... Pemature EOF · Oberoner (Gast) · 18.02.2010 18:16 · [flux]

      Ich habe nun noch einen Test gemacht, der zu einem positiven Ergebnis führte. Der Bereich der Hauptinsel Madeira ist klein genug für einen Direkt-Download der OSM-Daten von der Karte. Auch dieser Test verlief positiv. Nachdem ich die heruntergeladene OSM-Datei in den Input-Ordner kopiert habe und die Bereichsdaten angepasst habe erstellt der Composer eine vollständige Karte.

      Es ist zu vermuten, dass der Composer und auch GroundTruth die gleiche Methode zum Download der Bereiche verwendet, die letztendlich für die auftretenden Fehler verantwortlich ist. Die GeoFabrik verwendet ein anderes Verfahren für die Erstellung ihrer Karten und die sind ok.

      Leider fehlt mir dazu die nähere Kenntnis. Vielleicht kann Nop mehr dazu sagen.