匀称的投影函数更喜欢在 LineString 中选择线段的边界点

问题描述

我尝试将一些 GPS 数据点投影到一条线上。我发现有时项目函数在 shapely 中更喜欢选择 Linestring 中线段的边界点。这导致速度计算出现问题。

请看下面的小例子。虽然点不一样,但是投影到线上的同一个点上。

from shapely.geometry import Point,Linestring

def point_projection(point,line):
    distance = line.distance(point)
    point_on_line = line.interpolate(line.project(point))

    return point_on_line,distance


def point_def():
    point1 = Point(23.728679,37.984069)
    point2 = Point(23.728678,37.98407)
    point3 = Point(23.728677,37.984071)
    point4 = Point(23.728675,37.984072)

    line_mean = Linestring([(23.72866374125783,37.98402357544947),(23.72865573174285,37.9840280807565),(23.72865400917545,37.98402924429151),(23.72865086682639,37.98403091032162),(23.72864013333566,37.98403776977955)])
    point_on_line1,dis_line = point_projection(point1,line_mean)
    point_on_line2,dis_line = point_projection(point2,line_mean)
    point_on_line3,dis_line = point_projection(point3,line_mean)
    point_on_line4,dis_line = point_projection(point4,line_mean)

    print(point_on_line1.wkt,point_on_line2.wkt,point_on_line3.wkt,point_on_line4.wkt)


if __name__ == "__main__":
    point_def()

结果是

POINT (23.72865400917545 37.98402924429151)
POINT (23.72865400917545 37.98402924429151)
POINT (23.72865400917545 37.98402924429151)
POINT (23.7286526996247 37.98402993859725)

前三个投影点是一样的,这不是我所期望的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)