Подтвердить что ты не робот

Расстояние между двумя местоположениями GEO

У меня есть два местоположения GEO. Как я могу рассчитать расстояние между ними?

4b9b3361

Ответ 1

Координаты GPS - это географические координаты на сфероиде WGS84. В рамках этой модели формулы Винценти дают результаты с точностью до миллиметра. Для большинства приложений это либо избыточно, либо фактически обманчиво, так как земная поверхность не смоделирована WGS84 до этого масштаба.

Вы можете сравнить точность различных методов расчета расстояний на этой странице (неработающая ссылка; исходный код). Как вы можете видеть, сферические и дифференциальные аппроксимации (последний использует теорему Пифагора с правильной локальной метрикой) во многих случаях неточны.

Из оставшихся методов первый использует средний радиус сфероида для преобразования из географической точки в геоцентрическую широту, тогда как второй использует правило косинуса для получения более точных результатов в случае "малых" расстояний (где определение "маленький" в основном зависит от разницы в широте).

Отдельный script содержащий только эти два метода можно найти здесь, который предоставляет функцию под названием distance() и ожидает четыре аргумента: две широты, разность долготы (все в радианах) и булевский флаг, указывающий, является ли расстояние "маленьким".

Ответ 2

Если вы используете API Google Maps v3, вы можете рассчитать расстояние следующим образом:

Включите файл JavaScript Google Maps с помощью геометрии:

http://maps.google.com/maps/api/js?sensor=true&libraries=geometry

Теперь расстояние можно измерить с помощью метода computeDistanceBetween():

var from = new google.maps.LatLng(49.004, 8.456);
var to   = new google.maps.LatLng(49.321, 8.789);
var dist = google.maps.geometry.spherical.computeDistanceBetween(from, to);

Ответ 3

На этой странице есть код JavaScript для вычисления расстояния между двумя географическими точками, если это то, что вам нужно.

Ответ 4

Это зависит от того, какой уровень точности вы хотите.

Вы могли бы решить это с помощью основной тригонометрии треугольника - т.е. разглядеть разницу между их долготой, с одной стороны; то разница между их широтой, что вторая. Теперь вы можете рассчитать третью сторону (то есть фактическое расстояние между ними) достаточно легко с базовыми математиками младшей школы.

Однако этот метод игнорирует кривизну земной поверхности, поэтому, если вам нужно принять это во внимание, вам нужно начать немного умно. Но вам не нужно беспокоиться об этом, если расстояния не слишком велики или вам нужна очень высокая степень точности. Для большинства целей основной метод триггера хорош.

Другой момент, конечно, состоит в том, что эти методы дают вам прямолинейное измерение. Это может быть то, что вы хотите, но вы также можете узнать расстояние до путешествия - то есть на дороге. Это совершенно другое, так как вам нужно иметь точную карту всех соответствующих дорог. Если это то, что вам нужно, было бы проще делегировать услугу Google maps (или одну из нескольких аналогичных альтернатив).