dayjournal memo

Total 992 articles!!

Try #023 – QGISとCloud SQLのPostgreSQL&PostGISを利用してジオデータを表示してみた

Yasunori Kirimoto's avatar

画像


画像




画像 © OpenStreetMap contributors




QGISとCloud SQLのPostgreSQL&PostGISを利用してジオデータを表示してみました!



前提条件としてDBはGCPのサービスを利用するので、

  • GCPのアカウント取得
  • Cloud SDKのインストール

が必要になります。


Cloud SDKのインストールについては、下記リンクを参考にしてみてください。
GCE #003 - Cloud SDKをインストール



事前準備ができている場合は、まずローカル(Mac)からCloud SQLを利用するために、「Cloud SQL Proxy」をダウンロードします。

curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
chmod +x cloud_sql_proxy


ローカル環境が整ったら、実際にGCPのコンソールでCloud SQLを構築していきます。


Cloud SQLメニュー → インスタンスを作成 画像



今回は、PostgresSQLを利用します。 画像



インスタンスID、パスワード、リージョン、ゾーン、DBのバージョンを設定 → 作成
今回は、PostgresSQL 11 ベータ版を利用します。 画像



しばらく待つとインスタンスが立ち上がります。 画像



インスタンスの詳細を確認し、あとで利用する「インスタンス接続名」をコピーしておきます。 画像



最後に、任意のデーターベースを作成しておきます。 画像

画像



Cloud SQLのインスタンスが立ち上がったので、「Cloud SQL Proxy」をコマンドで実行します。

./cloud_sql_proxy -instances="インスタンス接続名"=tcp:3306

画像



次に、DBツールを利用してCloud SQLへの接続確認をしてみます。今回は、PhpStormを利用します。 画像



接続確認ができたら、PostGISを有効化します。
これでCloud SQLのPostgreSQL&PostGIS環境準備と、ローカルからの接続確認ができました。

CREATE EXTENSION postgis;

画像



次にQGISでCloud SQLに接続してみます。 画像



接続が確認できたらDBマネージャーを利用して、試しにOSMのポイントデータをとインポートしてみます。 画像



今回は、作成するテーブル名を「sample」としてみます。インポートされるまでしばらく待ちます。 画像



インポートが完了したら、レイヤで読み込んでみます。 画像



QGISにCloud SQLにインポートしたデータが無事表示されました。 画像




ローカルにDBを構築することなく、クラウドサービスのDBを構築しQGISで表示することができました!!


クラウドサービスなので、フルマネージドデータベースを実現し、GAE等との組み合わせ次第でWebサービスで利用できたり、ローカルからも接続できたりするので、色々とやれることの幅が広がる気がします。

デメリットとしては、ローカルでDBを用意するのと違って従量課金がかかってしまいます。かつ、Cloud SQLは他のサービスに比べて割高です… 利用する場合は従量課金にお気をつけください。



book

Q&A