Top.Mail.Ru
Ответы
Аватар пользователя
16лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Наука
+4

Как вычислить расстояние между координатами GPS?

Дополнен

У меня нет навигатора - мне нужно в программе расчёт сделать.
Вот сам нашёл - весьма точно считает метод - погрешность 0,5%.Хорош для города где расстояния в пределах 100 км максимум.

'Name: great-cirlces.ave
'Function: Calculate distance and initial bearing between points basing on a sphere
'Author: Maxim Dubinin
' sim@gis-lab.info
'Created: 31.05.2006
'Last Update: 02.11.2006
'Notes: This script is also used in Argos-tools for distance calculation

'pnt1, pnt2 - точки между которыми вычисляются расстояния
'pi - число pi, rad - радиус сферы (Земли), num - количество
знаков после запятой
pi = 3.14159265358979
rad = 6372795

'получение координат точек в радианах
lat1 = pnt1.getY*pi/180
lat2 = pnt2.getY*pi/180
long1 = pnt1.getX*pi/180
long2 = pnt2.getX*pi/180

'косинусы и синусы широт и разниц долгот
cl1 = lat1.cos
cl2 = lat2.cos
sl1 = lat1.sin
sl2 = lat2.sin
delta = long2 - long1
cdelta = delta.cos
sdelta = delta.sin

'вычисления длины большого круга
p1 = (cl2*sdelta)^2
p2 = ((cl1*sl2) - (sl1*cl2*cdelta))^2
p3 = (p1 + p2)^0.5
p4 = sl1*sl2
p5 = cl1*cl2*cdelta
p6 = p4 + p5
p7 = p3/p6
anglerad = (p7.atan).SetFormatPrecision (num)
dist = anglerad*rad

'вычисление начального азимута
x = (cl1*sl2) - (sl1*cl2*cdelta)
y = sdelta*cl2 z = (-y/x).ATan.AsDegrees
if (x < 0) then z = z+180 end
z = -(z + 180 mod 360 - 180).AsRadians
anglerad2 = z - ((2*pi)*((z/(2*pi)).floor))
angledeg = (anglerad2*180)/pi

'возврат значений длины большого круга и начального азимута
distlist = {dist, angledeg}
return distlist

По дате
По рейтингу
Аватар пользователя
Новичок
16лет

Кратчайшее расстояние между двумя точками на земной поверхности (если принять ее за сферу) определяется зависимостью:

cos(d) = sin(φА) ·sin(φB) + cos(φА) ·cos(φB)·cos(λА − λB),

где φА и φB — широты, λА, λB — долготы данных пунктов, d — расстояние между пунктами, измеряемое в радианах длиной дуги большого круга земного шара.
Расстояние между пунктами, измеряемое в километрах, определяется по формуле:

L = d·R,

где R = 6371 км — средний радиус земного шара.

Аватар пользователя
Высший разум
16лет

вот простая программа, как говорится, "с бородой":
http://www.mediafire.com/?1cijmjlnikz
qthloc назвается. . проще вроде как не придумаешь.

Для более точного вычисления надо знать тип проекции и датум при которых производились измерения координат.

Аватар пользователя
Мудрец
16лет

А разве в навигаторе такая функция отсутствует?