编程语言
首页 > 编程语言> > python – 在Point的任一侧获取LineString上的顶点

python – 在Point的任一侧获取LineString上的顶点

作者:互联网

我有一个匀称的LineString,并定义了一个沿着LineString的形状Point.

如何找到位于该点两侧的LineString的顶点? (将线分成两部分)

解决方法:

在PointString中找到该点所在的线段.然后相应地将LineString的顶点分成两组.要定位线段,只需将点/线段交叉测试应用于每个线段.

from shapely.geometry import Point,LineString

def split(line_string, point):
    coords = line_string.coords
    j = None

    for i in range(len(coords) - 1):
        if LineString(coords[i:i + 2]).intersects(point):
           j = i
           break

    assert j is not None

    # Make sure to always include the point in the first group
    if Point(coords[j + 1:j + 2]).equals(point):
        return coords[:j + 2], coords[j + 1:]
    else:
        return coords[:j + 1], coords[j:]

标签:shapely,python,geometry
来源: https://codeday.me/bug/20191009/1876374.html