VGServer::RTree::Tree< _DataType, _DataTypeCallback > Class Template Reference

Tree is a class implementing an R*-Tree used to accelerate access to the edges during a getArea query. More...

#include <RTree.h>

List of all members.

Public Types

typedef const _DataType & DataRef
typedef _DataType DataType
typedef _DataTypeCallback DataTypeCallback
typedef unsigned int pageid_t

Public Member Functions

AreaType calcOverlap () const
 calculate the sum of all overlaps in all levels
void calcStats (Stats &s) const
 calculate the statistics of the tree
AreaType calcWasteArea () const
 calculate the sum of all "wasted" areas in all levels
void clear ()
 reset the R-Tree by removing all elements
bool deleteRect (const DataRef rmdata)
 delete function of the R-Tree
bool empty () const
 check if the tree is empty
void insertRect (const DataRef newdata)
 insert function of the R-Tree
bool loadSnapshot (std::istream &s)
 reload the serialized representation
Treeoperator= (const Tree &o)
 assigns the data of the rtree, does not copy the callback
template<typename NNVisitor>
void queryNearestNeighbor (const Point &point, NNVisitor &vis) const
 query the R-Tree for the nearest neighbor rectangles to a certain point.
template<typename Visitor>
void queryRange (const Rect &range, Visitor &vis) const
 query the R-Tree for all rectangles which intersect with the given search rectangle.
void saveSnapshot (std::ostream &s) const
 save a serialized representation to the file
void setCallback (DataTypeCallback *newcb)
 change the callback
void setReinsertNum (int rn)
 change reinsert number
unsigned int size () const
 return the number of elements in the R-Tree
bool testTree () const
 assertion of various tree invariants
 Tree (const Tree &o)
 copy construct a tree, copies the callback
 Tree (DataTypeCallback *cb)
void writeFig (bool writefigheader, std::ostream &o, int maxlevel) const
 write the rectangles out in the fig format. stop at a given level (0 are the leaves)

Public Attributes

unsigned int reinsertnum

Static Public Attributes

static const unsigned int pageminfill = 12
static const unsigned int pagesize = 32

Protected Member Functions

template<typename NodeData>
void reinsertRect (NodeData &newdata, unsigned int maxlevel, char *overflowedLevel)
 reinsert used by the R*-Tree algorithm. inserts a data element into the tree at maxlevel

Classes

class  InnerNode
 structure used to access fields of an inner node page of the R-Tree More...
struct  InnerNodeData
 data struct of the elements found in each inner node More...
class  LeafNode
 structure used to access fields of a leaf node page of the R-Tree More...
class  LeafNodeData
 data struct of the elements in the leaf nodes. it is based on the template parameter More...
class  NNPQData
 class containing the data and ordering function of the nearest neighbor priority queue More...
class  Node
 node page augmented by a data type: either the childMBR + childPageId for InnerNodes or the childData for LeafNodes. More...
class  NodeHead
 common data structures found at the beginning of each node page. More...
class  PageManager
 poor man's page manager. used so that no pointers are saved in the R-Tree data More...
struct  ReinsertDist
 data structed used to order children to reinsert More...


Detailed Description

template<typename _DataType, typename _DataTypeCallback>
class VGServer::RTree::Tree< _DataType, _DataTypeCallback >

Tree is a class implementing an R*-Tree used to accelerate access to the edges during a getArea query.

Definition at line 309 of file RTree.h.


Member Typedef Documentation

template<typename _DataType, typename _DataTypeCallback>
typedef const _DataType& VGServer::RTree::Tree< _DataType, _DataTypeCallback >::DataRef

Definition at line 315 of file RTree.h.

template<typename _DataType, typename _DataTypeCallback>
typedef _DataType VGServer::RTree::Tree< _DataType, _DataTypeCallback >::DataType

Definition at line 314 of file RTree.h.

template<typename _DataType, typename _DataTypeCallback>
typedef _DataTypeCallback VGServer::RTree::Tree< _DataType, _DataTypeCallback >::DataTypeCallback

Definition at line 317 of file RTree.h.

template<typename _DataType, typename _DataTypeCallback>
typedef unsigned int VGServer::RTree::Tree< _DataType, _DataTypeCallback >::pageid_t

Definition at line 319 of file RTree.h.


Constructor & Destructor Documentation

template<typename _DataType, typename _DataTypeCallback>
VGServer::RTree::Tree< _DataType, _DataTypeCallback >::Tree ( DataTypeCallback cb  )  [inline, explicit]

Definition at line 2178 of file RTree.h.

References VGServer::RTree::Tree< _DataType, _DataTypeCallback >::NodeHead::initializeRoot().

template<typename _DataType, typename _DataTypeCallback>
VGServer::RTree::Tree< _DataType, _DataTypeCallback >::Tree ( const Tree< _DataType, _DataTypeCallback > &  o  )  [inline]

copy construct a tree, copies the callback

Definition at line 2194 of file RTree.h.

