Упорядочить таблицу по близости к определенной широте/долготе (с использованием MySQL+PHP)

MySQL (таблица)

id | url |    lat    |    lng
----------------------------------
1  |  x  | 44.339565 | -101.337891
----------------------------------
2  |  y  | 44.150681 | -101.074219
----------------------------------
3  |  z  | 43.897892 | -100.634766

то, что я хочу сделать сейчас, это упорядочить список в соответствии с их близостью к (43.834527,-99.140625).

$a = mysql_query("SELECT * FROM table ORDER BY proximity DESC");
while($b = mysql_fetch_assoc($a))
{
echo $b['url'].'<br />';
}

person Community    schedule 06.09.2010    source источник


Ответы (1)


Возможно, вам будет интересно ознакомиться со следующей презентацией:

Автор описывает, как вы можете использовать формулу Хаверсина в MySQL, чтобы упорядочить по близости и ограничить поиск определенный диапазон. Он также описывает, как избежать полного сканирования таблицы для таких запросов, используя традиционные индексы для столбцов широты и долготы.


1 PDF-версия

person Daniel Vassallo    schedule 06.09.2010