如何解决geopandas 已知交叉点返回 False
我有两组多边形。我想从一个数据集中选择一个多边形(通过使用有效的 matplotlib 单击事件),然后从与它相交的第二个数据集中选择所有多边形。当我绘制数据集时,它们明显重叠(见下文),但我的交集总是返回 False。
数据集如下所示:
Dataset1 = gpd.read_file('Datafile_1.gpkg')
Dataset1_sub = Dataset1[Dataset1['ID']==15000]
返回:
(17795,73)
DN ... ID
14999 19 ... 15000
[1 rows x 74 columns]
但是当我尝试像这样与我的第二个数据集(黑匣子)相交时:
Dataset2 = gpd.read('Datafile_2.gpkg')
Dataset2_sub = Dataset2.intersects(Dataset1_sub)
这会为数据集 2 的所有记录返回 False,但不应该至少有一个为 True?:
0 False
1 False
2 False
3 False
4 False
...
480 False
481 False
482 False
483 False
5162 False
dtype: bool
我确实收到警告:
UserWarning: The indices of the two GeoSeries are different.
warn("The indices of the two GeoSeries are different.")
但我不知道这是否是造成这种情况的原因。我正在有效地尝试将一个 df 与一行与另一个 df 相交,该 df 有很多行,最终只得到相交的多边形。我错过了什么吗?
解决方法
您选择的不是一个多边形,而是 GeoDataFrame 的一行。因此,您在系列上使用 intersects
,而不是多边形。作为 shown in the documentation,geopandas 对齐这些系列并按行进行 1:1 操作。如果要根据单个几何图形检查所有行,则需要传递 shapely.geometry
。
# this is shapely.geometry.Polygon
geom = Dataset1.loc[Dataset1['ID'] == 15000,'geometry'].iloc[0]
Dataset2.intersects(geom)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。