我试图找出两个多边形是否彼此交叉。 “交叉”是指它们的外部可以互相接触,但它们的内部不能:
仅允许以下两个最右边的解决方案:
我尝试使用形状相交或十字(和其他一些),但是找不到有效的内置函数(它们通常与内部和外部相关)。
最佳答案
您看过touches
方法吗?它似乎可以做您想要的。
如果没有,您可以“自己动手”。例如,这的一些变化:
def myTouches(poly1, poly2):
return poly1.intersects(poly2) and not poly1.crosses(poly2) and not poly1.contains(poly2)
或者,假设您的形状只是多边形,则可以查看
intersection
返回的集合。如果仅包含LineStrings
或单个Point
,则它们只是“触摸”。如果它包含其他内容(多个Points
和/或其他多边形),则它们会重叠。编辑:
现在,我看到了您的图片,除了
disjoint
之外,您可能还需要使用touches
方法。