PostgisとQGISの環境構築が同時に出来るDocker-composeです。
- wsl2
- ubuntu 20.04
1.Gitからリポジトリをcloneする
git clone https://github.com/0xeffec74/PostgreDRM.git
2.cloneしてきたリポジトリに移動する
cd PostgreDRM
3.docker-composeを起動する
docker-compose -f ./docker/docker-compose.yml up --build -d
4.DBを初期化する
bash init-db.bash
1.起動したコンテナの中に入る
docker exec -it qgis_container bash
2.QGISを起動する
qgis
事前にwindows側でxlaunchを立ち上げて置く必要があります。 xlaunchの起動方法についてはNoteをご参照ください。
1.起動したコンテナの中に入る
docker exec -it postgre_container bash
2.データベースの中に入る
psql -U docker -d postgre
3.テーブルの一覧を確認する
\dt
4.テーブルの中身を確認する
select * from test_table;
以下コマンドはデータベースの中に入って要る状態で実行してください。
1.PostGisの拡張機能をインストールする
create extension postgis;
※すでにインストールされている場合
ERROR: extension "postgis" already exists
と表示される場合があります。
2.pgroutingの拡張機能をインストールする
create extension pgrouting;
※すでにインストールされている場合
ERROR: extension "pgrouting" already exists
と表示される場合があります。
3.pgroutingが正常にインストールされているかどうかを確認する
SELECT * FROM pgr_version();
出力が以下のようになれば成功です。
pgr_version
-------------
3.2.1
(1 row)
4.テスト用のデータベースを作成する
CREATE DATABASE d1;
5.テスト用のデータベースに接続する
\c d1
6.テスト用のデータベースにPostGisの拡張機能をインストールする
CREATE EXTENSION postgis;
7.テスト用のデータベースにpgroutingの拡張機能をインストールする
CREATE EXTENSION pgrouting;
8.テスト用のテーブルを作成する
CREATE TABLE edges (id serial, source int, target int, cost int);
9.テスト用のテーブルにデータをセットする
INSERT INTO edges (source, target, cost) VALUES (1, 2, 7), (1, 3, 9), (1, 6, 14), (2, 3, 10), (2, 4, 15), (3, 4, 11), (3, 6, 2), (4, 5, 6), (5, 6, 9);
10.pgroutingを試してみる
SELECT seq, node, edge, cost FROM pgr_dijkstra('SELECT id, source, target, cost FROM edges', 1, 5, directed:=false);
以下のような出力になれば成功です。
seq | node | edge | cost
-----+------+------+------
1 | 1 | 2 | 9
2 | 3 | 7 | 2
3 | 6 | 9 | 9
4 | 5 | -1 | 0
(4 rows)
11.テスト用のデータベースを削除する
以下の手順を実行して削除してください。
\c postgre
DROP DATABASE d1
\q
以下のサイトを参考にインストール・動作確認を行ってください。
VcXsrv(Xサーバー)をWindowsにインストールしLinuxのGUIをリモート操作する設定方法
DISPLAY変数は以下を設定しておくと便利です(~/.profileなどへの追記をお勧めします)。
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0