将 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_utilsgeopandas 的功能几乎相同。因此,如果您只使用 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。看到这个