spatial queries
DESCRIPTION
Spatial Queries. Nearest Neighbor and Join Queries. 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). Spatial Queries. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/1.jpg)
Spatial Queries
Nearest Neighbor and Join Queries
![Page 2: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/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](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/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](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/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](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/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](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/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](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/7.jpg)
R-tree
1
2
3
4
5
6
78
910
11
12
13
1
2 3
…
![Page 8: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/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](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/9.jpg)
R-trees - NN search
A
B
C
DE
FG
H
I
J
P1
P2
P3
P4q
![Page 10: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/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](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/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](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/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](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/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](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/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](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/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](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/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](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/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](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/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
iii rpRPMINDIST
1
2)(),(
l=(l1, l2, …, ld)
u=(u1, u2, …, ud)
),(),(, oPRPMINDISTRo
![Page 19: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/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](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/20.jpg)
MINDIST and MINMAXDIST
MINDIST(P, R) <= NN(P) <=MINMAXDIST(P,R)
R1
R2
R3 R4
MINDIST
MINMAXDIST
MINDISTMINMAXDIST
MINMAXDIST
MINDIST
![Page 21: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/21.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 22: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/22.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 23: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/23.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 24: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/24.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 25: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/25.jpg)
Ordering Distance MINDIST is an optimistic distance where
MINMAXDIST is a pessimistic one.
P
MINDIST
MINMAXDIST
![Page 26: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/26.jpg)
NN-search Algorithm1. Initialize the nearest distance as infinite distance2. 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 ABL4. Visit the MBRs from the ABL following the order until it is
empty5. 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 37. When the ABL is empty, the NN search returns.
![Page 27: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/27.jpg)
K-NN search Keep the sorted buffer of at most k current
nearest neighbors
Pruning is done using the k-th distance
![Page 28: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/28.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 29: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/29.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 11 E 22Visit Root
E 137
follow E1 E 22
E 54E 55
E 83 E 96
E 83
Action Heap
follow E2 E 28
E 54E 55
E 83 E 96
follow E8
Report h and terminate
E 179
E 137E 54E 55
E 83 E 96E 179
Result
{empty}
{empty}
{empty}
{(h, 2 )}
a5
b13
c
18
d
13
e
13
f
10
h
2
g
13
E11
E22
E38
E45
E55
E69
E713
E82
Root
E917
i
10
E1E2
E4 E5E8
i 10E 54E 55
E 83 E 96E 137
g13
![Page 30: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/30.jpg)
HS algorithm
Initialize PQ (priority queue)InesrtQueue(PQ, Root)While not IsEmpty(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, InsertQueue(PQ, O)If R is an index node
For each MBR C, compute MINDIST, insert into PQ
![Page 31: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/31.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
![Page 32: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/32.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 33: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/33.jpg)
Spatial Join
Find all parks in each city in MA Find all trails that go through a forest in
MA Basic operation
find all pairs of objects that overlap Single-scan queries
nearest neighbor queries, range queries Multiple-scan queries
spatial join
![Page 34: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/34.jpg)
Algorithms
No existing index structures Transform data into 1-d space [O89]
z-transform; sensitive to size of pixel Partition-based spatial-merge join [PW96]
partition into tiles that can fit into memory plane sweep algorithm on tiles
Spatial hash joins [LR96, KS97] Sort data using recursive partitioning
[BBKK01] With index structures [BKS93, HJR97]
k-d trees and grid files R-trees
![Page 35: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/35.jpg)
R-tree based Join [BKS93]
R
S
![Page 36: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/36.jpg)
Join1(R,S)
Tree synchronized traversal algorithmJoin1(R,S)Repeat
Find a pair of intersecting entries E in R and F in SIf R and S are leaf pages then add (E,F) to result-setElse Join1(E,F)
Until all pairs are examined CPU and I/O bottleneck
R S
![Page 37: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/37.jpg)
CPU – Time Tuning Two ways to improve CPU – time
Restricting the search space
Spatial sorting and plane sweep
![Page 38: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/38.jpg)
Reducing CPU bottleneck
R
S
![Page 39: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/39.jpg)
Join2(R,S,IntersectedVol) Join2(R,S,IV)Repeat
Find a pair of intersecting entries E in R and F in S that overlap with IV
If R and S are leaf pages then add (E,F) to result-setElse Join2(E,F,CommonEF)
Until all pairs are examined In general, number of comparisons equals
size(R) + size(S) + relevant(R)*relevant(S) Reduce the product term
![Page 40: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/40.jpg)
Restricting the search space
Now: 3 of R * 2 of S
Plus Scanning: 7 of R + 7 of S
1
3
5
15Join1: 7 of R * 7 of S
1
= 49 comparisons
=6 comp
= 14 comp
![Page 41: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/41.jpg)
Using Plane Sweep
R
S
Consider the extents along x-axisStart with the first entry r1sweep a vertical line
r1
r2
r3
s1s2
![Page 42: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/42.jpg)
Using Plane Sweep
R
S
r1
r2
r3
s1s2
Check if (r1,s1) intersect along y-dimensionAdd (r1,s1) to result set
![Page 43: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/43.jpg)
Using Plane Sweep
R
S
r1
r2
r3
s1s2
Check if (r1,s2) intersect along y-dimensionAdd (r1,s2) to result set
![Page 44: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/44.jpg)
Using Plane Sweep
R
S
r1
r2
r3
s1s2
Reached the end of r1Start with next entry r2
![Page 45: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/45.jpg)
Using Plane Sweep
R
S
r1
r2
r3
s1s2
Reposition sweep line
![Page 46: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/46.jpg)
Using Plane Sweep
R
S
r1
r2
r3
s1s2
Check if r2 and s1 intersect along yDo not add (r2,s1) to result
![Page 47: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/47.jpg)
Using Plane Sweep
R
S
r1
r2
r3
s1s2
Reached the end of r2Start with next entry s1
![Page 48: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/48.jpg)
Using Plane Sweep
R
S
r1
r2
r3
s1s2
Total of 2(r1) + 1(r2) + 0 (s1)+ 1(s2)+ 0(r3) = 4 comparisons
![Page 49: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/49.jpg)
I/O Tunning Compute a read schedule of the pages to
minimize the number of disk accesses Local optimization policy based on spatial
locality Three methods
Local plane sweep Local plane sweep with pinning Local z-order
![Page 50: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/50.jpg)
Reducing I/O Plane sweep again:
Read schedule r1, s1, s2, r3 Every subtree examined only once Consider a slightly different layout
![Page 51: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/51.jpg)
Reducing I/O
R
S
r1
r2
r3
s1
s2
Read schedule is r1, s2, r2, s1, s2, r3 Subtree s2 is examined twice
![Page 52: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/52.jpg)
Pinning of nodes
After examining a pair (E,F), compute the degree of intersection of each entry degree(E) is the number of intersections between
E and unprocessed rectangles of the other dataset
If the degrees are non-zero, pin the pages of the entry with maximum degree
Perform spatial joins for this page Continue with plane sweep
![Page 53: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/53.jpg)
Reducing I/O
R
S
r1
r2
r3
s1
s2
After computing join(r1,s2), degree(r1) = 0degree(s2) = 1So, examine s2 nextRead schedule = r1, s2, r3, r2, s1Subtree s2 examined only once
![Page 54: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/54.jpg)
Local Z-Order
Idea:1. Compute the intersections between each rectangle of
the one node and all rectangles of the other node
2. Sort the rectangles according to the Z-ordering of their centers
3. Use this ordering to fetch pages
![Page 55: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/55.jpg)
Local Z-ordering
s1
r1
r2
s2
r3
r4
IV II
I
III
IV
Read schedule:<s1,r2,r1,s2,r4,r3>
II
I
III
![Page 56: Spatial Queries](https://reader035.vdocuments.net/reader035/viewer/2022062217/56815a8b550346895dc800e2/html5/thumbnails/56.jpg)
Number of Disk Access
0
1000
2000
3000
4000
5000
6000
7000
LPS order LPS order w/Pinning
Z-order
0KByte8KByte32KByte128KByte512KByte
5384 5290
2373 2392
Size ofLRU Buffer
>
<