geopandas过滤后GeoDataFrame传geometry到MultiPoint报存在的KeyError:13
问题根因
你遇到的KeyError:13本质是过滤操作导致的GeoDataFrame索引断裂:筛选Entry="YES"后,子集保留了原始数据集的索引值,会出现索引不连续的空洞,shapely的MultiPoint构造时会尝试按连续索引取值,遇到不存在的索引(此处为13)就会抛出错误。未过滤的原始数据集索引是连续的,因此可以正常构造。
修复方案
- 筛选完成后先重置索引,清除断裂的旧索引:
df_yes_entry = df_yes_entry.reset_index(drop=True) - 若重置索引后仍有异常,可以直接取geometry列的数值数组传入MultiPoint,完全规避索引影响:
from shapely.geometry import MultiPoint entry_multipoint = MultiPoint(df_yes_entry.geometry.values)
效率优化建议
计算给定点到地铁口的最近距离时,无需额外构造MultiPoint,可以直接用geopandas内置的距离方法,计算效率更高:
# 注意目标点需要提前转换为和数据集一致的EPSG:5234投影 target_point = Point(目标点坐标) min_distance = df_yes_entry.geometry.distance(target_point).min()
内容的提问来源于stack exchange,提问作者IVS
相关产品推荐
相关产品推荐

