r-tree


Why does the unique R-Tree node appear to be in two enclosing rectangles?


The image from Efficient Batch Query Processing on R-Trees using Floating Buffers - R-Tree Structure shows a number of rectangles along with a corresponding r-tree as:
t(n(a,b),p(c,d,e),q(f,g))),u(r(h,i,j),s(k,l,m)))
In the image of the rectangles e appears to be within both p and q.
Given that the tree has each node only once, I would expect to see only one enclosing rectangle for e, either p or q but not both. Where is my misunderstanding?
The R-tree is different than space partitioning data structures like kd-tree or quad-tree which partition space an then assigns objects into the sub-regions of partitioned space.
The R-tree balancing algorithm groups objects together and encloses them with bounding rectangles representing space occupied by underlying groups. In order to group objects together various algorithms can be used, some of them tend to generate more overlapping groups, other less overlapping groups.
So a bounding rectangle enclosing some group of objects (a node) can overlap a different bounding rectangle enclosing other group of objects (another node). And by coincidence one of the objects can fit into intersection of those two bounding rectangles like in your case. This doesn't mean that it is present in both nodes, it is still stored only in one node. The bounding rectangles of nodes simply overlap.
This means for instance that when a spacial query is performed somewhere inside the intersection of bounding rectangles of different nodes they both must be checked for the existence of objects in this region.
If you are unlucky, the data may be unfortunately arranged.
You cannot guarantee that there is only a single option for placing an object. In particular if data changes and consist of rectangles (not just points).
That is why advanced R trees such as the R*-tree try to reinsert data. This way, they may eventually move this rectangle to another node and reduce the overlap.
IIRC, the R+-tree will insert the rectangle in both leaves.

Related Links

How does R+-Tree manages intersecting objects?
Why does the unique R-Tree node appear to be in two enclosing rectangles?
ELKI DBSCAN R* tree index
R-Tree vs R+-Tree vs R*-Tree
How to bulk-load an r-tree in C#?
how to construct a RTree using given data points

Categories

HOME
compiler-construction
sendgrid
xamarin
vim
variables
coq
kde
angular-material
json.net
mean-stack
electronics
c#-2.0
binary-tree
azure-media-services
here-api
moonmail
size
static-libraries
dtrace
fatal-error
ef-migrations
finite-automata
cx-freeze
abi
mmap
poltergeist
uninstall
nhapi
tooltipster
social-media
typo3-6.2.x
saas
wtx
compatibility
libuv
tinymce-4
react-chartjs
directx-10
bcd
fog
winrt-xaml-toolkit
webtest
git-merge
restlet
mixture-model
c11
opshub
lumberjack
graphenedb
galen
jvm-languages
keydown
s
galleria
yii2-extension
forever
or-tools
spring-android
infix-notation
url-masking
adxstudio-portals
storekit
persist
hover-over
rvest
captivenetwork
asp.net5
associative-array
marching-cubes
cannon.js
python-3.2
feedback
tmuxinator
spidermonkey
citrus-pay
angular-leaflet-directive
web-controls
pretty-print
dereference
apache-commons-net
google-reader
xceed-datagrid
hyprlinkr
openlaszlo
ms-project-server-2010
gridfs
blending
opcache
dotnetnuke-5
ril
qt-faststart
jquery-mobile-dialog
enterprisedb
anonymous-methods
gil
semantic-diff
fireworks
locationlistener
wise
sproutcore-2
castle-monorail
phonon
.net-1.0
signal-handling
uiq3

Resources

Encrypt Message