地理情報システム特論 第 7 回:空間ジョイン

.
.
.
..
.
.
.
地理情報システム特論
第 7 回:空間ジョイン
大沢 裕
埼玉大学
.
Ohsawa (Saitama Univ.)
GIS-7
1 / 21
GIS-7
2 / 21
.
. .1 空間ジョイン
.
. .2 空間ジョインのアルゴリズム
.
. .3 最近接ペア検索
距離ジョイン
.
Ohsawa (Saitama Univ.)
.
空間ジョイン
空間検索の種類
空間インデックスの探索コストでの分類
single scan query
範囲検索,k-NN 検索など
空間インデックスを一回たどれば終了
O(N) の検索コスト.eg. O(log N)
multiple-scan query
空間ジョイン検索
空間インデックスが複数回たどられる.
O(N) より大きな検索コスト.
.
Ohsawa (Saitama Univ.)
GIS-7
3 / 21
空間ジョイン
Join 演算
Ro
nF S = {t ∗ u : t ∈ R ∧ PF (t, u)}
Ro
nF S = σF (R × S)
但し,t ∗ u は要素を連結した全てのタプル集合を表わす(直積).
PF (t, u) は結合条件 F を満たすとき真値を返す関数
空間演算の基本戦略
フィルタステップ:まず簡単な検査で対象を絞り込む
精査ステップ:条件を満たすか精査する
.
Ohsawa (Saitama Univ.)
GIS-7
4 / 21
.
空間ジョイン
GIS や LBS で必要となる空間ジョイン演算
距離ジョイン
M 個 (2 以上) の施設集合の中から,施設間の距離が小さい M 個の要
素からなるグループを探す.
旅行計画
現在地から採取目的地に達する途中で,あらかじめ与えられた M 個
の POI 集合の中から1つずつ選んで訪れる際に,経路長が最小の訪
れ方を探す.
MTNN 検索
現在地から,あらかじめ与えられた M 個の POI 集合の中から1つず
つ選んで訪れ,再び現在地に戻る際に経路長が最小となる訪れ方を
求める.
これらの検索は,各 POI 集合の要素数が全て N の場合を考えると,探索
する空間の大きさは,N M となる.従って,基本的な演算量は O(N M ) で
ある.
.
Ohsawa (Saitama Univ.)
GIS-7
5 / 21
空間ジョイン
オブジェクトの空間的関係
S
R
C
S
R
D
S
E
R
F
S
R
G
SR
H
covers(q,p)=covered(p,q)
contain(q,p)=inside(p,q)
(b) meet(q,p)
(c) overlap(q,p)
検索コストによる分類
(d) covers(q,p)
コスト大: disjoint
コスト中:meet, overlap,
inside
コスト小:equal, conver,
contain
(e) contain(q,p),inside(p,q)
equal(q,p)
Ohsawa (Saitama Univ.)
S
Eigenhofer(1991) は,空間的関
係を 8 種類に分類している
(a) disjoint(q,p)
.
R
GIS-7
6 / 21
.
空間ジョイン
空間ジョイン検索の分類
2つのデータセット A = {a1 , .., an } と B = {b1 , .., bm } を考える.また
Id(x) を要素 x の ID を得る関数,Mbr(x) をその MBR を得る関数とする.
Brinkoff 等 (1993) は次の3つの空間ジョイン検索を定義している.
1) MBR 空間ジョイン:Mbr (ai ) ∩ Mbr (bj ) ̸= ∅ である全てのペ
ア (Id(ai ), Id(bj )) を求める処理.
2) ID 空間ジョイン:ai ∩ bj ̸= ∅ を満たす全てのペア
(Id(ai ), Id(bj )) を求める処理.
3) オブジェクト空間ジョイン:ai ∩ bj ̸= ∅ を満たす ai ∩ bj を
求める処理.
.
Ohsawa (Saitama Univ.)
GIS-7
7 / 21
空間ジョイン
MBR による空間インデックスの枝刈り
目的とする関係
equal(p,q)
contains(p,q)
inside(p,q)
covers(p.mbr,q.mbr)
covers(q,p)
disjoint(p,q)
meet(p,q)
overlap(p,q)
.
Ohsawa (Saitama Univ.)
木構造中の MBR と検査を必要とする関係
equal(P.mbr,q.mbr) ∨ covers(P.mbr,q.mbr) ∨
contains(P.mbr,q.mbr)
contains(P.mbr,q.mbr)
overlap(P.mbr,q.mbr) ∨ covers(q.mbr,P.mbr) ∨
inside(P.mbr,q.mbr) ∨ equa;(P.mbr,q.mbr) ∨
covers(P.mbr,q.mbr) ∨ contains(P.mbr,q.mbr)
covers(P.mbr,q.mbr) vee contains(P.mbr,q.mbr)
overlap(P.mbr,q.mbr) ∨ covers(q.mbr,P.mbr) ∨
equal(P.mbr,q.mbr) ∨ covers(P.mbr,q.mbr) ∨
contains(P.mbr,q.mbr)
disjoint(P.mbr,q.mbr) ∨ meet(P.mbr,q.mbr) ∨
overlap(P.mbr,q.mbr) ∨ covers(P.mbr,q.mbr) ∨
contains(P.mbr,q.mbr)
meet(P.mbr,q.mbr) ∨ overlap(P.mbr,q.mb) ∨
covers(P.mbr,q.mbr) ∨ contains(P.mbr,q.mbr)
overlap(P.mbr,q.mbr) ∨ covers(P.mbr,q.mbr) ∨
contains(P.mbr,q.mbr)
GIS-7
8 / 21
.
空間ジョインのアルゴリズム
深さ優先探索による空間ジョイン
Algorithm 1 SpatialJoin(R,S)
Require: 2 つの R 木 (R と S) の高さは等しい
1: for all ES ∈ S do
2:
for all ER ∈ R with ER .rect ∩ ES .rect ̸= ∅ do
3:
if R が葉ノード then { その時,S もまた葉ノード }
4:
(ER , ES ) を出力する.
5:
else
6:
ReadPage(ER .ref); ReadPage(ES .ref)
7:
SpatialJoin(ER .ref,ES .ref)
8:
end if
9:
end for
10: end for
Brinkhoff ら (1993) のアルゴリズム
2つの R 木,R と S の高さは同じと仮定
空間ジョイン演算では R 木を何度もたどる必要があるため,LRU
バッファを利用する.
.
Ohsawa (Saitama Univ.)
GIS-7
9 / 21
空間ジョインのアルゴリズム
平面操作を用いた CPU コストのチューニング
2 つのノード R と S 中のエントリーを,それぞれ左端の x 座標値で
ソートし,かつ平面操作により x 座標値が小さいものから重なりを
調べることにより,重なりを検査する回数を減らすことができる.
注目要素を t として,他の側の要素との比較を行う.
;
t の値
r1
s1
r2
s2
r3
U
T
U
U
T
T
:
.
Ohsawa (Saitama Univ.)
GIS-7
比較テストの対象
r1 ↔ s1
s1 ↔ r2
r2 ↔ s2 , r2 ↔ s3
r3 ↔ s3
10 / 21
.
空間ジョインのアルゴリズム
I/O 時間のチューニング
ReadPage 回数を減らしたい平面走査法により読み込まれる順序 (a) と (b) における位置
の差で順序が変わる
T
T
U
T
U
T
U
T
T
T
C
s1,r2,r1,s2,r3,r4
r1,s2,s1,r2,s2,r3,r4
U
T
D
..1.
まず,平面走査を行い,処理の対象となった MBR に対して処理を実行する.(b) の例では,
r1 と s2 が LRU バッファに読み込まれる.
..2 次に,前項で対象とした MBR に対して位数を求める.ここで MBR の位数とは,他の木の
MBR でまだ処理されていないものと交差する回数である.
.. 位数が大きい側の MBR を LRU バッファに固定 (pin) する.そして,その MBR と他の
3
MBR との交差を全て処理する.
.4. これが終了した後,通常の平面走査の順番で処理を続ける.
.
.
.
.
Ohsawa (Saitama Univ.)
GIS-7
11 / 21
最近接ペア検索
最近接ペア検索の例
最近接ペア検索 (CPQ: closest pair query)
ゴルフ場とテニスコートが近くにあるリゾートを探したい
.
..
.
dist(pi , qj ) ≥ dist(pz , ql ) ∀pi ∈ P ∧ ∀qj ∈ Q
Ohsawa (Saitama Univ.)
GIS-7
.
.
.
定義 1
.
..
2 つの点集合 P,Q が与えられ,それぞれの集合から取り出した 2 点 pz ,ql
のペア (pz , ql ), pz ∈ P, ql ∈ Q について次の式が成り立つ場合 (pz , ql ) を
1-CP と呼ぶ.
12 / 21
.
最近接ペア検索
2つの MBR 間の距離
2 つの R 木上のノード NP,NQ
それぞれの MBR:MP,MQ
/+0/#:&5+6
MP の4つの辺:r1,r2,r3,r4
/#:/#:&+56
MQ の4つの辺:s1,s2,s3,s4
/2
/3
MINDIST(ri,sj):辺 ri と sj 上の点の最小距離
/+0/+0&+56
MAXDIST(ri,sj):辺 ri と sj 上の点の最大距離
.
定義 2
..
2 つの MBR,MP と MQ に重なりが無いとき,
.
MINMINDIST (MP , MQ ) = mini,j {MINDIST (ri , sj )}
また 2 つの MBR に重なりがあるとき,
MINMINDIST (MP , MQ ) = 0
とする.また,2つの MBR が重なるときも,重ならないときも,次のように定義する.
MINMAXDIST (MP , MQ ) = min{MAXDIST (ri , sj )}
i,j
GIS-7
MAXMAXDIST (MP , MQ ) = max{MAXDIST (ri , sj )}
13 / 21
i,j
.
..
最近接ペア検索
.
.
.
Ohsawa (Saitama Univ.)
距離の不等式
2 つの MBR MP と MQ に含まれる2つの点 pi と qj において次の2つの
不等式が成り立つ.
不等式 1
MINMINDIST (MP , MQ ) ≤ dist(pi , qj ) ≤ MAXMAXDIST (MP .MQ ) (1)
不等式 2
dist(pi , qj ) ≤ MINMAXDIST (MP , MQ )
(2)
q
p
.
Ohsawa (Saitama Univ.)
GIS-7
14 / 21
.
最近接ペア検索
単純なアルゴリズム
CP1: CP の最短距離 T を ∞ とし,2 つの R 木の根ノードから探
索を開始する.
CP2: 全ての MBR のペアに対して,再帰的に探索を行う.
CP3: 2 つの R 木の葉ノードに達したとき,実際のオブジェクト
との距離 T1 を求め,T 1 < T であれば,T ⇐ T1 とする.
.
Ohsawa (Saitama Univ.)
GIS-7
15 / 21
最近接ペア検索
しらみつぶし法
CP1: CP の最短距離 T を ∞ とし,2 つの R 木の根ノードから探
索を開始する.
CP2: 内部ノードでは MBR のペアに対して MINMINDIST を計算
し,MINMINDIST ≤ T のときのみ下方に再帰的に検索を
行う.
CP3: 2 つの R 木の葉ノードに達したとき,実際のオブジェクト
との距離 T1 を求め,T 1 < T であれば,T ⇐ T1 とする.
CP2 により枝刈りが行える.
/+0/#:&5+6
/#:/#:&+56
/3
/2
/+0/+0&+56
.
Ohsawa (Saitama Univ.)
GIS-7
16 / 21
.
最近接ペア検索
単純な再帰的アルゴリズム
内部ノードにおいて,2つの MBR のペアに対して不等式 2(下記) の関係
を調べ,最小の MINMAXDIST の値が T より小さければ,直ちにその値
で T の値を更新することができる.
dist(pi , qj ) ≤ MINMAXDIST (MP , MQ )
(3)
CP1: CP の最短距離 T を ∞ とし,2 つの R 木の根ノードから探
索を開始する.
CP2: 内部ノードにおいて全ての MBR のペアに対して
MINMAXDIT を計算する.もしその最小値が T より小さけ
れば,その値で T の値を更新する.全ての MBR 同士のペ
アに対して MINMINDIST を計算する.MINMINDIST ≤ T
の関係を満たすペアのみについて下方探索を行う.
CP3: 2 つの R 木の葉ノードに達したとき,実際のオブジェクト
との距離 T1 を求め,T 1 < T であれば,T ⇐ T1 とする.
.
Ohsawa (Saitama Univ.)
GIS-7
17 / 21
最近接ペア検索
距離でソートする再帰的アルゴリズム
MINMINDIST が小さい MBR 同士は CP を含んでいる可能性が大きい.
そこで,中間ノードにおいて全ての MBR のペアに対して MINMINDIST
を計算し,それを昇順にソートする.そして,最小の MINMINDIST のペ
アから順に再帰的な呼び出しを行う.
CP1: CP の最短距離 T を ∞ とし,2 つの R 木の根ノードから探
索を開始する.
CP2: 内部ノードにおいて,全ての MBR のペアに対して
MINMAXDIST の最小値を計算する.もしこの値が T より
小さければ,その値で T を更新する.次に全ての MBR の
ペアに対して,MINMINDIST を計算し,それを昇順にソー
トする.このソートされた順番で,MINMINDIST ≤ T を
満たすペアのみについて再帰的に下方にたどる.
CP3: 2 つの R 木の葉ノードに達したとき,実際のオブジェクト
との距離 T1 を求め,T 1 < T であれば,T ⇐ T1 とする.
.
Ohsawa (Saitama Univ.)
GIS-7
18 / 21
.
最近接ペア検索
ヒープを用いた非再帰的なアルゴリズム
CP1: 2 つの R 木の根ノードから開始する.T の値を ∞ で初期化
する.またヒープを初期化する.
CP2: 内部ノードに対しては,全ての MBR のペアに対して
MINMAXDIST を計算する.もし,その値が T より小さけ
れば T をその値で更新する.次に全ての MBR のペアにつ
いて MINMINDIST を計算し,MINMINDIST ≤ T の条件を
満たすペアのみをヒープに投入する.
CP3: 葉ノードに達したとき,全ての点の組み合わせに対して距
離を計算し,その距離が T より小さければ,その値で T を
更新する.
CP4: ヒープが空になれば処理を終了する.
CP5: ヒープの先頭の要素を取り出す.もしそのペアの
MINMINDIST が T の値より大きければ処理を終了する.そ
れ以外のときこのペアに対して CP2 以下を繰り返す.
.
Ohsawa (Saitama Univ.)
GIS-7
19 / 21
最近接ペア検索
各種アルゴリズムの性能比較
EXH:しらみつぶし法
SIM:単純な再帰的アルゴリズム
STD:距離でソートする再帰的アルゴリズム
HEAP:ヒープを用いたアルゴリズム
図形の重なりが小さい時 (実行時間)
EXH > SIM > STD + HEAP
図形の重なりが大きい時(実行時間)
EXH + SIM > STD > HEAP
.
Ohsawa (Saitama Univ.)
GIS-7
20 / 21
.
最近接ペア検索
距離ジョイン
距離ジョイン
空間ジョイン:空間的位置関係として互いに重なりを持つ
距離ジョイン:2つのオブジェクトが一定の距離以内に入る
2つの集合 A,B から,予め定められた距離の範囲内に存在する要素を
1つづつ取り出す,要素ペアを求める演算:distance join
任意の川に最も近い街を求める
人口が10万人以上で,川に最も近い街を求める
任意の川から 10km 以内の距離にある街を求める
集合 A の各オブジェクトに対して,集合 B 中での最近接オブジェクト
を探す演算:distance semi join
店と倉庫の集合が与えられたとき,各店に対して最も近い倉庫を求める
(店,倉庫)のペアについて,距離が近い順に出力される
各店に近い倉庫が探されるため,店は 1 回のみ現れるが,倉庫は複数回
現れる可能性がある(反射的でない)
.
.
Ohsawa (Saitama Univ.)
GIS-7
21 / 21