使用 csv 而不是地理数据框:'str' 对象没有属性 'contains'

using csv instead of geodataframe: 'str' object has no attribute 'contains'

我有一个名为 gdf2 的荷兰城市地理数据框,其中属性 table 如下所示:

使用下面的代码returns我判断一个坐标(点)是否在某个城市内:

from shapely.geometry import Point

point = Point(6.56667, 53.21917)

for i in range(len(gdf2['geometry'])):
  if gdf2['geometry'][i].contains(point) == True:
     print(gdf2['statnaam'][i])

此代码 returns 我正确 'Groningen',该点所在的自治市。

现在我想做同样的事情,但要用这个的 csv 文件。 用户输入经纬度,这里命名为lat和lon。 这里,lat 和 lon 是浮点型。

from shapely.geometry import Point

gdf2.to_csv('gdf2.csv')

gdf_csv = pd.read_csv('gdf2.csv')

point = Point(lon, lat)

for i in range(len(gdf_csv['geometry'])):
    if gdf_csv['geometry'][i].contains(point) == True:
       print(gdf_csv['statnaam'][i])

当我 运行 这个时,它给我错误: 'str' object has no attribute 'contains'.

这里出了什么问题?我应该可以在 csv 文件中做同样的事情,对吗?

我通过将 csv 基本上转换回 GDF 解决了这个问题:

from shapely import wkt
gdf_csv.geometry = gdf_csv.geometry.apply(wkt.loads)

现在下面的代码可以工作了!

point = Point(lon, lat)

for i in range(len(gdf_csv['geometry'])):
    if gdf_csv['geometry'][i].contains(point) == True:
       print(gdf_csv['statnaam'][i])