Я хотел бы хранить тысячи точек широты / долготы в базе данных MySQL. Мне удалось настроить таблицы и добавить данные с использованием геопространственных расширений, где столбец 'координата' - это точка (широта, долгота).
Проблема:
Я хочу быстро найти 'N' ближайших записей к широте 'X' градусов и долготе 'Y' градусов. Поскольку функция Distance () еще не была реализована, я использовал функцию GLength () для вычисления расстояния между (X, Y) и каждой из записей, сортировки по возрастанию расстояния и ограничения на результаты «N». Проблема в том, что это не вычисление кратчайшего расстояния со сферической геометрией. Это означает, что если Y = 179,9 градуса, список ближайших записей будет включать только долготы, начинающиеся с 179,9 и уменьшающиеся, даже если существуют более близкие записи с долготами, увеличивающимися с -179,9.
Как обычно обрабатывать разрыв по долготе при работе со сферическими геометриями в базах данных? Для этого должно быть простое решение, но я просто должен искать неправильную вещь, потому что я не нашел ничего полезного.
Должен ли я просто забыть функцию GLength () и создать свою собственную функцию для вычисления углового разделения? Если я сделаю это, все еще будет быстро и использовать преимущества геопространственных расширений?
Спасибо!
Josh
UPDATE:
Это именно то, что я описываю выше. Однако это только для SQL Server. Очевидно, что SQL Server имеет типы данных Geometry и Geography. География делает именно то, что мне нужно. Есть ли что-то похожее в MySQL?