画像


画像






画像
© 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は他のサービスに比べて割高です… 利用する場合は従量課金にお気をつけください。









Q&A