Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.13;
Скачать: CL | DM;

Вниз

Рсачет расстояния   Найти похожие ветки 

 
Stas ©   (2008-05-28 14:41) [0]

Поделитесь алгоритмом расчета расстояния между двумя точками на земле.Есть долгота и широта 2-х точек, нужно получить расстояние в км. я нашел один только он что-то неправильно считает
http://www.ga.gov.au/geodesy/datums/distance.jsp
который второй


 
Игорь Шевченко ©   (2008-05-28 14:44) [1]

так написано ж, что второй метод для Австралии


 
Stas ©   (2008-05-28 14:46) [2]

Я решил что просто для примера Австралия, а что у нас по другому считается :) ?


 
tesseract ©   (2008-05-28 14:47) [3]


> а что у нас по другому считается :) ?


Так полушарие-то другое :-)


 
Azize ©   (2008-05-28 14:47) [4]

При желании, там всё очень просто на декартовы координаты можно переложить


 
DiamondShark ©   (2008-05-28 14:49) [5]


> там всё очень просто на декартовы координаты можно переложить

На трёхмерные декартовы? ;)


 
Stas ©   (2008-05-28 14:51) [6]

DiamondShark ©   (28.05.08 14:49) [5]
Подъемами, спусками можно принебреч.


 
DiamondShark ©   (2008-05-28 14:54) [7]


> Stas ©   (28.05.08 14:51) [6]
> DiamondShark ©   (28.05.08 14:49) [5]
> Подъемами, спусками можно принебреч.

Угу. И кривизной поверхности -- тоже ;)


 
TUser ©   (2008-05-28 14:55) [8]

Земля - шар?


 
DVM ©   (2008-05-28 14:57) [9]


> Земля - шар?

плоская она


 
Внук ©   (2008-05-28 14:59) [10]

Дык, если я не ошибаюсь, определение длин геодезических кривых - одна из основных задач вариационного исчисления, которая рассказывается на любом мех-мате. Хотя, наверно, можно и проще, методами дифф. геометрии.


 
Stas ©   (2008-05-28 15:10) [11]

DiamondShark ©   (28.05.08 14:54) [7]
нет, вот кривизной нельзя
первый вариант тоже неправильный...


 
Mystic ©   (2008-05-28 15:24) [12]

По-моему все просто: находишь угол, центр которого лежит в центре земли, а стороны проходят через интересующие тебя пункты. Потом, зная радиус Земли, считаешь длину дуги.


 
Ega23 ©   (2008-05-28 15:26) [13]


> интересующие тебя пункты. Потом, зная радиус Земли, считаешь
> длину дуги.
>


А горы, реки, моря океаны и пустыни как же?  :)


 
Marser ©   (2008-05-28 15:27) [14]


> Mystic ©   (28.05.08 15:24) [12]
> По-моему все просто: находишь угол, центр которого лежит
> в центре земли, а стороны проходят через интересующие тебя
> пункты. Потом, зная радиус Земли, считаешь длину дуги.

Ага, а потом в программе выдаешь результат с примечанием: полагая Землю идеальным шаром такого-то радиуса, имеем такой-то результат :-))

Это сферический конь в вакууме :-)


 
Stas ©   (2008-05-28 15:33) [15]

На этом сайте есть функция расчета с использованием этих алгоритмов, и она считает правильно...


 
DVM ©   (2008-05-28 15:34) [16]

Если всем пренебрегать на несколько десятков км. можно ошибиться.


 
Правильный_Вася   (2008-05-28 15:37) [17]


> между двумя точками на земле

по дну моря, по вешине горы

и вообще - расстояние по прямой или по кривой, доступной для хождения человеком?


 
Stas ©   (2008-05-28 15:38) [18]

по прямой. высоту не учитываем, пока... только широту и долготу.


 
DVM ©   (2008-05-28 15:42) [19]


> Stas ©   (28.05.08 15:38) [18]

А то, что Земля не шар?


 
MBo ©   (2008-05-28 15:43) [20]

для шара и и нашей четвертинки
function GeoDistKm(Lat1, Lon1, Lat2, Lon2: Single): Single;
begin
   Lat1 := DegToRad(90 - Lat1);
   Lat2 := DegToRad(90 - Lat2);
   Result := Abs(6378 * Arccos(Cos(Lat1) * Cos(Lat2) +
     Sin(Lat1) * Sin(Lat2) * Cos(DegToRad((Lon2 - Lon1)))));
