消除等高线交叉点

Eliminate contour intersections

提问人:Danila 提问时间:11/15/2023 最后编辑:Danila 更新时间:11/15/2023 访问量:48

问:

我有对象点的坐标(x,y)。例如

from shapely.geometry import Polygon, Point

circle1 = Point(0, 0).buffer(1.5)
circle2 = Point(1, 1).buffer(1.5)
circle3 = Point(-4, 5).buffer(1.5)

其中一些是重叠的。如何消除交叉点,使图形之间留出一点空间? 您需要了解,可能会有更多带有交叉点的数字。 下面我将添加一个示例,说明需要什么:

以前:

后:

我尝试将交点移动到其形状的中心。此外,这个想法是连接图形的中心,在交叉点的中心画一个垂直线,然后将点平行于这条线移动。不幸的是,我做不到。

python-3.x 几何 坐标 轮廓

评论

0赞 Tim Roberts 11/15/2023
他们都是圆圈吗?
0赞 Danila 11/15/2023
@TimRoberts 不是强制性的 有几个圈子的数字被应用了。但基本逻辑是,一切都是由圆圈构建的union()

答:

0赞 Mahboob Nur 11/15/2023 #1

你可以这样做

   from shapely.geometry import Point
from shapely.ops import unary_union


circle1 = Point(0, 0).buffer(1.5)
circle2 = Point(1, 1).buffer(1.5)
circle3 = Point(-4, 5).buffer(1.5)
merged_circles = unary_union([circle1, circle2, circle3])
separated_circles = merged_circles.buffer(-0.5)
print(separated_circles)

评论

0赞 Danila 11/15/2023
这些碎片保持在一起,我需要将它们分开
0赞 Mahboob Nur 11/15/2023
代码修改@Danila
0赞 Danila 11/15/2023
谢谢,但这并不完全正确。您需要在相交对象之间留出一个小距离的间隙。将它们组合在代码中。
0赞 Danila 11/15/2023
我已经在图像中清楚地表明了这一点