将 GeoJSON 加载到 GeoPandas Dataframe - 变形或给出“引发类型错误”
Load GeoJSON into GeoPandas Dataframe - desformated or gives `raise a TypeError`
我正在尝试将一个简单的 geojson 功能加载到 geopandas,但是,我想将所有信息(属性和其他弹出信息)保留在几何图形中。结果,无论是 GeoSeries 还是 GeoDataFrame 都不尽如人意。
代码:
geojson = {"type": "Feature", "geometry": { "type": "Point","coordinates": [125.6, 10.1]},"properties": {"name": "Dinagat Islands"}}
test = geopandas.GeoSeries(geojson)
print(test)
test2 = geopandas.GeoDataFrame(geojson)
print(test2)
结果:
#.GeoSeries
FutureWarning: You are passing non-geometry data to the GeoSeries constructor. Currently,
it falls back to returning a pandas Series. But in the future, we will start
to raise a TypeError instead.
test = geopandas.GeoSeries(geojson)
type Feature
geometry {'type': 'Point', 'coordinates': [125.6, 10.1]}
properties {'name': 'Dinagat Islands'}
dtype: object
#.GeoDataFrame
type geometry properties
type Feature Point NaN
coordinates Feature [125.6, 10.1] NaN
name Feature NaN Dinagat Islands
解决方法很简单。我只是将 geojson 对象添加到列表中。但我发现库 geojson_utils
与 geopandas
的功能几乎相同。因此,如果您只使用 geojson,请使用 geopandas 或 fiona 将 load/convert shp 到 geojson,然后使用 geojson_utils.
可能会更有效率
test2 = geopandas.GeoDataFrame([geojson])
# print(test2)
type geometry properties
0 Feature {'type': 'Point', 'coordinates': [125.6, 10.1]} {'name': 'Dinagat Islands'}
其他解决方案是使用 geojson python 库和 GeoDataFrame.from_features
。看到这个
我正在尝试将一个简单的 geojson 功能加载到 geopandas,但是,我想将所有信息(属性和其他弹出信息)保留在几何图形中。结果,无论是 GeoSeries 还是 GeoDataFrame 都不尽如人意。
代码:
geojson = {"type": "Feature", "geometry": { "type": "Point","coordinates": [125.6, 10.1]},"properties": {"name": "Dinagat Islands"}}
test = geopandas.GeoSeries(geojson)
print(test)
test2 = geopandas.GeoDataFrame(geojson)
print(test2)
结果:
#.GeoSeries
FutureWarning: You are passing non-geometry data to the GeoSeries constructor. Currently,
it falls back to returning a pandas Series. But in the future, we will start
to raise a TypeError instead.
test = geopandas.GeoSeries(geojson)
type Feature
geometry {'type': 'Point', 'coordinates': [125.6, 10.1]}
properties {'name': 'Dinagat Islands'}
dtype: object
#.GeoDataFrame
type geometry properties
type Feature Point NaN
coordinates Feature [125.6, 10.1] NaN
name Feature NaN Dinagat Islands
解决方法很简单。我只是将 geojson 对象添加到列表中。但我发现库 geojson_utils
与 geopandas
的功能几乎相同。因此,如果您只使用 geojson,请使用 geopandas 或 fiona 将 load/convert shp 到 geojson,然后使用 geojson_utils.
test2 = geopandas.GeoDataFrame([geojson])
# print(test2)
type geometry properties
0 Feature {'type': 'Point', 'coordinates': [125.6, 10.1]} {'name': 'Dinagat Islands'}
其他解决方案是使用 geojson python 库和 GeoDataFrame.from_features
。看到这个