end;


 
TUser ©   (2008-05-28 15:44) [21]


> Дык, если я не ошибаюсь, определение длин геодезических
> кривых - одна из основных задач вариационного исчисления,
>  которая рассказывается на любом мех-мате. Хотя, наверно,
>  можно и проще, методами дифф. геометрии.
>

Мнэ, если З - шар, то там тривиальная стереометрия. Если элипсоид, то чуть сложнее.


 
Stas ©   (2008-05-28 15:48) [22]

ну второй пример на вышеуказаном сайте для эллипса.
MBo ©   (28.05.08 15:43) [20]
спасибо буду пробовать.


 
Stas ©   (2008-05-28 15:56) [23]

MBo ©   (28.05.08 15:43) [20]

О! вроде правильно. Спасибо!


 
SergP ©   (2008-05-28 15:57) [24]


> расчета расстояния между двумя точками на земле


расстояния по прямой соединяющей эти 2 точки или по дуге на поверхности Земли?


 
Рамиль ©   (2008-05-28 16:01) [25]

Надо по такой поверхности
http://ru.wikipedia.org/wiki/%D0%A4%D0%B8%D0%B3%D1%83%D1%80%D0%B0_%D0%97%D0%B5%D0%BC%D0%BB%D0%B8


 
DesWind   (2008-05-28 16:21) [26]

Вроде есть общая формула, так сказать "по воздуху", отсекающая зеркальную дугу... жаль ссылка на источник не сохранилась, но считает нормально. Нарыл на одном из сайтов по ГИС.


function GetDistance(Coord1,Coord2: TVector2f): integer;
var
Lat1, Lat2:    Double;
Lon1, Lon2:    Double;
Lat1Cos:       Double;
Lat2Cos:       Double;
Lat1Sin:       Double;
Lat2Sin:       Double;
LonDelta:      Double;
DeltaCos:      Double;
DeltaSin:      Double;
p1,p2,p3,p4:   Double;
p5,p6,p7:      Double;

begin
Lat1:=Coord1[1]*ToRad;
Lon1:=Coord1[0]*ToRad;
Lat2:=Coord2[1]*ToRad;
Lon2:=Coord2[0]*ToRad;
Lat1Cos:=Cos(Lat1);
Lat2Cos:=Cos(Lat2);
Lat1Sin:=Sin(Lat1);
Lat2Sin:=Sin(Lat2);
LonDelta:=Lon2-Lon1;
DeltaCos:=Cos(LonDelta);
DeltaSin:=Sin(LonDelta);
p1:=Sqr(Lat2Cos*DeltaSin);
p2:=sqr((Lat1Cos*Lat2Sin) - (Lat1Sin*Lat2Cos*DeltaCos));
p3:=Sqrt(p1 + p2);
p4:=Lat1Sin*Lat2Sin;
p5:=Lat1Cos*Lat2Cos*DeltaCos;
p6:=p4 + p5;
p7:=p3/p6;
Result:=Round(ArcTan(p7)*Earth);
end;

Для западного-южного полушария отрицательные шыроты-долготы. Расстояние в метрах.


 
Simpson ©   (2008-05-28 20:17) [27]

а в какой системе координат все это происходит?
/*обычно чуть ли не стандартом является Пулково 42*/
для запада совсем более другие системы координат.


 
Сергей М. ©   (2008-05-28 21:03) [28]


> Stas ©   (28.05.08 15:33) [15]


Сам что ли проверял ? Неужели рулеткой измерял ?)


 
Stas ©   (2008-05-29 11:54) [29]

Сергей М. ©   (28.05.08 21:03) [28]
нет.
в Google Earth ставим 3 маркера с координатми: (1,1) ,  (1,10),  (10,10)
Потом замеряем это расстояние (там инструмент есть), и проверяем результаты расчета алгоритма.



Страницы: 1 вся ветка

Текущий архив: 2008.07.13;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.012 c
2-1213351766
Dmitry
2008-06-13 14:09
2008.07.13
проблема с переносом программы


8-1183039452
wind1
2007-06-28 18:04
2008.07.13
Отображение .avi файлов


3-1199805755
AntonUSAnoV
2008-01-08 18:22
2008.07.13
Пропадает полоса прокрутки Dbgrid


3-1202068859
Slim
2008-02-03 23:00
2008.07.13
Как установить фокус в DbGridEh на нужный столбец?


15-1211877821
Хохол
2008-05-27 12:43
2008.07.13
Как получить размер памяти занимаемый объектом?