Могу ли я сделать простой расчет, который преобразует км в значение, которое я могу добавить к поплавку широты или долготы, чтобы вычислить ограничивающую рамку для поиска? Это не обязательно должно быть полностью точным.
Например: если бы мне дали широту / долготу для Лондона, Англия (51,5001524, -0,1262362), и я хотел бы вычислить, какой шир будет в 25 км к востоку / западу от этой точки, и какой долг будет в 25 км к северу / югу от этой точки. точка, что мне нужно сделать, чтобы преобразовать 25 км в десятичное число, чтобы добавить к значениям выше?
Я ищу общее практическое правило, например: 1 км == +/- 0.XXX
Редактировать:
Мой первоначальный поиск по запросу "lat lon" не дал такого результата:
Как рассчитать ограничивающую рамку для заданного местоположения широты / долготы?
Принятый ответ мне кажется адекватным.
источник
Ответы:
Примерные преобразования:
Это не совсем верно для полярного выравнивания Земли - за что вы, вероятно, хотите более сложную формулу, используя эталонную WGS84 эллипсоида (модель используется для GPS). Но для ваших целей ошибка, вероятно, незначительна.
Источник: http://en.wikipedia.org/wiki/Latitude
Внимание : имейте в виду, что координаты широты и долготы выражаются в градусах, в то время как
cos
функция на большинстве (всех?) Языках обычно принимает радианы, поэтому необходимо преобразование градуса в радианы .источник
cos(0°) = 1
=> Следовательно, при вычислении на экваторе поправочный коэффициент не применяется. Долготы там самые широкие.cos(90°) = 0
=> На полюсах долготы сходятся в одной точке. Расстояние для расчета не существует.Если вы используете Java, Javascript или PHP, то есть библиотека, которая точно выполнит эти вычисления, используя забавно сложную (но все же быструю) тригонометрию:
http://www.jstott.me.uk/jcoord/
источник
http://www.jstott.me.uk/jcoord/ - используйте эту библиотеку
источник
Интересно, что упоминания о координатах UTM я не увидел.
https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system .
По крайней мере, если вы хотите добавить км в ту же зону, это должно быть просто (в Python: https://pypi.org/project/utm/ )
utm.from_latlon и utm.to_latlon.
источник
Спасибо Джиму Льюису за отличный ответ, и я хотел бы проиллюстрировать это решение своей функцией в Swift:
В этой функции для преобразования расстояния я использую следующие формулы:
источник
Почему бы не использовать правильно сформулированные геопространственные запросы ???
Вот справочная страница SQL-сервера на геопространственной функции STContains:
https://docs.microsoft.com/en-us/sql/t-sql/spatial-geography/stcontains-geography-data-type?view=sql-server-ver15
или если вы не хотите использовать квадратное и радианное преобразование, вы всегда можете использовать функцию расстояния, чтобы найти нужные вам точки:
Аналогичные функции должны быть практически для любой базы данных.
Если вы правильно реализовали геопространственное индексирование, ваш поиск будет намного быстрее, чем используемый вами подход.
источник