概要
postgresSQLの拡張機能である、postgisを使うことで、shpファイルをDB経由で、sqlで編集することができます。
大量のデータを処理するときやsql、DBの知識がある方は使用すると良いと思います。
この記事では、postgisやインストール方法、使用方法などについて解説します。
postgisとは
オープンソースのデータベース管理システムであるPostgreSQLに、地理情報システム(GIS)の機能を追加する拡張機能です。
地理データを管理・操作・分析するための強力なツールとして広く使われています。
メリットとしては、下記が挙げられます。
- 地理データを効率的に扱える。
- GISソフトウェアを使わずにサーバーサイドでデータ処理が可能。
- オープンソースなので、無料で利用可能。
- 高度な分析やWebシステムと連携しやすい。
インストール方法
ソフトとしては、QGIS、postgresSQL(pgAdmin)、A5M2をインストールしておくと良いと思います。
QGIS
こちらのサイト(https://www.qgis.org/download/)より、インストールします。
PostgreSQL(pgAdmin)
こちらのサイト(https://www.postgresql.org/download/)より、インストールを行います。
インストールの手順などは、こちらのサイト(https://qiita.com/tom-sato/items/037b8f8cb4b326710f71)が参考になります。
A5Mk2
こちらのサイト(https://a5m2.mmatsubara.com/)よりダウンロードします。
sqlの入力に便利なソフトになります。
postgisのインストール
PostgreSQLインストール後に、stack builderからpostgisをインストールします。
詳しくは、こちらのサイト(https://zenn.dev/boiledorange73/books/b1de0a18073af70946e0/viewer/install-win)を参考にして頂くと良いと思います。
使用方法
まずは、DBの作成を行います。
pgAdminを起動します。
データベースの上で右クリック → 作成 → データベース… を選択します。
データベース名を入力して、保存をクリックします。
作成したデータバースの拡張の上で右クリック → 作成 → 拡張 を選択します。
名前にpostgisを入力し、保存をクリックします。
拡張にpostgisが追加されます。
続いて、shpをDBに取り込みます。
shp2pgsql-gui.exeを起動します。
おそらく、C:\Program Files\PostgreSQL\17\bin\postgisgui にあるかと思われます。
View connection detailsをクリックして、UsernameやDatabaseなどを入力します。
Add Fileをクリックして、shpを追加する、もしくは、shpファイルをドラッグアンドドロップすることで、Import Listに追加します。
ここで、Pathやshp名に日本語が入っていると上手く変換できないようなので、英語にしておくようにしましょう。
Table名やSRID(座標系)を指定します。SRIDはEPSGの番号を入力します。
Optionsをクリックして、encodingを選択します。
今回はShift-JISなので、cp932 とします。
Importをクックします。
うまくいくと、Shapefile import completed. と表示されます。
インポートされたデータを見てみます。
A5Mr2を起動します。
データベースを追加します。
データベースの上で右クリック → データベースの追加と削除 を選択します。
追加をクリックします。
PostgreSQL(直接接続)を選択します。
サーバー名やデータベース名などを入力します。
テスト接続をクリックして、成功したら、OKをクリックします。
データベースに追加されます。
publicのテーブルを選択すると、先ほどインポートしたshpのテーブルがあります。
shpに含まれる属性が表示されます。なお、geomという欄には、座標等の図形情報が入っています。
実際に登録したデータを見てみます。
QGISを起動します。
QGISのブラウザの欄のPostgreSQLを右クリック → 接続の新規作成 を選択します。
名前やホスト、ポートなどを入力し、接続テストをクリックします。
パスワードを入力後、接続に成功したら、OKをクリックします。
ブラウザ欄のPostgreSQLにDBが追加されます。
先ほど追加したshp名をクリックすると、レイヤが追加されます。
今回、例えば、条件を指定して、新たなレイヤを追加します。
樹種名が針広混交林のものを抽出します。
SQLは、
CREATE TABLE 新しいテーブル名 AS
SELECT 列1, 列2, …
FROM 元のテーブル名
WHERE 条件;
のようになります。
A5Mr2を起動し、DBを現在のデータベースに設定し、Queryに下記のように入力します。
そして、SQLを実行します(緑色の矢印で流せます)。
SQLを実行後、DBを再読込すると、新たにテーブルができております。
ブラウザの更新(矢印マーク)を行って、DBを読み込むと、先ほど作成したデータが追加されています。
大量のデータを扱うときや、sql、DBになれている人は使った方が楽だと思うので、ぜひご利用ください!