References VGServer::RTree::Tree< _DataType, _DataTypeCallback >::DTCallback, VGServer::RTree::Tree< _DataType, _DataTypeCallback >::entries, VGServer::RTree::Tree< _DataType, _DataTypeCallback >::levels, VGServer::RTree::Tree< _DataType, _DataTypeCallback >::pageman, VGServer::RTree::Tree< _DataType, _DataTypeCallback >::reinsertnum, and VGServer::RTree::Tree< _DataType, _DataTypeCallback >::rootpage.


Member Function Documentation

template<typename _DataType, typename _DataTypeCallback>
AreaType VGServer::RTree::Tree< _DataType, _DataTypeCallback >::calcOverlap (  )  const [inline]

calculate the sum of all overlaps in all levels

Definition at line 2518 of file RTree.h.

References VGServer::RTree::Tree< _DataType, _DataTypeCallback >::NodeHead::level.

template<typename _DataType, typename _DataTypeCallback>
void VGServer::RTree::Tree< _DataType, _DataTypeCallback >::calcStats ( Stats s  )  const [inline]

calculate the statistics of the tree

Definition at line 2502 of file RTree.h.

References VGServer::RTree::Tree< _DataType, _DataTypeCallback >::NodeHead::level, and VGServer::RTree::Stats::level.

template<typename _DataType, typename _DataTypeCallback>
AreaType VGServer::RTree::Tree< _DataType, _DataTypeCallback >::calcWasteArea (  )  const [inline]

calculate the sum of all "wasted" areas in all levels

Definition at line 2531 of file RTree.h.

References VGServer::RTree::Tree< _DataType, _DataTypeCallback >::NodeHead::level.

template<typename _DataType, typename _DataTypeCallback>
void VGServer::RTree::Tree< _DataType, _DataTypeCallback >::clear (  )  [inline]

reset the R-Tree by removing all elements

Definition at line 2219 of file RTree.h.

References VGServer::RTree::Tree< _DataType, _DataTypeCallback >::NodeHead::initializeRoot().

template<typename _DataType, typename _DataTypeCallback>
bool VGServer::RTree::Tree< _DataType, _DataTypeCallback >::deleteRect ( const DataRef  rmdata  )  [inline]

delete function of the R-Tree

Definition at line 2282 of file RTree.h.

References VGServer::RTree::Tree< _DataType, _DataTypeCallback >::LeafNode::deleteDataLeaf(), and VGServer::RTree::Tree< _DataType, _DataTypeCallback >::NodeHead::level.

template<typename _DataType, typename _DataTypeCallback>
bool VGServer::RTree::Tree< _DataType, _DataTypeCallback >::empty (  )  const [inline]

check if the tree is empty

Definition at line 2548 of file RTree.h.

template<typename _DataType, typename _DataTypeCallback>
void VGServer::RTree::Tree< _DataType, _DataTypeCallback >::insertRect ( const DataRef  newdata  )  [inline]

insert function of the R-Tree

Definition at line 2248 of file RTree.h.

References VGServer::RTree::Tree< _DataType, _DataTypeCallback >::Node< _NodeData >::insertChild(), and VGServer::RTree::Tree< _DataType, _DataTypeCallback >::NodeHead::level.

template<typename _DataType, typename _DataTypeCallback>
bool VGServer::RTree::Tree< _DataType, _DataTypeCallback >::loadSnapshot ( std::istream &  s  )  [inline]

reload the serialized representation

Definition at line 2412 of file RTree.h.

template<typename _DataType, typename _DataTypeCallback>
Tree& VGServer::RTree::Tree< _DataType, _DataTypeCallback >::operator= ( const Tree< _DataType, _DataTypeCallback > &  o  )  [inline]

assigns the data of the rtree, does not copy the callback

Definition at line 2206 of file RTree.h.

References VGServer::RTree::Tree< _DataType, _DataTypeCallback >::entries, VGServer::RTree::Tree< _DataType, _DataTypeCallback >::levels, VGServer::RTree::Tree< _DataType, _DataTypeCallback >::pageman, VGServer::RTree::Tree< _DataType, _DataTypeCallback >::reinsertnum, and VGServer::RTree::Tree< _DataType, _DataTypeCallback >::rootpage.

template<typename _DataType, typename _DataTypeCallback>
template<typename NNVisitor>
void VGServer::RTree::Tree< _DataType, _DataTypeCallback >::queryNearestNeighbor ( const Point point,
NNVisitor &  vis 
) const [inline]

query the R-Tree for the nearest neighbor rectangles to a certain point.

call the visitor template class for narrowing it down.

Definition at line 2621 of file RTree.h.

References VGServer::RTree::Tree< _DataType, _DataTypeCallback >::NodeHead::childnum, VGServer::RTree::Tree< _DataType, _DataTypeCallback >::Node< _NodeData >::children, VGServer::RTree::Point::getMinimumDistanceSquare(), and VGServer::RTree::Tree< _DataType, _DataTypeCallback >::NodeHead::level.

