1 / 27

Spatial Indexing

Spatial Indexing. SAMs. Spatial Indexing. Point Access Methods can index only points. What about regions? Z-ordering and quadtrees Use the transformation technique and a PAM New methods: Spatial Access Methods SAMs R-tree and variations. Problem.

adora
Download Presentation

Spatial Indexing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Spatial Indexing SAMs

  2. Spatial Indexing • Point Access Methods can index only points. What about regions? • Z-ordering and quadtrees • Use the transformation technique and a PAM • New methods: Spatial Access Methods SAMs • R-tree and variations

  3. Problem • Given a collection of geometric objects (points, lines, polygons, ...) • organize them on disk, to answer spatial queries (range, nn, etc)

  4. Transformation Technique • Map an d-dim MBR into a point: ex. [(xmin, xmax) (ymin, ymax)] => (xmin, xmax, ymin, ymax) • Use a PAM to index the 2d points • Given a range query, map the query into the 2d space and use the PAM to answer it

  5. R-trees • [Guttman 84] Main idea: allow parents to overlap! • => guaranteed 50% utilization • => easier insertion/split algorithms. • (only deal with Minimum Bounding Rectangles - MBRs)

  6. R-trees • A multi-way external memory tree • Index nodes and data (leaf) nodes • All leaf nodes appear on the same level • Every node contains between m and M entries • The root node has at least 2 entries (children)

  7. Example • eg., w/ fanout 4: group nearby rectangles to parent MBRs; each group -> disk page I C A G H F B J E D

  8. A H D F G B E I C J Example • F=4 P1 P3 I C A G H F B J E P4 P2 D

  9. P1 A H D F P2 G B E I P3 C J P4 Example • F=4 P1 P3 I C A G H F B J E P4 P2 D

  10. P1 A P2 B P3 C P4 R-trees - format of nodes • {(MBR; obj_ptr)} for leaf nodes x-low; x-high y-low; y-high ... obj ptr ...

  11. P1 A P2 B P3 C P4 R-trees - format of nodes • {(MBR; node_ptr)} for non-leaf nodes x-low; x-high y-low; y-high ... node ptr ...

  12. P1 A H D F P2 G B E I P3 C J P4 R-trees:Search P1 P3 I C A G H F B J E P4 P2 D

  13. P1 A H D F P2 G B E I P3 C J P4 R-trees:Search P1 P3 I C A G H F B J E P4 P2 D

  14. R-trees:Search • Main points: • every parent node completely covers its ‘children’ • a child MBR may be covered by more than one parent - it is stored under ONLY ONE of them. (ie., no need for dup. elim.) • a point query may follow multiple branches. • everything works for any(?) dimensionality

  15. P1 A H D F P2 G B E I P3 C J P4 R-trees:Insertion Insert X P1 P3 I C A G H F B X J E P4 P2 D X

  16. P1 A H D F P2 G B E I P3 C J P4 R-trees:Insertion Insert Y P1 P3 I C A G H F B J Y E P4 P2 D

  17. P1 A H D F P2 G B E I P3 C J P4 R-trees:Insertion • Extend the parent MBR P1 P3 I C A G H F B J Y E P4 P2 D Y

  18. R-trees:Insertion • How to find the next node to insert the new object? • Using ChooseLeaf: Find the entry that needs the least enlargement to include Y. Resolve ties using the area (smallest) • Other methods (later)

  19. P1 A H D F P2 G B E I P3 C J P4 R-trees:Insertion • If node is full then Split : ex. Insert w P1 P3 K I C A G W H F B J K E P4 P2 D

  20. Q1 P3 P1 D H A C F Q2 P5 G K B E I P2 W J P4 R-trees:Insertion • If node is full then Split : ex. Insert w P3 P5 I K C A P1 G W H F B J E P4 P2 D Q2 Q1

  21. R-trees:Split • Split node P1: partition the MBRs into two groups. • (A1: plane sweep, • until 50% of rectangles) • A2: ‘linear’ split • A3: quadratic split • A4: exponential split: • 2M-1 choices P1 K C A W B

  22. seed2 R R-trees:Split • pick two rectangles as ‘seeds’; • assign each rectangle ‘R’ to the ‘closest’ ‘seed’ seed1

  23. seed2 R R-trees:Split • pick two rectangles as ‘seeds’; • assign each rectangle ‘R’ to the ‘closest’ ‘seed’: • ‘closest’: the smallest increase in area seed1

  24. R-trees:Split • How to pick Seeds: • Linear:Find the highest and lowest side in each dimension, normalize the separations, choose the pair with the greatest normalized separation • Quadratic: For each pair E1 and E2, calculate the rectangle J=MBR(E1, E2) and d= J-E1-E2. Choose the pair with the largest d

  25. R-trees:Insertion • Use the ChooseLeaf to find the leaf node to insert an entry E • If leaf node is full, then Split, otherwise insert there • Propagate the split upwards, if necessary • Adjust parent nodes

  26. R-Trees:Deletion • Find the leaf node that contains the entry E • Remove E from this node • If underflow: • Eliminate the node by removing the node entries and the parent entry • Reinsert the orphaned (other entries) into the tree using Insert • Other method (later)

  27. R-trees: Variations • R+-tree: DO not allow overlapping, so split the objects (similar to z-values) • R*-tree: change the insertion, deletion algorithms (minimize not only area but also perimeter, forced re-insertion ) • Hilbert R-tree: use the Hilbert values to insert objects into the tree

More Related