gpt4 book ai didi

python - shapely parallel_offset 有时不会生成闭环

转载 作者:太空宇宙 更新时间:2023-11-03 11:18:13 24 4
gpt4 key购买 nike

我正在使用 shapely 包的 parallel_offset 函数来获取一些闭合环多边形的偏移结构。我一次有几个多边形,许多具有相似的形状。然而,其中大约 10-25% 不会从 parallel_offset 生成闭环。这是一个不起作用的形状的 MWE:

import matplotlib.pyplot as plt
from shapely.geometry.polygon import LinearRing

def plot_line(ax, ob, color):
x, y = ob.xy
ax.plot(x, y, color=color, alpha=0.7, linewidth=3,
solid_capstyle='round', zorder=2)

polygon = [[-29.675, -30.675],
[-28.4094, -29.4094],
[-28.325, -29.325],
[-28.325, -29.764],
[-28.325, -29.7933],
[-28.4587, -29.8274],
[-28.4676, -29.8297],
[-28.5956, -29.8814],
[-28.6041, -29.8848],
[-28.724, -29.953],
[-28.732, -29.9576],
[-28.8417, -30.0413],
[-28.849, -30.0469],
[-28.9466, -30.1445],
[-28.9531, -30.151],
[-29.0368, -30.2607],
[-29.0424, -30.268],
[-29.1106, -30.3879],
[-29.1152, -30.3959],
[-29.1669, -30.5239],
[-29.1703, -30.5324],
[-29.2044, -30.6661],
[-29.2067, -30.675],
[-29.6457, -30.675],
[-29.675, -30.675]]

poly_line = LinearRing(polygon)
poly_line_offset = poly_line.parallel_offset(0.05, side="left", resolution=16,
join_style=2, mitre_limit=1)
fig = plt.figure()
ax = fig.add_subplot(111)
plot_line(ax, poly_line, "blue")
plot_line(ax, poly_line_offset, "green")
plt.show()

Blue plot original polygon, green plot offset polygon

如您所见,绿色偏移多边形不会在顶点列表中第一个/最后一个点处闭合。然而,其他非常相似的形状确实可以按预期工作。它们具有相同的数据结构,也有相同的起点/终点,就像我上面的例子一样。 join_style 属性不会将结果更改为我想要的结果。更改 resolutiondistance 也无济于事。 documentation也没有解决这个问题。

你有什么指导吗?我正在使用 shapely 1.6.3。

最佳答案

不完全确定为什么会发生这种情况,但是您可以使用基于 buffer 的解决方法方法:

poly_line = LinearRing(polygon)
poly_line_offset = poly_line.buffer(0.05,
resolution=16, join_style=2, mitre_limit=1).exterior

根据您的数据,这会产生(可能)期望的结果: enter image description here

关于python - shapely parallel_offset 有时不会生成闭环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48462044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com