template<typename _DataType, typename _DataTypeCallback>
template<typename Visitor>
void VGServer::RTree::Tree< _DataType, _DataTypeCallback >::queryRange ( const Rect range,
Visitor &  vis 
) const [inline]

query the R-Tree for all rectangles which intersect with the given search rectangle.

call the template class for each of them.

Definition at line 2554 of file RTree.h.

References VGServer::RTree::Tree< _DataType, _DataTypeCallback >::NodeHead::childnum, VGServer::RTree::Tree< _DataType, _DataTypeCallback >::Node< _NodeData >::children, VGServer::RTree::Tree< _DataType, _DataTypeCallback >::NodeHead::level, and VGServer::RTree::Rect::valid().

template<typename _DataType, typename _DataTypeCallback>
template<typename NodeData>
void VGServer::RTree::Tree< _DataType, _DataTypeCallback >::reinsertRect ( NodeData &  newdata,
unsigned int  maxlevel,
char *  overflowedLevel 
) [inline, protected]

reinsert used by the R*-Tree algorithm. inserts a data element into the tree at maxlevel

Definition at line 2000 of file RTree.h.

References VGServer::RTree::Tree< _DataType, _DataTypeCallback >::NodeHead::level.

Referenced by VGServer::RTree::Tree< _DataType, _DataTypeCallback >::LeafNode::deleteDataLeaf(), and VGServer::RTree::Tree< _DataType, _DataTypeCallback >::Node< VGServer::RTree::Tree::InnerNodeData >::reinsertData().

template<typename _DataType, typename _DataTypeCallback>
void VGServer::RTree::Tree< _DataType, _DataTypeCallback >::saveSnapshot ( std::ostream &  s  )  const [inline]

save a serialized representation to the file

Definition at line 2352 of file RTree.h.

template<typename _DataType, typename _DataTypeCallback>
void VGServer::RTree::Tree< _DataType, _DataTypeCallback >::setCallback ( DataTypeCallback newcb  )  [inline]

change the callback

Definition at line 2235 of file RTree.h.

template<typename _DataType, typename _DataTypeCallback>
void VGServer::RTree::Tree< _DataType, _DataTypeCallback >::setReinsertNum ( int  rn  )  [inline]

change reinsert number

Definition at line 2241 of file RTree.h.

template<typename _DataType, typename _DataTypeCallback>
unsigned int VGServer::RTree::Tree< _DataType, _DataTypeCallback >::size (  )  const [inline]

return the number of elements in the R-Tree

Definition at line 2544 of file RTree.h.

template<typename _DataType, typename _DataTypeCallback>
bool VGServer::RTree::Tree< _DataType, _DataTypeCallback >::testTree (  )  const [inline]

assertion of various tree invariants

Definition at line 2485 of file RTree.h.

References VGServer::RTree::Tree< _DataType, _DataTypeCallback >::NodeHead::level.

template<typename _DataType, typename _DataTypeCallback>
void VGServer::RTree::Tree< _DataType, _DataTypeCallback >::writeFig ( bool  writefigheader,
std::ostream &  o,
int  maxlevel 
) const [inline]

write the rectangles out in the fig format. stop at a given level (0 are the leaves)

Definition at line 2315 of file RTree.h.

References VGServer::RTree::Tree< _DataType, _DataTypeCallback >::NodeHead::level, VGServer::RTree::Tree< _DataType, _DataTypeCallback >::NodeHead::nodeMBR, VGServer::RTree::Rect::x1, VGServer::RTree::Rect::x2, VGServer::RTree::Rect::y1, and VGServer::RTree::Rect::y2.

Referenced by VGServer::RTree::Tree< _DataType, _DataTypeCallback >::Node< VGServer::RTree::Tree::InnerNodeData >::writeFig().


Member Data Documentation

template<typename _DataType, typename _DataTypeCallback>
const unsigned int VGServer::RTree::Tree< _DataType, _DataTypeCallback >::pageminfill = 12 [static]

Definition at line 323 of file RTree.h.

template<typename _DataType, typename _DataTypeCallback>
const unsigned int VGServer::RTree::Tree< _DataType, _DataTypeCallback >::pagesize = 32 [static]

Definition at line 321 of file RTree.h.

template<typename _DataType, typename _DataTypeCallback>
unsigned int VGServer::RTree::Tree< _DataType, _DataTypeCallback >::reinsertnum

Definition at line 325 of file RTree.h.

Referenced by VGServer::RTree::Tree< _DataType, _DataTypeCallback >::Node< VGServer::RTree::Tree::InnerNodeData >::insertChild(), VGServer::RTree::Tree< _DataType, _DataTypeCallback >::operator=(), VGServer::RTree::Tree< _DataType, _DataTypeCallback >::Node< VGServer::RTree::Tree::InnerNodeData >::reinsertData(), and VGServer::RTree::Tree< _DataType, _DataTypeCallback >::Tree().


The documentation for this class was generated from the following file:
Generated on Wed Sep 27 14:34:01 2006 for VGServer by  doxygen 1.4.7