LoginSignup
0
0

【GCP】Cloud SQLにPostGISで地理情報データベースを構築する

Posted at

はじめに

地理空間情報をデータベース化する必要があったので備忘録として書きます。

PostGISとは

【以下ChatGPTの要約】
PostGISは、PostgreSQLデータベースの拡張機能であり、地理空間情報を扱うための機能を提供します。これにより、地理空間データ(位置情報、地図データなど)を保存、検索、管理することができます。SQL標準に基づいた地理空間クエリの実行が可能になり、空間分析や地図作成など、幅広いアプリケーションでの使用が可能です。

使用するデータ

GCPプロジェクトの作成とSQLインスタンスの作成

GCPのページから新しいプロジェクトを作成する。
image.png


作成したプロジェクトを選択しSQLを選択する。
image.png


インスタンスを作成を選択する。
image.png


PostgresSQLを選択する。
image.png


APIを有効にする。
image.png


各設定をする。ここでは料金が最小になる構成とした。
image.png


インスタンスを作成。最小構成にしたので立ち上がるまでにかなり時間がかかります。
image.png

インスタンスのアクセス設定

SQLインスタンスへの接続はIPホワイトリストを作成して接続元を制限するか、プロキシクラインとを使いトンネリング接続するかのどちらか。
今回は試験的に行うので全てのIPアドレスからの接続を許可する。


接続、ネットワーキング、ネットワークの追加を選択する。
image.png


適当な名前とネットワークに0.0.0.0/0を入れる。
どこからでもアクセスできるので注意が必要。
image.png


実際には接続側のIPを固定して指定するか、プロキシを使用するべき。
プロキシの使用方法は以下参照。
https://qiita.com/cognitom/items/c6b2ccb6e6b0f731850a

インスタンスへのアクセス確認

psqlで接続を確認する。インストール方法は以下記事参照。
https://qiita.com/tom-sato/items/037b8f8cb4b326710f71


概要からパブリックIPアドレスをコピー
image.png


以下のコマンドでインスタンスにアクセスする。
psql -h "IPアドレス" -p 5432 -U postgres -d postgres

パスワードはインスタンス作成時に設定したものを入力。
以下のように表示されればアクセス成功。

image.png


ちなみにパスワードはユーザーから変更できる
image.png

postgisの導入

psql上で以下のコマンドでpostgisエクステンションを適用する。

CREATE EXTENSION postgis;

成功すると以下のようになる。
image.png

データのインポート

geojsonファイルをSQLインスタンスにインポートする。
やり方はいろいろあるみたいだが、GDALのogr2ogrを使うのが一番手っ取り早そう。
以下を参照しconda経由でGDALをインストールする。
https://info.qchizu.xyz/knowledge/knowledge-gdal-install/
(ちなみにいろいろなインストール方法があるが他のやり方だとうまくいかなかった)


インストールできたらAnaconda Promptより以下のコマンドでgeojsonファイルをインポートする。 "IPアドレス"にはインスタンスのIPアドレスを、passwordには設定したパスワードを、"geojsonファイル名"にはインポートするgeojsonファイルを、"テーブル名”には任意のテーブル名を設定する。
ogr2ogr -lco ENCODING=UTF-8 -oo ENCODING=UTF-8 -f "PostgreSQL" PG:"host=”IPアドレス” port=5432 dbname="postgres" user=postgres password='***'" "geojsonファイル名" -nln "テーブル名"

image.png


psqlでコマンド\dtでテーブル一覧を表示すると無事インポートされている。
image.png

QGISでインスタンスにアクセス

QGISからDBインスタンスにアクセスし、postGISサーバとして動作していることを確認する。
QGISのPostGISを左クリックし新規接続
image.png


以下の通り設定する。
名前:任意
ホスト:インスタンスのIPアドレス
ポート番号:5432
データベース:postgres
SSLモード:allow
image.png

ユーザー名とパスワードを聞かれるので入力する。


追加したDBが選択できるようになりテーブルをレイヤに追加できる。
レイヤに追加するとDBからデータをダウンロードしてきて表示できる。
image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0