32
Spatial Queries Nearest Neighbor Queries

Spatial Queries - School of Computinglifeifei/cis5930/lecture4.pdfSpatial Queries Given a collection of geometric objects (points, lines, polygons, ...) organize them on disk, to answer

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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