Мое приложение загружает набор из примерно 100 тыс. элементов (прямоугольников) из файла карты, а затем строит дерево квадрантов MX-CIF в качестве индекса для быстрого поиска. Дерево квадрантов создается при запуске, и его содержимое не меняется во время выполнения.
(В дереве квадрантов MX-CIF элементы хранятся в наименьшем узле, который полностью их содержит... как внутренние, так и конечные узлы могут содержать элементы)
При первом проходе я нахожу внешние экстенты коллекции, поэтому я знаю, насколько велик корневой узел.
Во втором проходе я добавляю каждый элемент в наименьший узел, который полностью его содержит. Как только узел проходит определенное количество элементов, он разделяется, а дочерние узлы перераспределяются между новым родительским и 4 дочерними узлами.
Учитывая, что у меня есть все элементы заранее, как я могу построить дерево более эффективно?