我希望在GPS坐标的帮助下知道计算公式,以便进行最短距离计算,精度> = 5 mtr。
我查看了Haversine公式和大圆距离公式。但它们适用于长距离计算。如果我们谈论mtrs的准确性应该使用哪个公式?
答案 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)来进一步简化此公式。