2011-12-16 237 views
0

我想知道用GPS坐标进行计算的最短距离计算公式,准确度> = 5 mtr。使用GPS坐标进行最短距离计算

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

回答

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)。

+0

谢谢,我正在与SIM18 GPS模块工作,其在车辆跟踪器使用。为跟踪应用程序,我们需要准确的结果它适合跟踪应用程序吗? – Prakash

+0

@Prakesh:我不知道你的意思。你认为这不够准确吗?你说你不想使用大圆公式,因为你有很小的距离。对于小距离,这个公式将是足够准确的。如果它不符合你的要求,你必须使用大圆公式。 – Curd

+0

非常感谢。我会检查并找到结果。 – Prakash

5

Vincenty's formulae在WGS84近似地球形状(这显然是过度杀伤,地球不符合WGS84的那种程度)时精确到毫米级。

几年前,我为distance calculation in Javascript实现了一些算法。随意地询问你是否对算法有任何疑问,因为代码缺乏评论。

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

直接表达了点的经度φ,纬度λ和高度h的直线距离d

给出
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