iamdivine
@iamdivine

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

Добрый день,
2 точки у каждой координаты lat, lon
Как посчитать расстояние между ними?
Видел есть .net Framework метод GeoCoordinate, но я делаю на .net core
  • Вопрос задан
  • 56 просмотров
Решения вопроса 2
Griboks
@Griboks Куратор тега C#
Есть несколько вариантов, по возрастанию точности и "правильности":
1) Длина отрезка с умножением на размерность 1 градуса в метрах, т.е. например 30 км на 17 градусов → sqrt((1.76Δlat)^2+(1.76Δlon)^2)
2) Как предыдущее, но разные масштабы по lon и lat.
3) Длина дуги на сфере.
4) Длина дуги на эллипсоиде.
5) Длина дуги на определённом эллипсоиде, наиболее точном для местности. Дистанция Карнея (там есть ссылка на готовые библиотеки на разных языках) по эллипсоиду WGS84 даёт неплохую точность 1-2 метра.
6) Вычисление по геоиду или локальной карте. Тут ничего не могу сказать, т. к. это оверхед чуть более чем всегда.
Ответ написан
iamdivine
@iamdivine Автор вопроса
public double GetDistanceFromLatLonInKm(double lat1,
            double lon1,
            double lat2,
            double lon2)
        {
            var R = 6371d;
            var dLat = Deg2Rad(lat2 - lat1);
            var dLon = Deg2Rad(lon2 - lon1);
            var a =
                Math.Sin(dLat / 2d) * Math.Sin(dLat / 2d) +
                Math.Cos(Deg2Rad(lat1)) * Math.Cos(Deg2Rad(lat2)) *
                Math.Sin(dLon / 2d) * Math.Sin(dLon / 2d);
            var c = 2d * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1d - a));
            var d = R * c;
            return d;
        }

        private double Deg2Rad(double deg)
        {
            return deg * (Math.PI / 180d);
        }
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
samodum
@samodum
Какой вопрос - такой и ответ
длина дуги на сфере.
Элементарная школьная стереометрия.
Совсем уже обленились
Ответ написан
@d-stream
Готовые решения - не подаю, но...
На nuget.org болтается одноименный с исходниками внутри - аж два файла.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
WB—Tech Москва
от 140 000 до 160 000 ₽
от 3 500 до 4 000 $
Itiviti Санкт-Петербург
До 230 000 ₽
08 мар. 2021, в 12:56
2000 руб./за проект
08 мар. 2021, в 12:35
50000 руб./за проект
08 мар. 2021, в 11:59
15000 руб./за проект