Boost rtree.bounds (): получение большего количества блоков и / или доступ к его структуре - PullRequest
0 голосов
/ 10 января 2019

В настоящее время я работаю с распределенными сетками в численном моделировании: я использую вспомогательное дерево из ограничивающих рамок в качестве инструмента поиска. У меня есть много ограничительных рамок, каждая из которых имеет тег (целое число без знака: процесс, который «владеет» ячейкой).

На глобальном уровне мне нужно более «неточное» описание: таким образом я использую rtree.bounds (), а затем отправляю это окно с глобальным сообщением. К сожалению, это не всегда работает, так как теги генерируются следующими способами:

  1. боксы с одинаковым тегом сгруппированы вместе: в этом случае это работает как шарм.
  2. поля с одинаковым тегом образуют два «соединенных» кластера: в этом случае дополнительное пустое пространство означает, что последующие вычисления сделают много бесполезной связи

Поскольку rtree состоит из ограничивающих прямоугольников, я пытаюсь получить доступ к структуре rtree, чтобы получить два или более (возможно, несколько) сырых ограничивающих прямоугольника (первый / второй слой rtree). Это возможно? Или есть быстрый алгоритм для разделения поля rtree.bounds ()?

В настоящее время я вырезаю ограничивающие рамки «вручную», но, поскольку они уже есть в дереве, я считаю, что это пустая трата вычислительной мощности.

Редактировать: Я нашел этот форум http://boost -geometry.203548.n3.nabble.com / Как я могу получить узлы-MBRs-of-R-Tree-td4026812. HTML , который кажется ответом на мой вопрос. Я постараюсь использовать его и, если решу, опубликую решение:)

1 Ответ

0 голосов
/ 30 апреля 2019

Как вы узнали, существует способ доступа к узлам, но он не является частью официального интерфейса R-дерева. Вы должны реализовать посетителя, пересекающего R-дерево, и применить его к R-дереву, используя boost::geometry::index::detail::rtree::utilities::view.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...