zoukankan      html  css  js  c++  java
  • the nearest point/vertex point of linestring

    引用https://github.com/Toblerity/Shapely/issues/190

    The point returned is the nearest point on the line to the original point. The nearest point is not necessarily an existing vertex in the LineString, and in this case it isn't.

    end = Point(19.125150,72.893218)
    np = Point(19.12493833590478, 72.89314854771877)
    expected = Point(19.124929, 72.893177)
    
    print end.distance(np) # 0.000222767386696
    print end.distance(expected) # 0.000224770994572
    

    If you want to find the nearest vertex you should first convert the LineString to a MultiPoint geometry, then use the nearest_points operation (note the minor floating point error):

    from shapely.ops import nearest_points
    from shapely.geometry import MultiPoint
    mp = MultiPoint(route)
    print nearest_points(mp, end)[0] # POINT (19.124929 72.89317699999999)
    

    This query requires calculating the distance between the original point and each vertex in the original linestring. 

    直线上距离最近的点,不等于定义时用的vertix

    而要得到最近的vertix,关键的思路是把Linestring“退化“成vertix的MultiPoint,退化回"点对点"距离问题,就OK了。

  • 相关阅读:
    MapReduce
    es2.0的语法学习
    java的并发
    JVM的前世今生
    linux环境jacoco接入
    每天一个linux命令--~
    每天一个linux命令--ssh的host配置用户名密码
    jenkins集成robot
    ElasticSearch学习
    rf关键字
  • 原文地址:https://www.cnblogs.com/xuanmanstein/p/11068749.html
Copyright © 2011-2022 走看看