python,匀称:如何确定两个多边形是否相互交叉,同时允许它们的边缘重叠

Yai*_*air 5 python shapely

我试图找出两个多边形是否相互交叉。我所说的“交叉”是指它们的外部可以相互接触,但它们的内部不能:

只允许使用下面最右边的两个解决方案:

在此处输入图片说明

我试过使用匀称的相交或交叉(以及其他一些),但找不到有效的内置函数(它们通常与内部和外部有关)。

Tur*_*rix 4

你看touches方法了吗?它似乎做你想做的事。

如果没有,您可以“自己动手”。例如,以下的一些变体:

def myTouches(poly1, poly2):
    return poly1.intersects(poly2) and not poly1.crosses(poly2) and not poly1.contains(poly2)
Run Code Online (Sandbox Code Playgroud)

或者,假设您的形状只是多边形,您可以查看 . 返回的集合intersection。如果它仅包含LineStrings或单个,Point那么它们只是“接触”。如果它包含其他任何东西(多个Points和/或其他多边形),那么它们就会重叠。

编辑: 既然我看到了你的图片,disjoint除了touches.