gpt4 book ai didi

python - Shapely 中 MultiLineString 对象中 LineString 的顺序

转载 作者:太空宇宙 更新时间:2023-11-03 15:05:31 29 4
gpt4 key购买 nike

我有一个 MultiLineString 对象,其中组成它的 LineStrings 没有正确排序(或者至少我希望它们如何排序)。

例如,假设我有以下两个 LineString:

from shapely.geometry import *
LineIWant = MultiLineString([((0,0),(2,5)),((2,5),(7,10)),((7,10),(6,15))])
LineIHave = MultiLineString([((0,0),(2,5)),((7,10),(6,15)),((2,5),(7,10))])

如您所见,坐标使得所有线段都连接/匹配,但在我拥有的对象中,它们没有按顺序排列。当我尝试使用插值方法沿着对象获得 75% 的点时,这是有问题的:

LineIHave.interpolate(.75, normalized=True)

关于如何在我的 MultiLineString 对象中重新排序 LineStrings 有什么建议吗?

最佳答案

尝试将 MultiLineString 变成单个 LineString:

from shapely.ops import linemerge
linemerge(LineIHave) # LINESTRING (0 0, 2 5, 7 10, 6 15)
linemerge(LineIWant) # LINESTRING (0 0, 2 5, 7 10, 6 15)

如果 linemerge 以错误的方式定向行,您可以将其反转:

LineString(linemerge(LineIWant).coords[::-1])  # LINESTRING (6 15, 7 10, 2 5, 0 0)

关于python - Shapely 中 MultiLineString 对象中 LineString 的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33175022/

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