【くうかんでーたべーす】

空間データベース とは?

最終更新:
💡 「この近くのお店は?」に答えられるデータベース

地理情報(緯度・経度)や幾何学的な図形データを効率的に格納・検索できるデータベース。地図アプリや位置情報サービスの基盤技術。

📌 このページのポイント
位置や形の関係を検索する 空間クエリ 現在地 半径1kmの例 カフェ 書店 薬局 駅 公園 距離 1km以内? 包含 区域の内側? 交差 区域が重なる? 最近傍 最も近い? 点・線・面を保存し、位置関係を調べる 座標系と距離の単位を確認する 索引で候補を絞り、必要な詳細判定を行う
左は平面上の仮の店舗配置で、点が施設、赤が検索の中心、青い円が検索範囲、緑の点が範囲内、灰の点が範囲外。実際の地球上の距離をこの絵の縮尺で測る図ではない。右はクエリの種類で、四つすべてを左の円で実行した結果ではない。座標系・単位を選び、インデックスの候補と詳細な判定を区別する。
ひよこ ひよこ
普通のデータベースと何が違うの?
ペンギン先生 ペンギン先生
点・線・面を空間データとして保存し、距離や重なりなどを調べる機能があるんだ。お店の位置や地域の境界などを扱える。数値や文字の列も一緒に持てるので、普通のデータベースと全く別の箱というより、空間を扱う機能を備えたものと考えるといいよ。
ひよこ ひよこ
緯度と経度を数値で入れるだけじゃダメ?
ペンギン先生 ペンギン先生
位置を保存するだけならできるよ。空間機能があると「500m以内」や「地域の内側」といった条件を書きやすく、適したインデックスで候補も絞れる。ただし座標系と単位が大切。PostGISのgeometryは座標系の単位、geographyのST_DWithinはメートルで距離を指定するんだ。緯度経度の度数をそのままメートルと扱わないようにしよう。
ひよこ ひよこ
どんな用途に向いているの?
ペンギン先生 ペンギン先生
近くの店舗の検索や、災害区域と建物の重なりの判定など、位置や形の関係を調べたい場面だよ。配送ルートの計算に空間データを使うこともあるけれど、保存や検索の機能だけで最適な経路が自動で決まるわけではないんだ。
ひよこ ひよこ
空間インデックスはどう働くの?
ペンギン先生 ペンギン先生
R-tree系の方式では、図形を囲む矩形を階層的にまとめ、検索範囲と重なる候補を絞るよ。矩形同士が重なっても実際の図形は重ならないことがあるので、必要なら候補の形状を詳しく判定するんだ。矩形は重なり得るし、空間を重ならない区画へ均等に分割する方式とは違う。インデックスが必ず使われる、検索が必ず一瞬、という保証もないよ。
ひよこ ひよこ
どんな実装があるの?
ペンギン先生 ペンギン先生
PostgreSQLの拡張PostGISや、MySQLの空間機能があるよ。PostGISではGiSTを使う空間インデックスなどを利用できる。必要な座標系・演算・次元、クエリが使うインデックスを確認するんだ。対応機能やデータ量によって使い方と性能は変わるよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「空間データベース」って出てきたら「地図や位置情報を扱えるデータベース」と思えればだいたいOK!
📖 おまけ:英語の意味
「Spatial Database」 = 空間データベース
💬 spatial(空間の)という意味で、2次元・3次元の位置や形を扱えるデータベースのことだよ

参考資料

← 用語集にもどる