У меня есть набор очень многих прямоугольников, выровненных по осям, которые могут быть вложенными и пересекающимися. Я хочу иметь возможность найти все прямоугольники, которые окружают/связывают точку запроса. Что было бы хорошим подходом для этого? РЕДАКТИРОВАТЬ: Дополнительная информация-
1. Под очень многими я имел в виду ~ 100 миллионов или более.
2. Прямоугольники распределены по огромному промежутку (пространству страны). Ограничений по размерам нет.
3. Да, прямоугольники могут быть предварительно обработаны и сохранены в древовидной структуре.
4. Вставки и удаления в реальном времени не требуются.
5. Я только нужно найти все прямоугольники, окружающие/ограничивающие заданную точку запроса. Мне не нужны Ближайшие Соседи.
Как вы могли догадаться, это приложение для геозонирования в реальном времени на мобильном устройстве и, следовательно, -
6. Нет необходимости повторять поиск для прямоугольников, достаточно удаленных от точки.
Я пробовал KD-деревья и Quad-деревья, приближая каждый прямоугольник к точке. Они дали мне различные характеристики в зависимости от размера прямоугольников. Есть ли более прямой способ сделать это? Как насчет r деревьев?