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