Как рассчитать расстояние между двумя GPS-координатами (используя широту и долготу)?
math
geolocation
geometry
latitude-longitude
geography
nicudotro
источник
источник
Ответы:
Рассчитайте расстояние между двумя координатами по широте и долготе , включая реализацию Javascript.
Запад и Юг отрицательны. Помните, что минуты и секунды превышают 60, поэтому S31 30 'составляет -31,50 градуса.
Не забудьте перевести градусы в радианы . Многие языки имеют эту функцию. Или это простой расчет
radians = degrees * PI / 180
.Вот несколько примеров использования:
источник
Number.prototype.toRad = function() { return this * (Math.PI / 180); };
. Или, как указано ниже, вы можете заменить(Math.PI/2)
на 0.0174532925199433 (... независимо от точности, которую вы считаете необходимой) для повышения производительности.R
обычно означает в математике, а затем найдите соответствующие, связанные с Землей величины, чтобы увидеть, совпадают ли числа.earthRadiusKm
кvar earthRadiusMiles = 3959;
вашему сведению.Ищите Гаверсин с Google; вот мое решение:
источник
C # версия Haversine
Вот это .NET Fiddle , так что вы можете проверить это с помощью своих собственных Lat / Longs.
источник
Java-версия алгоритма Haversine, основанная на ответе Романа Макарова этой теме
источник
0.07149
км, тогда как ваша формула дала мне0.07156
точность, которая составляет около 99%Это очень легко сделать с типом географии в SQL Server 2008.
4326 - SRID для модели элипсоидальной Земли WGS84
источник
Вот функция Haversine в Python, которую я использую:
источник
Это зависит от того, насколько точным он вам нужен, если вам нужна точная точность, лучше всего взглянуть на алгоритм с использованием эллипсоида, а не сферы, такой как алгоритм Винсенти, который точен до мм. http://en.wikipedia.org/wiki/Vincenty%27s_algorithm
источник
Вот это в C # (широта и долгота в радианах):
Если ваши широта и долгота указаны в градусах, то разделите на 180 / PI, чтобы преобразовать в радианы.
источник
Мне нужно было рассчитать много расстояний между точками для моего проекта, поэтому я пошел дальше и попытался оптимизировать код, который я нашел здесь. В среднем в разных браузерах моя новая реализация работает в 2 раза быстрее, чем ответ с наибольшим количеством голосов.
Вы можете поиграть с моим jsPerf и посмотреть результаты здесь .
Недавно мне нужно было сделать то же самое в Python, поэтому вот реализация Python :
И ради полноты: Haversine на вики.
источник
Версия PHP:
(Удалите все,
deg2rad()
если ваши координаты уже в радианах.)источник
Функция T-SQL, которую я использую для выбора записей по расстоянию для центра
источник
Если вам нужно что-то более точное, взгляните на это .
источник
I. Относительно метода "сухари"
Ниже смотрите функцию в C, которая учитывает # 1 и # 2:
II. Есть более простой способ, который дает довольно хорошие результаты.
По средней скорости.
Trip_distance = Trip_average_speed * Trip_time
Поскольку скорость GPS определяется эффектом Доплера и не имеет прямого отношения к [Lon, Lat], ее можно по меньшей мере рассматривать как вторичную (резервное копирование или коррекция), если не как метод расчета основного расстояния.
источник
Если вы используете .NET, не поворачивайте колесо. См. System.Device.Location . Благодарю fnx в комментариях к другому ответу .
источник
Этот код Lua адаптирован из материалов, найденных в Википедии и в инструменте Роберта Липа GPSbabel :
источник
источник
Это версия от "Генри Вилинского", адаптированная для MySQL и Километров:
источник
MySQL
сказалSomething is wrong in your syntax near '' on line 8
// declare distance float;
вот реализация Swift из ответа
источник
я взял лучший ответ и использовал его в программе Scala
я каррировал функцию, чтобы иметь возможность легко создавать функции, которые имеют одно из двух фиксированных местоположений и требуют только пару широта / долгота для получения расстояния.
источник
Я предполагаю, что вы хотите это по искривлению земли. Ваши две точки и центр Земли находятся на плоскости. Центр Земли является центром круга на этой плоскости, и две точки (примерно) находятся по периметру этого круга. Исходя из этого, вы можете рассчитать расстояние, выяснив, каков угол от одной точки к другой.
Если точки не одинаковы по высоте, или если вам нужно принять во внимание, что Земля не является идеальной сферой, становится немного сложнее.
источник
Я недавно должен был сделать то же самое. Я нашел этот сайт очень полезным для объяснения сферической триггера с примерами, за которыми было легко следить.
источник
Вы можете найти реализацию этого (с некоторыми хорошими объяснениями) в F # на fssnip
Вот важные части:
источник
Мне нужно было реализовать это в PowerShell, надеюсь, это поможет кому-то еще. Некоторые заметки об этом методе
Я использую Haversine, поскольку другие должности указали, что формулы Винсенти намного более точны
источник
Scala версия
источник
// Может быть, ошибка опечатки? Я полагаю, у
нас есть неиспользуемая переменная dlon в GetDirection
должно быть
источник
Вот моя реализация в эликсире
источник
Дартс версия
Алгоритм Haversine.
источник
Я думаю, что версия алгоритма в R все еще отсутствует:
источник
Вот вариант Kotlin:
источник