Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.007 c
15-1211734954
Дмитрий С
2008-05-25 21:02
2008.07.13
Облегчить реализацию IDispach


8-1183282179
leonidus
2007-07-01 13:29
2008.07.13
Расчет размеров прямоугольника для функции DrawText


2-1213024171
Franzy
2008-06-09 19:09
2008.07.13
Как узнать статус завершения запущенной консольной программы?


15-1211878467
ekto
2008-05-27 12:54
2008.07.13
NASM


15-1211959111
guav
2008-05-28 11:18
2008.07.13
Интересная пропозиция для С++, в Delphi тоже такое надо





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский