Spatial Queries Spatial Queries n n Given a
- Slides: 32
Spatial Queries
Spatial Queries n n Given a collection of geometric objects (points, lines, polygons, . . . ) organize them on disk, to answer efficiently n point queries n range queries n k-nn queries n spatial joins (‘all pairs’ queries)
Spatial Queries n n Given a collection of geometric objects (points, lines, polygons, . . . ) organize them on disk, to answer n point queries n range queries n k-nn queries n spatial joins (‘all pairs’ queries)
Spatial Queries n n Given a collection of geometric objects (points, lines, polygons, . . . ) organize them on disk, to answer n point queries n range queries n k-nn queries n spatial joins (‘all pairs’ queries)
Spatial Queries n n Given a collection of geometric objects (points, lines, polygons, . . . ) organize them on disk, to answer n point queries n range queries n k-nn queries n spatial joins (‘all pairs’ queries)
Spatial Queries n n Given a collection of geometric objects (points, lines, polygons, . . . ) organize them on disk, to answer n point queries n range queries n k-nn queries n spatial joins (‘all pairs’ queries)
R-tree … 2 5 7 3 8 4 6 11 10 9 2 12 13 3 1 1
R-trees - Range search pseudocode: check the root for each branch, if its MBR intersects the query rectangle apply range-search (or print out, if this is a leaf)
R-trees - NN search P 1 P 3 AC F B q P 2 D E I G H P 4 J
R-trees - NN search n Q: How? (find near neighbor; refine. . . ) P 1 P 3 AC F B q P 2 D E I G H P 4 J
R-trees - NN search n A 1: depth-first search; then range query P 1 AC F B q P 2 D I P 3 E G H P 4 J
R-trees - NN search n A 1: depth-first search; then range query P 1 P 3 AC F B q P 2 D E I G H P 4 J
R-trees - NN search n A 1: depth-first search; then range query P 1 P 3 AC F B q P 2 D E I G H P 4 J
R-trees - NN search: Branch and Bound n n A 2: [Roussopoulos+, sigmod 95]: n At each node, priority queue, with promising MBRs, and their best and worst-case distance main idea: Every face of any MBR contains at least one point of an actual spatial object!
MBR face property n n MBR is a d-dimensional rectangle, which is the minimal rectangle that fully encloses (bounds) an object (or a set of objects) MBR f. p. : Every face of the MBR contains at least one point of some object in the database
Search improvement n Visit an MBR (node) only when necessary n How to do pruning? Using MINDIST and MINMAXDIST
MINDIST n n n MINDIST(P, R) is the minimum distance between a point P and a rectangle R If the point is inside R, then MINDIST=0 If P is outside of R, MINDIST is the distance of P to the closest point of R (one point of the perimeter)
MINDIST computation n MINDIST(p, R) is the minimum distance between p and R with corner points l and u n the closest point in R is at least this distance away R u=(u 1, u 2, …, ud) u p MINDIST = 0 ri = li if pi < li = ui if pi > ui = pi otherwise p l l=(l 1, l 2, …, ld) p
MINMAXDIST n n n MINMAXDIST(P, R): for each dimension, find the closest face, compute the distance to the furthest point on this face and take the minimum of all these (d) distances MINMAXDIST(P, R) is the smallest possible upper bound of distances from P to R MINMAXDIST guarantees that there is at least one object in R with a distance to P smaller or equal to it.
MINMAXDIST computation n MINMAXDIST(p, R) guarantees there is an object within the MBR at a distance less than or equal to MINMAXDIST n the closest point in R is less than this distance away R u=(u 1, u 2, …, ud) u p MINDIST = 0 l l=(l 1, l 2, …, ld) p rmk = uk if pk < ½(lk +uk) = lk otherwise; r. Mi = ui if pi > ½(li +ui) = li otherwise
MINDIST and MINMAXDIST n MINDIST(P, R) <= NN(P) <=MINMAXDIST(P, R) R 1 MINMAXDIST R 4 R 3 MINDIST MINMAXDIST R 2 MINDIST
Pruning in NN search n n n Downward pruning: An MBR R is discarded if there exists another R’ s. t. MINDIST(P, R)>MINMAXDIST(P, R’) Downward pruning: An object O is discarded if there exists an R s. t. the Actual-Dist(P, O) > MINMAXDIST(P, R) Upward pruning: An MBR R is discarded if an object O is found s. t. the MINDIST(P, R) > Actual-Dist(P, O)
Pruning 1 example n Downward pruning: An MBR R is discarded if there exists another R’ s. t. MINDIST(P, R)>MINMAXDIST(P, R’) R R’ MINDIST MINMAXDIST
Pruning 2 example n Downward pruning: An object O is discarded if there exists an R s. t. the Actual-Dist(P, O) > MINMAXDIST(P, R) O R Actual-Dist MINMAXDIST
Pruning 3 example n Upward pruning: An MBR R is discarded if an object O is found s. t. the MINDIST(P, R) > Actual-Dist(P, O) R MINDIST Actual-Dist O
Ordering Distance n MINDIST is an optimistic distance where MINMAXDIST is a pessimistic one. MINDIST P MINMAXDIST
NN-search Algorithm 1. 2. 3. 4. 5. 6. 7. Initialize the nearest distance as infinite distance Traverse the tree depth-first starting from the root. At each Index node, sort all MBRs using an ordering metric and put them in an Active Branch List (ABL). Apply pruning rules 1 and 2 to ABL Visit the MBRs from the ABL following the order until it is empty If Leaf node, compute actual distances, compare with the best NN so far, update if necessary. At the return from the recursion, use pruning rule 3 When the ABL is empty, the NN search returns.
K-NN search n n Keep the sorted buffer of at most k current nearest neighbors Pruning is done using the k-th distance
Another NN search: Best-First n Global order [HS 99] n n n Maintain distance to all entries in a common Priority Queue Use only MINDIST Repeat n n n Inspect the next MBR in the list Add the children to the list and reorder Until all remaining MBRs can be pruned
Nearest Neighbor Search (NN) with R-Trees Best-first (BF) algorihm: n y axis 8 E 1 e d 6 E 8 E 5 g i h E 9 query point contents omitted E 4 a search region b 0 E 2 f E 6 4 2 Root E 1 1 E 7 10 c E 3 2 4 6 a 5 x axis 8 follow E 6 9 c 18 d 13 e 13 E 2 E 8 E 1 2 E 2 E 4 8 E E 4 5 5 E 2 E 7 13 f 10 Report h and terminate {empty} 9 E 13 E 17 9 7 13 E 9 17 g 10 E 7 13 13 9 E 9 17 g 13 E 8 Result 2 E 3 8 5 E 5 5 E 3 8 E 6 9 E 7 5 E 3 8 E 6 9 i E 8 2 h 2 E 5 Heap Visit Root follow E 1 follow E 5 5 E 4 10 Action b 13 E 1 E 4 5 E 3 8 E 2 2 {empty} {(h, 2 )} i 10
HS algorithm Initialize PQ (priority queue) Inesrt. Queue(PQ, Root) While not Is. Empty(PQ) R= Dequeue(PQ) If R is an object Report R and exit (done!) If R is a leaf page node For each O in R, compute the Actual-Dists, Insert. Queue(PQ, O) If R is an index node For each MBR C, compute MINDIST, insert into PQ
Best-First vs Branch and Bound n n n Best-First is the “optimal” algorithm in the sense that it visits all the necessary nodes and nothing more! But needs to store a large Priority Queue in main memory. If PQ becomes large, we have thrashing… BB uses small Lists for each node. Also uses MINMAXDIST to prune some entries
- Spatial data vs non spatial data
- Wildcard queries in information retrieval
- Disadvantages of eye gaze communication system
- Teradata ordbms
- Nnn ir
- Hotel.hotelno=room.hotelno(hotel room)
- Suggestions and queries
- Action queries in access
- Conjunctive queries
- Sql queries for banking database
- Texas rrc completion query
- Any queries
- For any queries
- Sql queries for insert update and delete
- Jafar shah
- Principles of dimensional modeling
- Stefano grazioli
- Texas railroad commission online queries
- Complex sql join queries
- /scdl/bo 46
- Using subqueries to solve queries
- Answering my queries
- Multirelation queries
- J queries
- Ingres algorithm
- Codeapillar troubleshooting
- Basic retrieval queries in sql
- Sql dml
- Standing queries are
- Wide world importers sample queries
- Image enhancement in spatial domain
- Median center of population
- What is spatial data?