Форум: "Прочее";
Текущий архив: 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.009 c