使用 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])
我有一个名为 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])