2009-08-10 6 views
88

Есть ли простой расчет, который я могу сделать, который преобразует km в значение, которое я могу добавить к плану lat или lon, чтобы вычислить ограничительную рамку для поиска? Он не обязательно должен быть полностью точным.Простые расчеты для работы с расстоянием лат/lon + km?

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

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

Edit:

Мой первоначальный поиск "Lat Lon" Ждут» т вернуть этот результат:

How to calculate the bounding box for a given lat/lng location?

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

ответ

171

Приближенные преобразования являются:

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

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

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

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

+0

Вы имеете в виду cos (долгота) во второй формуле? – Odys

+1

Как вы пришли к этому? Я что-то пропустил, не могли бы вы рассказать о расчетах долготы? Ty – Odys

+4

@Odys: Если вы сравниваете две точки, лежащие на одной и той же линии долготы (север/юг), они лежат на большом круге, а коэффициент преобразования - это только полярная окружность Земли, разделенная на 360 градусов. Но это отличается от измерений на восток-запад, потому что (кроме экватора) вы не измеряете «большой круг», поэтому «окружность» на заданной широте меньше. И поправочный коэффициент оказывается косинусом широты. –

3

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

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

+0

На сайте есть библиотека. – midfield99

0

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);