как сортировать географические данные для быстрого поиска

У меня есть несколько объектов, которые географически -локализованы (. Для каждого объекта у меня есть широта + долгота ). Мое приложение должно отображать объекты, которые находятся в 3 километрах от GPS-положения мобильного устройства. У меня есть несколько тысяч объектов, и они локализованы на большой территории (, например, несколько штатов США, несколько небольших стран ), то есть в моем списке объектов один объект может находиться в Нью-Йорке, а другой — в Майами, но я могут быть также объекты, находящиеся очень близко (в нескольких метрах ).

В настоящее время мое приложение выполняет итеративный поиск. Для каждого объекта я вычисляю расстояние с позицией GPS, и если расстояние <= 3 км, я сохраняю объект, иначе я его игнорирую. Этот алгоритм не очень эффективен, и я ищу алгоритм, который даст лучшую производительность.

Я полагаю, что есть способ сортировать мои объекты с помощью геокоординаты, а затем быстрее находить объекты, расположенные вокруг позиции GPS.

Моя текущая идея состоит в том, чтобы просто вычислить прямоугольник с «крайними точками», север / юг / восток / запад (с 3 км от позиции GPS ), чтобы ограничить зону поиска. Далее я вычислю расстояние только для объектов внутри этого прямоугольника. Я думаю, что можно было бы сделать что-то лучше, но у меня нет такой идеи...

Любое предложение будет оценено; -)Спасибо,

Себ.

7
задан sebastien 12 July 2012 в 20:26
поделиться