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 以更熟悉这个概念。
我是 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 以更熟悉这个概念。