EEEK! - Рассчитать радиус, имея только широты и долготы - PullRequest
1 голос
/ 02 июня 2011

У меня есть база данных MySQL, которая выглядит так:

Postcode int(4),
City varchar, 
State varchar,
Latitude decimal(7,4),
Longitude decimal(7,4)

Я хочу, чтобы пользователь ввел свой почтовый индекс (например, 1660) и радиус х (например, 10) миль или километров. Когда они нажимают кнопку поиска, я хочу вернуть список всех городов в этом радиусе. У меня есть база данных, которая содержит все почтовые индексы, города, широты, долготы и т. Д. Всех районов Австралии.

1 Ответ

1 голос
/ 11 августа 2011

Если бы вы могли пожертвовать некоторой точностью (выбрав города в прямоугольной области в 10 милях от почтового индекса 1660), решение может быть таким простым:

  1. Узнать широту и долготупочтовый индекс 1660
  2. Рассчитать верхний левый и правый нижний угол области прямоугольника (10 миль влево и вверх, 10 миль внизу и справа)
  3. Используйте запрос как: выберите городиз таблицы, где широта между bottom_right_latitude и top_left_latitude и долгота между top_left_longitude и bottom_right_longitude

Если это должен быть точно радиус 10 миль (что означает, что область является кругом), то решение будет очень сложным,я не могу сделать это в одном запросе, я боюсь.Вам нужно подумать о некоторых вспомогательных столбцах и использовать для этого формулы вычисления расстояния и пеленга.

Ссылка: Рассчитать расстояние, пеленг и многое другое между точками широты / долготы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...