mySQL запрос долготы и широты для других строк в радиусе x миль

В настоящее время у меня есть база данных, заполненная примерно 10 тысячами строк. Все они имеют долготу / широту, основанную на центре почтового индекса. Я нашел запрос, который сейчас пытаюсь расширить, но в целом он работает до определенной степени. Однако в моем примере ниже я пытаюсь найти объекты в радиусе 25 миль, что в целом, похоже, работает по большей части. Большинство моих результатов соответствуют критериям 25 миль, однако я получаю несколько, которые отклоняются от нормы на расстояние от 86 до 800 миль.

Пример: Это мой центральный широта / долгота: 37.2790669, -121.874722 = Сан-Хосе, Калифорния. Я получаю такие результаты: 33.016928, -116.846046 = Сан-Диего, Калифорния, который находится примерно в 355 милях от Сан-Хосе.

мой текущий запрос выглядит так:

SELECT *,(((acos(sin(($lat*pi()/180)) * sin((`latitude`*pi()/180))+cos(($lat*pi()/180))
* cos((`latitude`*pi()/180)) * cos((($lon - `longitude`)*pi()/180))))*180/pi())*60*1.1515)
AS `distance` FROM `geo_locations` HAVING `distance` <= 25 ORDER BY `distance` ASC"
35
задан th3morg 12 December 2014 в 15:22
поделиться