はじめに
普段は人流データを取り扱う企業にて、空間分析等を行うエンジニアとして在籍しています。
普段使うツールの中には皆様ご存じのPostGISがあり、勤務以外でも軽くいじりたい(PostGISで遊びたい)と考えていましたが、私自身のスキルと予算の限界があるのでローカル上で構築することを前提に調べまとめました。
すでにQiita上にはDockerでPostGISを構築する記事がいくつかありますが、この記事ではデータ投入、QGISから接続・可視化まで記載しています。
参考資料
今回はこちらの記事を参考にさせていただきました。
使用環境
OS: Mac OS 12.6 Monterey
model: MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)
Docker: Docker Desktop Version 4.15.0
PostgreSQL: 11.2.1
PostGIS: 2.5.2
QGIS: 3.22.11
手順
1.Dockerの導入
Dockerの公式サイトからDocker Desktopをインストール。
2.PostGISの構築
Docker Desktopのインストール後、ターミナルで docker pull mdillon/postgis を実行。
実行完了のメッセージが出力されたら、Docker Desktopを開きimagesでmdillon/postgisがpullされていることを確認し、ACTIONSにある実行ボタン(▶︎)をクリックし、コンテナを実行。
Docker Desktopでは初めてコンテナを実行させる際に下の画像のように初期設定のポップアップが表示されるので、今回は下記のように設定。
Ports: <任意のポート番号>
Enviorenment variables
→ PostgreSQLとしての環境設定
Variable: Value
POSTGRES_DB: test_postgis
POSTGRES_USER: user
POSTGRES_PASSWORD: password
入力完了したら下のRunを押して実行。
3.QGISからDocker上のPostGISへ接続
2.でPostGISコンテナを実行後にDocker Desktopの Logs に上画像のメッセージが出力されたら、QGISを起動させ、データソースマネージャーを開く。メニュー内の PostGIS を右クリックして 新規接続 を選択。
新規接続設定のポップアップ内にて2.で設定した値を入力し、テスト接続 を実行。接続できればポップアップ上部に「 <データベース名>への接続に成功しました 」と表示されるので、確認後ポップアップ最下部にある OK をクリックし接続設定を保存。
保存後、データソースマネージャーの PostGIS に設定したデータベースが表示されるので以降はこちらを使用する。
4. QGISからPostGISへデータをエクスポート
今回はQGISのプロセッシングツールボックスの レイヤ領域にランダム点群 で生成したポイントデータを使います。
プロセッシングツールボックスで PostGISへエクスポート を選択し、ポップアップ内で設定してから実行。
ログウィンドウで Success ...... と出たら処理は正常に完了。
5.PostGISに保存しているデータをQGISで可視化
QGISのデータソースマネージャーにある PostGISを選択すると下画像のようにメニューが表示されるので、4.でエクスポートした test_point をダブルクリック。これで画面にポイントデータが表示される。
終わりに
Dockerで構築する場合はdocker-compose.yamlを編集するのがセオリーですが、Docker Desktopでの環境構築の際には実行する時の初期設定で指定するというところ点に気をつけないといけないと思います。これで初心者でもある程度一通りの環境構築ができそうです。
次のタイミングでは、PostGISの機能をいくつか試してみます。