spatial queries - school of computinglifeifei/cis5930/lecture4.pdfspatial queries given a collection...
TRANSCRIPT
![Page 1: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/1.jpg)
Spatial Queries
Nearest Neighbor Queries
![Page 2: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/2.jpg)
Spatial Queries
Given a collection of geometric objects (points, lines, polygons, ...)
organize them on disk, to answer efficiently
point queries
range queries
k-nn queries
spatial joins („all pairs‟ queries)
![Page 3: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/3.jpg)
Spatial Queries
Given a collection of geometric objects (points, lines, polygons, ...)
organize them on disk, to answer
point queries
range queries
k-nn queries
spatial joins („all pairs‟ queries)
![Page 4: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/4.jpg)
Spatial Queries
Given a collection of geometric objects (points, lines, polygons, ...)
organize them on disk, to answer
point queries
range queries
k-nn queries
spatial joins („all pairs‟ queries)
![Page 5: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/5.jpg)
Spatial Queries
Given a collection of geometric objects (points, lines, polygons, ...)
organize them on disk, to answer
point queries
range queries
k-nn queries
spatial joins („all pairs‟ queries)
![Page 6: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/6.jpg)
Spatial Queries
Given a collection of geometric objects (points, lines, polygons, ...)
organize them on disk, to answer
point queries
range queries
k-nn queries
spatial joins („all pairs‟ queries)
![Page 7: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/7.jpg)
R-tree
1
2
3
4
5
6
78
910
11
12
13
1
2 3
…
![Page 8: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/8.jpg)
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)
![Page 9: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/9.jpg)
R-trees - NN search
A
B
C
DE
FG
H
I
J
P1
P2
P3
P4q
![Page 10: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/10.jpg)
R-trees - NN search
Q: How? (find near neighbor; refine...)
A
B
C
DE
FG
H
I
J
P1
P2
P3
P4q
![Page 11: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/11.jpg)
R-trees - NN search
A1: depth-first search; then range query
A
B
C
DE
FG
H
I
J
P1
P2
P3
P4q
![Page 12: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/12.jpg)
R-trees - NN search
A1: depth-first search; then range query
A
B
C
DE
FG
H
I
J
P1
P2
P3
P4q
![Page 13: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/13.jpg)
R-trees - NN search
A1: depth-first search; then range query
A
B
C
DE
FG
H
I
J
P1
P2
P3
P4q
![Page 14: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/14.jpg)
R-trees - NN search: Branch and Bound
A2: [Roussopoulos+, sigmod95]:
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!
![Page 15: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/15.jpg)
MBR face property
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
![Page 16: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/16.jpg)
Search improvement
Visit an MBR (node) only when necessary
How to do pruning? Using MINDIST and MINMAXDIST
![Page 17: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/17.jpg)
MINDIST
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)
![Page 18: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/18.jpg)
MINDIST computation
MINDIST(p,R) is the minimum distance between p and R with corner points l and u
the closest point in R is at least this distance away
ri = li if pi < li
= ui if pi > ui
= pi otherwise
pp
p
R
l
u
MINDIST = 0
d
i
ii rpRPMINDIST1
2)(),(
l=(l1, l2, …, ld)
u=(u1, u2, …, ud)
),(),(, oPRPMINDISTRo
![Page 19: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/19.jpg)
MINMAXDIST
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.
),(),(, RPMINMAXDISToPRo
![Page 20: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/20.jpg)
MINMAXDIST computation
MINMAXDIST(p,R) guarantees there is an object within the MBR at a distance less than or equal to MINMAXDIST
the closest point in R is less than this distance away
rmk = lk if pk < ½(lk +uk)
= tk otherwise;
rMi = ui if pi > ½(li +ui)
= li otherwise
p
p
R
l
u
MINDIST = 0
)|||(|min),(1,
2
1
niki
iikkdk
rMprmpRPMINMAXDIST
l=(l1, l2, …, ld)
u=(u1, u2, …, ud)
![Page 21: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/21.jpg)
MINDIST and MINMAXDIST
MINDIST(P, R) <= NN(P) <=MINMAXDIST(P,R)
R1
R2
R3R4
MINDIST
MINMAXDIST
MINDIST
MINMAXDIST
MINMAXDIST
MINDIST
![Page 22: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/22.jpg)
Pruning in NN search
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)
![Page 23: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/23.jpg)
Pruning 1 example
Downward pruning: An MBR R is discarded if there exists another R‟ s.t. MINDIST(P,R)>MINMAXDIST(P,R‟)
MINDIST
MINMAXDIST
R
R‟
![Page 24: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/24.jpg)
Pruning 2 example
Downward pruning: An object O is discarded if there exists an R s.t. the Actual-Dist(P,O) > MINMAXDIST(P,R)
Actual-Dist
MINMAXDIST
O
R
![Page 25: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/25.jpg)
Pruning 3 example
Upward pruning: An MBR R is discarded if an object O is found s.t. the MINDIST(P,R) > Actual-Dist(P,O)
MINDIST
Actual-Dist
R
O
![Page 26: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/26.jpg)
Ordering Distance
MINDIST is an optimistic distance where MINMAXDIST is a pessimistic one.
P
MINDIST
MINMAXDIST
![Page 27: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/27.jpg)
NN-search Algorithm
1. Initialize the nearest distance as infinite distance
2. 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).
3. Apply pruning rules 1 and 2 to ABL
4. Visit the MBRs from the ABL following the order until it is empty
5. If Leaf node, compute actual distances, compare with the best NN so far, update if necessary.
6. At the return from the recursion, use pruning rule 3
7. When the ABL is empty, the NN search returns.
![Page 28: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/28.jpg)
K-NN search
Keep the sorted buffer of at most k current nearest neighbors
Pruning is done using the k-th distance
![Page 29: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/29.jpg)
Another NN search: Best-First
Global order [HS99] Maintain distance to all entries in a common Priority
Queue
Use only MINDIST
Repeat
Inspect the next MBR in the list
Add the children to the list and reorder
Until all remaining MBRs can be pruned
![Page 30: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/30.jpg)
Nearest Neighbor Search (NN) with R-Trees
Best-first (BF) algorihm:
E
20 4 6 8 10
2
4
6
8
10
x axis
y axis
b
E f
query point
omitted
1 E2e
d
c
a
h
g
E3
E5
E6
E4
E7
8
searchregion
contents
E9i
E 11E 22Visit Root
E 137
follow E1 E 22
E 54E 55
E 83E 96
E 83
Action Heap
follow E2 E 28
E 54E 55
E 83E 96
follow E8
Report h and terminate
E 179
E 137E
54E 55
E 83E 96
E 179
Result
{empty}
{empty}
{empty}
{(h, 2 )}
a
5
b
13
c
18
d
13
e
13
f
10
h
2
g
13
E11
E22
E38
E45
E55
E69
E713
E82
Root
E917
i
10
E1
E2
E4
E5
E8
i 10E54
E 55E 83
E 96E 137
g13
![Page 31: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/31.jpg)
HS algorithm
Initialize PQ (priority queue)
InesrtQueue(PQ, Root)
While not IsEmpty(PQ)R= Dequeue(PQ)
If R is an objectReport R and exit (done!)
If R is a leaf page node For each O in R, compute the Actual-Dists, InsertQueue(PQ, O)
If R is an index nodeFor each MBR C, compute MINDIST, insert into PQ
![Page 32: Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer](https://reader033.vdocuments.mx/reader033/viewer/2022041918/5e6a93a970e0d5448d266cda/html5/thumbnails/32.jpg)
Best-First vs Branch and Bound
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