Seite 1 von 1

Problem mit osmread Installation

Verfasst: Freitag 31. Januar 2014, 11:25
von trudikampfschaf
Hi,

Ich sitze z.Zt. an einem Projekt in dem ich eine Open Street Map parsen soll, z.B. nach Straßenbahn Linien. Das ganze passiert natürlich in Python.

Zur Durchführung des ganzen hab ich mir osmread ausgeguckt. Die Installation per pip gibt keine Fehlermeldung:
Requirement already satisfied (use --upgrade to upgrade): osmread in /usr/local/lib/python2.7/dist-packages/osmread-0.1dev-py2.7.egg
Requirement already satisfied (use --upgrade to upgrade): argparse in /usr/lib/python2.7 (from osmread)
Requirement already satisfied (use --upgrade to upgrade): protobuf in /usr/lib/python2.7/dist-packages (from osmread)
Requirement already satisfied (use --upgrade to upgrade): lxml in /usr/lib/python2.7/dist-packages (from osmread)
Cleaning up...
Meine Python Version (Ubuntu 13.10):
python -V
Python 2.7.5+
Wenn ich nun das Beispiel Programm von der offiziellen Website auf eine kleine eigene map.osm ausführe erhalte ich folgenden Fehler:
python2 osm.py
Traceback (most recent call last):
File "osm.py", line 4, in <module>
for entity in parse_file('map2.osm'):
File "/usr/local/lib/python2.7/dist-packages/osmread-0.1dev-py2.7.egg/osmread/__init__.py", line 25, in parse_file
for e in parser.parse_file(filename):
File "/usr/local/lib/python2.7/dist-packages/osmread-0.1dev-py2.7.egg/osmread/parser/__init__.py", line 18, in parse_file
for e in self.parse(fp):
File "/usr/local/lib/python2.7/dist-packages/osmread-0.1dev-py2.7.egg/osmread/parser/xml.py", line 34, in parse
for event, elem in context:
File "iterparse.pxi", line 484, in lxml.etree.iterparse.__next__ (src/lxml/lxml.etree.c:114140)
File "iterparse.pxi", line 537, in lxml.etree.iterparse._read_more_events (src/lxml/lxml.etree.c:114720)
File "parser.pxi", line 627, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:84615)
lxml.etree.XMLSyntaxError: None
Das Programm:

Code: Alles auswählen

from osmread import parse_file, Way

highway_count = 0
for entity in parse_file('map.osm'):
    if isinstance(entity, Way) and 'highway' in entity.tags:
 	   highway_count += 1
print "%d highways found" % highway_count
Mittlerweile bin ich mit meinem Latein am Ende und würde mich riesig freuen, falls mir einer mein Problem zeigen / lösen könnte. Falls andere Infos gebraucht werden kurz bescheid sagen ;)
Danke schonmal!

Edit: die Map die ich nutze funktioniert bei einem Kumpel mit dem gleichen Programm problemlos

Re: Problem mit osmread Installation

Verfasst: Freitag 31. Januar 2014, 11:43
von Leonidas
Verifizier mal die XML-Datei ob sie wohlgeformtes XML ist. Das schaut als als würde lxml drüberstolpern, weil das XML falsch ist.

Re: Problem mit osmread Installation

Verfasst: Freitag 31. Januar 2014, 11:50
von BlackJack
@trudikampfschaf: Ansonsten könnte das vielleicht auch dieser Bug sein: https://bugs.launchpad.net/ubuntu/+sour ... ug/1201849

Probier den Code dort mal ob der bei Dir auch auf die Nase fällt.

Re: Problem mit osmread Installation

Verfasst: Freitag 31. Januar 2014, 12:06
von trudikampfschaf
BlackJack hat geschrieben:@trudikampfschaf: Ansonsten könnte das vielleicht auch dieser Bug sein: https://bugs.launchpad.net/ubuntu/+sour ... ug/1201849

Probier den Code dort mal ob der bei Dir auch auf die Nase fällt.
Nein, der läuft ohne Fehler

Re: Problem mit osmread Installation

Verfasst: Freitag 31. Januar 2014, 12:21
von trudikampfschaf
Leonidas hat geschrieben:Verifizier mal die XML-Datei ob sie wohlgeformtes XML ist. Das schaut als als würde lxml drüberstolpern, weil das XML falsch ist.
map.osm:2: validity error : Validation failed: no DTD found !
streetmap.org/copyright" license="http://opendatacommons.org/licenses/odbl/1-0/"

Document map.osm does not validate
Der Zeiger verweist auf das " am Ende. Was sagt mir das? Ok, es ist nicht valide, aber liegt das vll an dem Open Street Map Format (habe nicht so viel Ahnung von xml) und wieso gehts bei meinem Kumpel mit dem selben Programm und der gleichen Karte?