使用Python、geopy和shapely进行GPS定位

使用Python、geopy和shapely进行GPS定位,python,geolocation,geopy,shapely,Python,Geolocation,Geopy,Shapely,我正在尝试以下场景: 从google earth获取多边形坐标 使用Shapely获得边界: >>> polygon = Polygon([(53.349459,-6.260159),(53.349366,-6.260126),(53.349383,-6.260012),(53.349478,-6.260053),(53.349459,-6.260159)]) >>> polygon.bounds (53.349366, -6.260159, 53.3

我正在尝试以下场景:

  • 从google earth获取多边形坐标
  • 使用Shapely获得边界:

    >>> polygon = Polygon([(53.349459,-6.260159),(53.349366,-6.260126),(53.349383,-6.260012),(53.349478,-6.260053),(53.349459,-6.260159)])   
    >>> polygon.bounds
    (53.349366, -6.260159, 53.349478, -6.260012)
    
    我得到了两个坐标,这是我的图形顶部的两个边界点

  • 利用地理信息学获取距离

    现在我被卡住了。。。试图找出:

  • 如何找到2个其他边界点(在底部)
  • 如何从任意一侧检测用户是否靠近多边形(例如3米)?(左、右、上、下)。在这种情况下,我不仅需要知道边边界点,还需要知道从左、右、上和下的所有边界点?我可以计算用户位置和多边形之间的距离,但要从多边形中动态获取什么点? 我可以使用现有的LIB进行此操作吗,如geopy和Shapely

如果我理解正确,你有一堆形状优美的多边形,你想测试任意点是否接近这些形状。 针对此问题,shapely提供了:


请注意:距离是以弧为单位的,而不是以米为单位的,因此您必须转换它们。

这可能更像是一个边界问题,返回多边形的边界框。多边形适合的最小矩形。如果你看它,它不是顶点的坐标。如果我理解正确的话,距离是用圆弧表示的,只有当你使用坐标时。在这种情况下,我甚至不确定这是否准确。测量long/lat距离的更好方法是首先投影多边形(pyproj?),然后测量它。我们使用的是一种更简单的投影方法,它依赖于多边形的平均纬度
from shapely.geometry import Point, Polygon
polygon = Polygon([(53.349459,-6.260159),
                   (53.349366,-6.260126),
                   (53.349383,-6.260012),
                   (53.349478,-6.260053),
                   (53.349459,-6.260159)])
testpoint = Point(53.349459,-6.260190)
dist = polygon.distance(testpoint)
print(dist)
>>> 3.09999999999e-05