使用csv替代GeoDataFrame做空间判断时'str'无contains属性报错如何解决
问题原因
CSV是纯文本存储格式,GeoDataFrame调用to_csv()导出时,原本存储Shapely几何对象的geometry列会被自动序列化为WKT(Well-known text)格式的字符串。使用pandas的read_csv()读取时,该列会默认按字符串类型加载,没有Shapely几何对象的contains方法,因此触发报错。
实现方案
使用CSV完全可以实现相同功能,只需要在读取CSV后,将geometry列的WKT字符串转换回Shapely几何对象即可,修正后代码如下:
import pandas as pd from shapely.geometry import Point from shapely.wkt import loads # 导出GeoDataFrame到CSV gdf2.to_csv('gdf2.csv', index=False) # 读取CSV并转换geometry列类型 gdf_csv = pd.read_csv('gdf2.csv') gdf_csv['geometry'] = gdf_csv['geometry'].apply(loads) # 点归属判断逻辑 point = Point(lon, lat) for i in range(len(gdf_csv['geometry'])): if gdf_csv['geometry'][i].contains(point): print(gdf_csv['statnaam'][i])
内容的提问来源于stack exchange,提问作者user17515752
相关产品推荐
相关产品推荐

