[OSM-dev] RuntimeError: need at least two points for linestring (way_id=619453148)

koji higuchi koji51guchi at gmail.com
Thu Nov 1 08:34:04 UTC 2018


Another error I got with another file, africa-latest.osm.pbf is as follows.

Traceback (most recent call last):
  File "D:\test.py", line 42, in <module>
    ShapeConverter().apply_file(fi, locations=True)
  File " D:\test.py", line 41, in way
    outfile.write(rec)
  File "C:\Python27\lib\site-packages\fiona\collection.py", line 341, in
write
    self.writerecords([record])
  File "C:\Python27\lib\site-packages\fiona\collection.py", line 335, in
writerecords
    self.session.writerecs(records, self)
  File "fiona\ogrext.pyx", line 1074, in
fiona.ogrext.WritingSession.writerecs
RuntimeError: Failed to write record: {'geometry': {'type': 'LineString',
'coordinates': [[-15.6476295, 11.8897502], [-15.6475324, 11.889773],
[-15.647507, 11.8896699], [-15.6476042, 11.8896471], [-15.6476295,
11.8897502]]}, 'properties': {'kind': 'yes', 'id': 130159705.0, 'name':
None}}

please help me guys.

On Thu, Nov 1, 2018 at 12:13 PM koji higuchi <koji51guchi at gmail.com> wrote:

> *I tried to extract data from .osm.pbf file and write to shapefile as
> follows:*
>
> import os, osmium, fiona
>
> fi = 'europe-latest.osm.pbf'
> fo = 'europe-latest.shp'
>
> drv = 'ESRI Shapefile'
>
> crs = {'no_defs': True, 'ellps': 'WGS84', 'datum': 'WGS84', 'proj':
> 'longlat'}
>
>  schema = {'geometry': 'LineString',
>                    'properties': {'id': 'float', 'name' : 'str', 'kind' :
> 'str'}}
>
> outfile = fiona.open(fo, 'w', driver=drv, crs=crs, schema=schema)
>
> geomfab = osmium.geom.GeoJSONFactory()
>
> class ShapeConverter(osmium.SimpleHandler):
>       def way(self, w):
>            if 'place' in w.tags:
>                rec = {'geometry' : eval(geomfab.create_linestring(w)),
>                       'properties' : {'id' : float(w.id),
>                                      'name' : w.tags.get('name'),
>                                        'kind' : w.tags['place']}}
>                outfile.write(rec)
>
> ShapeConverter().apply_file(fi, locations=True)
>
> I got the following error after extracting several contents:
>
>  rec = {'geometry' : eval(geomfab.create_linestring(w)),
> RuntimeError: need at least two points for linestring (way_id=619453148)
>
> How could I skip that erroneous id and extract data for other working ids?
>
> Your help is appreciated.
> Thank you so much.
>
> Koji
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/dev/attachments/20181101/c526576e/attachment.html>


More information about the dev mailing list