Я составил следующую таблицу MySQL для хранения координат широты/долготы наряду с названием каждой точки:
CREATE TABLE `points` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(128) NOT NULL,
`location` point NOT NULL,
PRIMARY KEY (`id`),
SPATIAL KEY `location` (`location`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
Я пытаюсь запросить:
Все примеры, которые я нашел, относятся к использованию минимального ограничительного прямоугольника (MBR), а не радиуса. Таблица содержит приблизительно 1 миллион точек, таким образом, эта потребность должна быть максимально эффективной.
Спасибо вам обоим за ответы.
В конце концов я нашел решение на http://www.movable-type.co.uk/scripts/latlong-db.html .
Радиус не индексируется эффективно. Вы должны использовать ограничивающий прямоугольник, чтобы быстро получить точки, которые вы, вероятно, ищете, а затем отфильтровать точки за пределами радиуса.