Pyproj 点之间以及点与多边形之间的距离

Posted

技术标签:

【中文标题】Pyproj 点之间以及点与多边形之间的距离【英文标题】:Pyproj distance between points and between a point and polygon 【发布时间】:2017-06-04 02:13:16 【问题描述】:

我想计算两点之间以及点与多边形之间的投影距离。所有坐标均在同一投影纬度、经度 (WGS84) 下指定。

我使用 pyproj 计算了一个点和一个多边形之间的距离,如下所示:

from pyproj import Proj, transform, Geod
geod = Geod(ellps='WGS84')
angle1,angle2,dist1 = geod.inv(wLong1, sLat1, wLong2, sLat2)
#this returns distance in m

我想用同样的函数来计算一个点到一个边界框的距离。

bbox = box(wLong1, sLat1, eLong1, nLat1)
point = Point(wLong2,sLat2)
dist2 = (point.distance(bbox))

与第一个示例(以米为单位的 dist1)不同,我认为第二个示例(dist2)返回以度为单位的距离。如何将此值转换为示例 1 中的仪表?

【问题讨论】:

你试过我的代码了吗?如果您还有其他问题,请随时提问。 【参考方案1】:

您需要地球曲率的平均半径 (rm) 进行计算。

from pyproj import Geod
from math import radians

# ... some code

a = Geod.a
b = Geod.b
rm = (2.0*a + b)/3.0   # simple mean radius, as defined by IUGG
rm * radians(dist2)    # your dist in meters

存在更精确的 rm 公式,但以上是很好的近似值。

【讨论】:

以上是关于Pyproj 点之间以及点与多边形之间的距离的主要内容,如果未能解决你的问题,请参考以下文章

快速 2D 有符号距离

cf Round 613

计算 shapefile 中每个多边形之间的最大/(或最小)距离

确定给定点是不是在多边形内

判断点与多边形关系

无法实现 GJK 距离算法