python-osm
python-osm copied to clipboard
multipolygons with multilinestring boundary segments don't work
To reproduce:
python -m osm.multipolygon -r 1111111
Error:
Traceback (most recent call last):
File "/usr/lib64/python2.7/runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/werner/osm/src/python-osm/src/osm/multipolygon.py", line 330, in <module>
mp = multipolygon(osmobj.relations[int(relation)])
File "/home/werner/osm/src/python-osm/src/osm/multipolygon.py", line 13, in __init__
self.read_relation(self.relation)
File "/home/werner/osm/src/python-osm/src/osm/multipolygon.py", line 19, in read_relation
members = self.recursive_members(relation)
File "/home/werner/osm/src/python-osm/src/osm/multipolygon.py", line 144, in recursive_members
for m in current_relation.members:
File "osm/pyosm.py", line 168, in __getattr__
return self.osm_parent.get_members(self.__members)
File "osm/pyosm.py", line 228, in get_members
obj = self.ways[mid]
KeyError: 28692993
see also http://www.openstreetmap.org/browse/relation/1111111
In src/osm/multipolygon:
elif relation:
osmfile = urllib.urlopen('%s/relation/%s/full' %(API,relation))
osmobj = pyosm.OSMXMLFile(osmfile)
This command does not download the member elements of subrelations. Thus we run into the missing element error / KeyError.