geopandas 已知交集 returns 错误

geopandas known intersection returns False

我有两组多面体。我想 select 来自一个数据集的一个多边形(通过使用有效的 matplotlib 单击事件),然后 select 来自第二个数据集的所有多边形与它相交。当我绘制数据集时,它们明显重叠(见下文)但我的交集总是 returns False.

数据集如下所示:

我select其中一个红色多边形使用了我在这里模拟的点击事件:

Dataset1 = gpd.read_file('Datafile_1.gpkg')
Dataset1_sub = Dataset1[Dataset1['ID']==15000]

这个returns:

(17795, 73)
DN  ...     ID
14999  19  ...  15000

[1 rows x 74 columns]

但是当我尝试像这样与我的第二个数据集(黑框)相交时:

Dataset2 = gpd.read('Datafile_2.gpkg')

Dataset2_sub = Dataset2.intersects(Dataset1_sub)

这个 returns 对于数据集 2 的所有记录都是错误的,但至少其中一个是正确的吗?:

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 有很多行,最终只得到相交的多边形。我错过了什么吗?

您没有 select 一个多边形,而是 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)