Как Расчитать Расстояние Между Географическими Координатами?

Даны две точки:

N 55*52’52.04″ E 037*41’35.55″ и N 55*52’45.45″ E 037*41’42.71″

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

Ответов: 6

СергейСумароков, 17.02.2006 12:56, сказал(а):

Const WGS84 = 6378.137

Function rad2km(dblRadians As Double) As Double
	rad2km = dblRadians * WGS84
End Function

Function gcDistance(dblLat1 As Double, ByVal dblLon1 As Double, dblLat2 As Double, ByVal dblLon2 As Double) As Double
	' Вычисляет расстояние между двумя точками, заданными географическими координатами
	' Принимает координаты в радианах, возвращает расстояние в радианах
	dblLon1 = dblLon1 * (-1)
	dblLon2 = dblLon2 * (-1)
	gcDistance = 2 * ASin(Sqr((Sin((dblLat1 - dblLat2) / 2)) ^ 2 _
		+ Cos(dblLat1) * Cos(dblLat2) * (Sin((dblLon1 - dblLon2) / 2)) ^ 2))
End Function

И не говорите мне, что это слишком сложно для вас… 😉

Да… 😛

Кулькулятор 🙂 где то в файлах лежит, посмотри. Есть формулы но наизусть непомню, надо в учебниках смотреть.

Const WGS84 = 6378.137

Function rad2km(dblRadians As Double) As Double
	rad2km = dblRadians * WGS84
End Function

Function gcDistance(dblLat1 As Double, ByVal dblLon1 As Double, dblLat2 As Double, ByVal dblLon2 As Double) As Double
	' Вычисляет расстояние между двумя точками, заданными географическими координатами
	' Принимает координаты в радианах, возвращает расстояние в радианах
	dblLon1 = dblLon1 * (-1)
	dblLon2 = dblLon2 * (-1)
	gcDistance = 2 * ASin(Sqr((Sin((dblLat1 - dblLat2) / 2)) ^ 2 _
		+ Cos(dblLat1) * Cos(dblLat2) * (Sin((dblLon1 - dblLon2) / 2)) ^ 2))
End Function

И не говорите мне, что это слишком сложно для вас… 😉

Или проводим от центра Земли в эти точки вектора и находим угол между этими векторами, тогда умножив угол на радиус Земли найдем расстояние между точками (длину дуги).

Длина дуги: L=Rz*Y; где Y угол между векторами, Rz — радиус Земли.

Угол найдем из школьной формулы (скалярное произведение векторов поможет нам): cos Y = (x1*x2+y1*y2+z1*z2)/(r1*r2);

Преобразование сферических координат в прямоугольные:

z=Rz*sin(широта);
x=Rz*cos(широта)*cos(долгота);
y=Rz*cos(широта)*sin(долгота);

Ну и теорема Пифагора: r^2=x*x+y*y+z*z;

Если считать прямоугольные координаты по WGS84 http://www.wgs84.com…4/downloads.htm, разбив угол между векторами на участки, а затем проинтегрировать, то получится точность аналогичная калькулятору CAICA http://www.caica.ru/aerocalk.htm.

Сообщение изменено: Bor (17 Февраль 2006 — 18:48)

есть формула для расчёта длины ортодромии:
cos S=sin (широта1)*sin (широта2)+cos (ibhjnf1)*cos (широта2)*cos (долгота2-долгота1)
после чего S получишь в угловой мере… переведёшь в радианы и умножишь на радиус Земли (6372,9)км… и всё 🙂

калькулятор
теория

Сообщение изменено: -arra- (21 Февраль 2006 — 15:27)