0

そして、最初Feature Collectionに一時ファイルに書き込んでから geopandas.GeoDataFrame.from_file(tmp_json_file) でロードする必要があります。一時ファイルなしでそれを行う方法を探しています。を使用しようとしましたが、単純な Polygon の Feature Collection ではかなりうまく機能しますが、とでは機能しません。以下のようなことを考えていましたが、まだ機能していません。PolygonsMultiPolygonsgeopandas.GeoDataFrame.from_feature()Feature CollectionPolygonsMultiPolygons

features_collection = []

for feature in json_data['features']:
   tmp_properties = {'id': feature['properties']['id']}

   if is_multipolygon (feature):
       tmp = Feature(geometry=MultiPolygon((feature['geometry']['coordinates'])), properties=tmp_properties)
   else: 
       Feature(geometry=Polygon((feature['geometry']['coordinates'])), properties=tmp_properties)
   features_collection.append(tmp)

collection = FeatureCollection(features_collection)

return geopandas.GeoDataFrame.from_features(collection['features'])

GeoJSON は API から取得され、テリトリーを返します (一部のテリトリーは 1 つのポリゴンでモデル化され、他のテリトリーは一連のポリゴン (MultiPolygon としてフォーマット) でモデル化されます)。

GeoJSON は次のように構成されています: http://pastebin.com/PPdMUGkY

上記の関数から次のエラーが発生します。

Traceback (most recent call last):
  File "overlap.py", line 210, in <module>
    print bdv_json_to_geodf(contours_bdv)
  File "overlap.py", line 148, in json_to_geodf
    return geopandas.GeoDataFrame.from_features(collection['features'])
  File "/Library/Python/2.7/site-packages/geopandas/geodataframe.py", line 179, in from_features
    d = {'geometry': shape(f['geometry'])}
  File "/Library/Frameworks/GEOS.framework/Versions/3/Python/2.7/site-packages/shapely/geometry/geo.py", line 40, in shape
    return MultiPolygon(ob["coordinates"], context_type='geojson')
  File "/Library/Frameworks/GEOS.framework/Versions/3/Python/2.7/site-packages/shapely/geometry/multipolygon.py", line 64, in __init__
    self._geom, self._ndim = geos_multipolygon_from_py(polygons)
  File "/Library/Frameworks/GEOS.framework/Versions/3/Python/2.7/site-packages/shapely/geometry/multipolygon.py", line 138, in geos_multipolygon_from_py
    N = len(ob[0][0][0])
TypeError: object of type 'float' has no len()
4

1 に答える 1