空間DBマニアのkochizufanです。
今回は、空間DBは単にツールとして考えれば、他にもいろんな事に使えるんじゃないかという話。
歴史研究等における時間検索の必要性
歴史や考古学の分野、或いは歴史史料アーカイブの現場等で、時間軸での検索が非常に重要視されてて、
それは単純に時間を単なる点として蓄積して範囲で篩をかけるというような普通のスケジュールデータ的時間データと違い、データの時間メタデータが範囲を持っていて(例えば鎌倉時代の事物とか)、それだけでも割と普通にテーブルDBだとデータ形式それなりに考えないといけないのに、
さらにその範囲も定義や期間があいまいだったり諸説あったりといった揺らぎがあって、そんなのどうやってデータを蓄積管理するのよ、といったところが問題になっているようです。
関西では時間GIS研究会といった集まりも開かれていて、そこのメンバーを中心に、空間参照系ならぬ時間参照系といった概念の提唱と実装も研究されているようです。
年表のような検索 … それ、空間DBの流用でできるんじゃね?
私はアカデミックなところの外野にいる者なので、学術上で満たさないといけない要件とかは全く議論出来ないのですが、そういったところの方と話をしていると、たまに聞くのが、
(世界史年表・地図(吉川弘文館)から引用)
こんな感じの歴史年表をそのままDBに突っ込んで、それで検索出来ればいいね、みたいな話です。
…それ、空間DBの流用でできるんじゃね?
例で上げた年表を見ても、年表というのは横軸時間軸、縦軸何らかのメタデータ軸(上の年表でいうと、空間を地域という離散的データ形式に投影した軸)の2次元データで、その上に記された各王朝の存在期間データ等も、その2次元座標上のポリゴンとして表現出来る訳で、であれば、その2次元ポリゴンを空間DBに突っ込んでやって、求めたい結果を得る条件の検索バウンダリとの衝突判定検索をしてやれば、普通に検索出来そうです。
例えば、上記年表のポリゴンの入った空間DBテーブル上で、検索条件として横軸A.D.1年〜200年、縦軸日本、朝鮮、満州のバウンダリで検索してやれば、「大和朝廷、弁韓、馬韓、辰韓、四郡、楽浪郡、高句麗、夫余」あたりが検索出来る形にするのは、空間DBであれば簡単にできるでしょう。
空間DBに突っ込まれる座標軸が、WGS84やメルカトルでないといけない等、誰が決めたのでしょうか…。
逆にこの定義された時代区分をベースにした検索も可能でしょう。
素人なので実際に即した例は挙げられないのですが、仮に「2世紀の東アジアで特徴的な刀剣の形状」データがあるとして、その存在範囲をポリゴンとしてその刀剣のメタデータに登録しておいてやれば、「魏」や「高句麗」で検索するとその刀剣は得られるけれど、「東晋」や「新羅」で検索しても出て来ない、といった事はできるでしょう。
曖昧検索はポリゴン定義を斜線にして、正規化インデックス値を求めればいけそう
「〜時代は何時始まるねん?」的な曖昧な検索についても、ある程度は対応出来ると思います。
別に時代等の区分線、蓄積においても検索においても、垂線で区切られる必要はないのですから、区分線を斜めにしてしまえばいいのです。
イメージ的にはこんな感じ。
平安時代と鎌倉時代の境界に諸説あって曖昧なのであれば、その揺らぎの範囲として斜め線で区切ってやればいいのです。
その上で、検索条件にせよ蓄積条件にせよ、マッチさせる条件の方も点等ではなくウィンドウとしてマッチさせ、マッチした範囲の面積を、全体がマッチした場合の面積で割ったインデックス値を求めてやれば、確実に鎌倉時代に属する事物と言えるもの、鎌倉時代に属するか否か議論の分かれるもの、誰が見ても鎌倉時代に属してるとは言えないもの、といった重み付け検索は可能です。
別に斜め線に限る必要はなく、マルチポリゴンしかり穴開きポリゴン然り、オリジナルの縦軸と横軸で表される座標空間の中で、曖昧さも含め検索条件としたい条件を図形として表現し、蓄積或いは検索条件としてやれば、かなりいろんな条件に対応する事ができるでしょう。
空間DBはしょせんツール、利用を空間検索に限定する必要はない
空間DBはGISから発展した技術ではありますが、しょせん「ツール」でしかありません。
別にGIS以外でも、空間データ以外でも、
- 複数座標軸からなる座標空間上に存在する、離散値連続値問わないものの存在範囲に対して、範囲を指定して高速に検索をかける事ができる。
- 座標系の変換が定義できれば、座標系間の変換を行って出力することもできる。
さらに、変換結果にインデックスをかければ、変換結果で検索する事もできる。 - 検索した存在範囲結果の合成、加減算、変型、或いは存在範囲の面積、距離等、座標空間内での演算を行う事ができる。
といった空間DBの特性が活かせるデータ形式、ユースケースであれば、何にでも利用できると思います。
たとえば、適用した事はありませんが、店舗や医療機関POIの検索において、曜日毎の営業/診療時間と現在時刻の間での検索を行うのに、空間DBを使うと面白いんじゃないか?とかも思ったりします。
空間DBだから空間情報処理だけに、とかではなく、特性を利用できるところならばどんな用途にでも、アイデア次第で使えばいいんじゃね?と思います。
しょせん、情報処理アプリなんて、道具に過ぎないのですから。