geopandas sjoin op 'within' 和 'intersects' 有何不同

问题描述 投票:0回答:2

我正在识别一个点是否位于多边形内。我有一个数据框包含点,另一个数据框包含多边形,所以我想将它们空间连接起来,如下所示:

gpd.sjoin(df_points, df_polygons, how = 'left')

我知道默认值是

op=intersects
,但是
intersects
within
有什么不同?我应该使用哪一个来达到我的目的?

谢谢

python merge geopandas intersect
2个回答
1
投票

PostGIS 教程 有一些非常好的图形来解释不同的空间连接。


0
投票

简而言之,

within
要求几何体的所有点都位于空间连接几何体的内部(并且没有一个位于外部)。而
intersects
允许几何体的某些点位于空间连接几何体的外部,只要其至少一个点接触第二个几何体或位于第二个几何体内即可。

以下是一些更正式的定义:

  • 相交:如果一个对象的边界和内部以任何方式与另一个对象相交,则称该对象与另一个对象相交。

  • within:如果一个对象至少有一个点位于另一个对象的内部并且没有点位于另一个对象的外部,则该对象被称为在另一个对象之内。如果任一对象为空,则此操作返回 False。这是 contains() 的逆,因为表达式 a.within(b) == b.contains(a) 的计算结果始终为 True。

  • 包含:如果一个对象至少有一个其他点位于该对象的内部并且没有其他点位于该对象的外部,则称该对象包含其他点。 (因此,任何给定的多边形都不包含其自己的边界 - 内部没有任何点。)如果任一对象为空,则此操作返回 False。这是 inside() 的反函数,表达式 a.contains(b) == b.within(a) 的计算结果始终为 True。

© www.soinside.com 2019 - 2024. All rights reserved.