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