使用GPS坐标计算最短距离

时间:2011-12-16 10:39:04

标签: geolocation gps geometry

我希望在GPS坐标的帮助下知道计算公式,以便进行最短距离计算,精度> = 5 mtr。

我查看了Haversine公式和大圆距离公式。但它们适用于长距离计算。如果我们谈论mtrs的准确性应该使用哪个公式?

2 个答案:

答案 0 :(得分:5)

Vincenty's formulae在地球形状的WGS84近似上精确到毫米级(这将是过度的,显然,地球与WGS84在这个程度上不一致)。

几年前,我为distance calculation in Javascript实现了一些算法。如果您对代码缺乏评论,请随时询问您是否对算法有任何疑问。

一个潜在的问题是这些算法在海平面工作并且不考虑高度差异。 convert to geocentrical cartesian coordinates可能更好一点,而是使用直线距离......

经度为d,纬度为φ和高度为λ的点的直线距h的直接表达式由

给出
k = √(a²·cos²φ + b²·sin²φ)
r = (a²/k + h)·cosφ
z = (b²/k + h)·sinφ
d = √((z - z')² + r² + r'² - 2·r·r'·cos(λ - λ'))

使用以下paramteres值

a = 6378137m
b = (a·297.257223563)/298.257223563

答案 1 :(得分:2)

如果(long0,lat0)是一个点而(long1,lat1)是另一个:

对于小距离,您可以使用:

x0 = long0 * r_earth * cos(lat0)
y0 = lat0  * r_earth
x1 = long1 * r_earth * cos(lat1)
y1 = lat1  * r_earth
dx = x0 - x1
dy = y0 - y1
d = sqrt(dx*dx + dy*dy)

long =以弧度表示的经度
lat =弧度的纬度
r_earth =地球半径

您可以通过分解r_earth和/或假设cos(lat0)== cos(lat1)来进一步简化此公式。