Простые расчеты для работы с широтой / долготой и км расстояния? - PullRequest
107 голосов
/ 10 августа 2009

Могу ли я сделать простой расчет, который преобразует km в значение, которое я могу добавить к значению lat или lon, чтобы вычислить ограничивающую рамку для поиска? Это не должно быть абсолютно точно.

Например: если бы мне дали широту / долготу для Лондона, Англии (51.5001524, -0.1262362), и я хотел бы рассчитать, какой лат будет в 25 км к востоку / западу от этой точки, и какой лон будет в 25 км к северу / к югу от этой точки, что мне нужно сделать, чтобы преобразовать 25 км в десятичное число, чтобы добавить к значениям выше?

Я ищу общее правило, например: 1 км == +/- 0.XXX

Edit:

Мой первоначальный поиск "lat lon" не дал этого результата:

Как рассчитать ограничивающий прямоугольник для заданного местоположения широты / долготы?

Принятый ответ кажется адекватным моим требованиям.

Ответы [ 4 ]

197 голосов
/ 10 августа 2009

Приблизительные конверсии:

  • Широта: 1 град. = 110,574 км
  • Долгота: 1 град. = 111.320 * cos (широта) км

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

Источник: http://en.wikipedia.org/wiki/Latitude

Внимание : Помните, что координаты широтной длины выражены в градусах, в то время как функция cos в большинстве (всех?) Языков обычно принимает радианы, поэтому преобразование градусов в радианы нужен.

5 голосов
/ 10 августа 2009

Если вы используете Java, Javascript или PHP, то есть библиотека, которая точно выполнит эти вычисления, используя забавно сложную (но все же быструю) тригонометрию:

http://www.jstott.me.uk/jcoord/

1 голос
/ 23 августа 2018

Интересно, что я не увидел упоминания UTM-координат.

https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system.

По крайней мере, если вы хотите добавить км в ту же зону, это должно быть просто (в Python: https://pypi.org/project/utm/)

utm.from_latlon и utm.to_latlon.

1 голос
/ 20 февраля 2017

http://www.jstott.me.uk/jcoord/ - используйте эту библиотеку

            LatLng lld1 = new LatLng(40.718119, -73.995667);
            LatLng lld2 = new LatLng(51.499981, -0.125313);
            Double distance = lld1.distance(lld2);
            Log.d(TAG, "Distance in kilometers " + distance);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...