numpy 在具有变化距离的行字符串周围获得缓冲区

nfg76nw0  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(115)

给定一个线串和一个等长的距离列表(标量),我如何得到一个新的距离,它在原始距离的左边(或右边),并在列表中的相应位置指定偏移量?本质上是shapely.offset_curve()会做的,但偏移量不固定。


的数据

kuarbcqp

kuarbcqp1#

一种方法是单独缓冲顶点/点,计算每个连接的缓冲顶点/点对的凸船体,然后计算这些凸船体的溶解并集。

import shapely

line = shapely.LineString([(0,0), (5, 6), (8, -4), (16, 9)])
buffer_sizes = [1, 2, 3, 4]

points = [shapely.Point(coords) for coords in line.coords]

buffered_points = [
   point.buffer(s) for s, point in zip(buffered_points, points)
]

convex_hulls = []
for i in range(len(buffered_points)-1):
    convex_hulls.append(
        shapely.convex_hull(
            shapely.union(
                buffered_points[i], 
                buffered_points[i+1]
            )
        )
    )

buffered_line = shapely.union_all(convex_hulls)

字符串
可能有一个更优雅和有效的方法,但它似乎可以解决你的问题。

相关问题