Существует ли библиотека или структура для расчета геодезических широт / длинных координат? - PullRequest
1 голос
/ 25 декабря 2011

Я создаю приложение, основанное на расположении ядра, где я должен вычислить множество вещей для данной пары широта / долгота, например:

  • Расстояние до другой координаты широты / долготы

  • Целевая широта / долгота при путешествии на расстояние x в направлении y

Есть ли что-то с открытым исходным кодом, которое можно использовать?

Ответы [ 3 ]

4 голосов
/ 25 декабря 2011

Поскольку вы используете CoreLocation, вы можете использовать CoreLocation's distanceFromLocation , как указывает @progrmr.

С другой стороны, поскольку вы указали открытый исходный код и он не является открытым исходным кодом, вы можете посмотреть на GeographicLib реализаций, как предложено @MikeT.

(Мой первоначальный ответ, предполагающий формулу Хаверсайна, был ошибочным. Как указывает @MikeT, формула Хаверсайна действительна только для сфер. И Земля не является идеальной сферой.)

Оригинальный, некорректный ответ:

Звучит так, будто вам нужна формула Хаверсайна.

Страница Википедии по формуле Хаверсайна объясняет, чтоэто и ( внизу, в разделе «Внешние ссылки») содержит ссылки на многие реализации.Я не проверял, но я должен представить, что по крайней мере некоторые из них являются проектами с открытым исходным кодом.

1 голос
/ 10 ноября 2014

GeographicLib реализован на нескольких языках программирования, включая Java . Библиотека рассчитывает длины и соответствующие математические свойства геодезических на эллипсоидах вращения (или сфероидах). Ошибки вычислений обычно находятся в диапазоне микрометров.

Чтобы найти расстояние между двумя координатами:

GeodesicData g = Geodesic.WGS84.Inverse(lat1, lon1, lat2, lon2,
                                        GeodesicMask.DISTANCE);

затем получите g.s12 для расстояния между двумя точками.

Второй пример в вопросе для проекции местоположения с заданным расстоянием и направлением найден с использованием методов Direct.

1 голос
/ 25 декабря 2011

На github есть несколько функций C, которые выполняют курс из пары координат, или координаты назначения с учетом начала и курса. Расстояние между координатами, которые вы можете сделать с помощью CLLocation.

Они основаны на Сферическом Законе Косинусов и получены из алгоритмов здесь и здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...