【ぽすとじす】

PostGIS とは?

最終更新:
💡 PostgreSQLに、地図や位置を調べる力を加える

PostgreSQLに地理空間データの保存・検索・分析機能を追加する拡張。点・線・ポリゴンなどを扱い、距離や位置関係をSQLで調べられる。

📌 このページのポイント
PostgreSQL + PostGISの空間機能 PostgreSQL データベース + PostGIS 位置や形を扱う拡張 近くの店舗を探す例 ST_DWithin 指定距離以内か ST_Distance 距離を求める geometry:座標系の単位で平面距離 geography:標準ではメートルで測地距離 型・座標系・単位をそろえて使う
PostGISは地理データをSQLで扱う拡張。図の近隣検索は概念例
ひよこ ひよこ
PostGISって何ができるの?
ペンギン先生 ペンギン先生
PostgreSQLで地図や位置情報を扱えるようにする拡張だよ。例えば店舗の位置を点、道路を線、地区の境界をポリゴンとして保存し、「現在地の近くにある店舗」を調べる処理をSQLで書けるんだ。
ひよこ ひよこ
緯度と経度を数値で保存するのとは違うの?
ペンギン先生 ペンギン先生
位置の形や関係を扱う型と関数が加わるよ。ただし、距離の計算には条件がある。ST_Distanceはgeometryなら座標系の単位による平面距離、geographyなら標準では楕円体上の距離をメートルで返す。緯度経度を入れれば必ずメートルになるわけではないんだ。
ひよこ ひよこ
半径1km以内の店はどう探すの?
ペンギン先生 ペンギン先生
指定した距離以内かを調べるST_DWithinが使えるよ。geographyなら距離の指定単位はメートル。geometryでは座標系の単位を使うから、1kmのつもりで1000と書く前に、型と座標系をそろえる必要があるんだ。
ひよこ ひよこ
PostgreSQLがあればすぐ使える?
ペンギン先生 ペンギン先生
まずPostGIS本体がその環境にインストールされている必要があるよ。そのうえで、必要な権限を持つユーザーが対象データベースでCREATE EXTENSION postgis;を実行して有効化する。クラウドなら対応する版や権限も確認しよう。
ひよこ ひよこ
データが多くても一瞬で検索できる?
ペンギン先生 ペンギン先生
GiSTなどの空間インデックスで候補を絞り、詳しい位置関係を計算する仕組みが使えるよ。ただし、検索条件やデータ量によって効果は変わる。地図の表示そのものはQGISなどのツールとも組み合わせられるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「PostGIS」って出てきたら「PostgreSQLを地図・位置情報対応にする拡張」と思えればだいたいOK!
📖 おまけ:英語の意味
「PostGIS (PostgreSQL + GIS)」 = PostgreSQL用地理情報システム
💬 PostgreSQLのPostとGIS(Geographic Information System:地理情報システム)を組み合わせた名前だよ

参考資料

← 用語集にもどる