Главная страница
    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
2-1213343912
leonidus
2008-06-13 11:58
2008.07.13
Чтение данных из файла UTF-8


2-1213386303
lewka-serdceed
2008-06-13 23:45
2008.07.13
Chat по средствам Delphi


15-1211971316
Stas
2008-05-28 14:41
2008.07.13
Рсачет расстояния


15-1211891858
Knight
2008-05-27 16:37
2008.07.13
1C 7.7 + Delphi + ADO + MS SQL


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
Английский Французский Немецкий Итальянский Португальский Русский Испанский