Shapely 无法识别 geoJson 的几何类型

Shapely doesn't recognize the geometry type of geoJson

我是 shapely 的初学者,我正在尝试读取 shapefile,将其保存为 geoJson,然后使用 shape() 来查看几何类型。 根据 doc, shape():

shapely.geometry.shape(context) Returns a new, independent geometry with coordinates copied from the context.

将 shapefile 保存为 geoJson 似乎可行,但由于某些原因,当我尝试在 geoJson 上使用 shape() 时出现错误:

ValueError: Unknown geometry type: featurecollection

这是我的脚本:

import geopandas
import numpy as np
from shapely.geometry import shape, Polygon, MultiPolygon, MultiLineString


#read shapefile:
myshpfile = geopandas.read_file('shape/myshape.shp')
myshpfile.to_file('myshape.geojson', driver='GeoJSON')


#read as GeoJson and use shape()
INPUT_FILE = 'shape/myshape.geojson'

geo_json = geopandas.read_file(INPUT_FILE)

#try to use shape()
geom = shape(geo_json)

>>>ValueError: Unknown geometry type: featurecollection

我也试过用切片指定几何体,但似乎不可能。

#try to use shape()
geom = shape(geo_json.iloc[:,9])

>>>TypeError: '(slice(None, None, None), 9)' is an invalid key

现在我过不了这一关,但我的最终目标是打印时能够得到几何类型geom.geom_type(现在我得到了之前的错误)

编辑:当我检查保存的 GeoJson 的类型时,我得到“geopandas.geodataframe.GeoDataFrame”

您的 geo_json 对象是 geopandas.GeoDataFrame,它有一列形状优美的几何图形。无需调用 shape。如果你想检查 geom_type,有一种直接的简单方法。

import geopandas
import numpy as np
from shapely.geometry import shape, Polygon, MultiPolygon, MultiLineString


#read shapefile:
myshpfile = geopandas.read_file('shape/myshape.shp')
myshpfile.to_file('myshape.geojson', driver='GeoJSON')


#read as GeoJson and use shape()
INPUT_FILE = 'shape/myshape.geojson'

geo_json = geopandas.read_file(INPUT_FILE)

geo_json.geom_type

这将为数据框中的每个几何图形提供 geom_type。也许检查 geopandas documentation 以更熟悉这个概念。