Простые вычисления для работы с расстоянием lat/lon + km?


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

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

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

Edit:

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

Как рассчитать ограничительную рамку для данного местоположения lat / lng?

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

4 103

4 ответа:

приблизительное преобразования:

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

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

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

осторожностью: имейте в виду, что latlong координаты выражаются в градусах, в то время как в большинстве (во всех?) языки обычно принимают радианы, поэтому a степени для преобразования радианов это.

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

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

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

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

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

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

utm.from_latlon и УТМ.to_latlon.