Пространственный индекс для гео координат?
какую структуру данных можно использовать для эффективного поиска ближайшего соседа в большом наборе гео координат? С "регулярными" пространственными индексными структурами, такими как R-деревья, которые принимают плоские координаты, я вижу две проблемы (есть ли другие, которые я пропустил?):
- Wraparound на полюсах и международной линии даты
- искажение расстояний вблизи полюсов
Как можно учитывать эти факторы? Думаю, второй. может компенсироваться преобразованием координат. Можно ли изменить R-дерево, чтобы учесть обертку? Или существуют специализированные структуры геопространственных индексов?
2 ответов
посмотри Geohash.
кроме того, чтобы компенсировать обертку, просто используйте не одно, а три ортогональных R-дерева, так что на поверхности земли не существует точки, в которой все три дерева имеют обертку в этой точке. Затем две точки близки, если они близки по крайней мере к одному из этих деревьев.
могли бы вы использовать алгоритм хэширования с учетом локальности (LSH) в 3 измерениях? Это быстро дало бы вам приблизительную соседнюю группу, которую вы могли бы затем проверить здравомыслие, вычисляя расстояния большого круга.
вот газета описание алгоритма эффективного LSH на поверхности единицы d-мерной гиперсферы. Предположительно, это работает для d=3.