Пространственный индекс для гео координат?

какую структуру данных можно использовать для эффективного поиска ближайшего соседа в большом наборе гео координат? С "регулярными" пространственными индексными структурами, такими как R-деревья, которые принимают плоские координаты, я вижу две проблемы (есть ли другие, которые я пропустил?):

  • Wraparound на полюсах и международной линии даты
  • искажение расстояний вблизи полюсов

Как можно учитывать эти факторы? Думаю, второй. может компенсироваться преобразованием координат. Можно ли изменить R-дерево, чтобы учесть обертку? Или существуют специализированные структуры геопространственных индексов?

2 ответов


посмотри Geohash.

кроме того, чтобы компенсировать обертку, просто используйте не одно, а три ортогональных R-дерева, так что на поверхности земли не существует точки, в которой все три дерева имеют обертку в этой точке. Затем две точки близки, если они близки по крайней мере к одному из этих деревьев.


могли бы вы использовать алгоритм хэширования с учетом локальности (LSH) в 3 измерениях? Это быстро дало бы вам приблизительную соседнюю группу, которую вы могли бы затем проверить здравомыслие, вычисляя расстояния большого круга.

вот газета описание алгоритма эффективного LSH на поверхности единицы d-мерной гиперсферы. Предположительно, это работает для d=3.