Ich habe ein Feature Collection
von Polygons
und MultiPolygons
und ich muß es zuerst in einer temporären Datei schreiben, um sie dann mit geopandas.GeoDataFrame.from_file laden (tmp_json_file), ich suche eine Möglichkeit, dies ohne die temporäre Datei zu tun. Ich habe versucht, geopandas.GeoDataFrame.from_feature()
zu verwenden, es funktioniert ziemlich gut für Feature Collection von einfachen Polygon, aber ich kann es nicht für Feature Collection
von Polygons
und MultiPolygons
arbeiten, dachte ich über etwas wie unten, aber es funktioniert noch nicht.Wie eine Feature-Sammlung von einem
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'])
Die GeoJSON von einer API genommen wird, das Gebiet der Rückkehr (einige Gebiet werden von einem einzigen Polygon, andere durch eine Menge von Polygonen (formatiert als ein Multi) modelliert.
Die GeoJSON strukturiert sind wie folgt : http://pastebin.com/PPdMUGkY
ich bin von der Funktion über den folgenden Fehler erhalten: dieses
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()
Bitte geben Sie ein reproduzierbares Beispiel an (http://stackoverflow.com/help/mcve). Was ist 'json_data'? Wenn es bereits eine FeatureCollection ist, warum erstellen Sie eine FeatureCollection? Welchen Fehler bekommen Sie, wenn Sie das an 'GeoDataFrame.from_features' liefern? – joris
Ja sicher, ich habe meinen Beitrag bearbeitet – kwn