Geopandas缓冲区与相交操作异常:仅匹配Historical Area问题排查
问题原因与解决方案
问题根源
你当前代码的核心问题是逐元素匹配的相交判断逻辑:
当buffs是包含多个Historical Area缓冲区的GeoSeries时,buffs.intersects(gdf_26910['geometry'])会按索引位置逐一比对两个GeoSeries的几何(比如第1个缓冲区只和第1个要素几何判断相交,第2个缓冲区只和第2个要素几何判断……),而非检查每个要素是否与任意一个缓冲区相交。这就导致只有索引位置匹配的Historical Area本身被筛选出来,周边要素根本没参与正确的相交校验。
修正方案
把多个缓冲区合并成一个单一几何对象,再用这个合并后的几何去判断所有要素是否与其相交:
# 提取所有Historical Area的几何,创建5公里缓冲区后合并为单一几何 buff_union = gdf_26910[gdf_26910['zoning_classification']=='Historical Area']['geometry'].buffer(5000).unary_union # 筛选所有与合并缓冲区相交的要素 result_gdf = gdf_26910[gdf_26910['geometry'].intersects(buff_union)]
这样就能正确获取所有位于任意Historical Area 5公里范围内的zoning分类,包括你在QGIS中看到的周边"Comprehensive Development"要素。
内容的提问来源于stack exchange,提问作者DotPi
相关产品推荐
相关产品推荐

