🗺️

QGISをPostgreSQLに繋ぐ

2024/06/05に公開

結論からいえばシンプル

でももちろん、シンプルにことが進んだわけではない。
例によって迷うだけ迷って、「青い鳥はお家にいました」みたいな道程。

環境

QGISがPostgreSQLと繋がるらしいことは、画面に象さんマークがあるのでわかっていた。
が問題は、私の環境だ。
参考にした本では、ローカルで繋いでいるが、
私は既にアップロードしたデータベースを使いたい。
AWSに、Serverpodを介してアップロードしている、という状況がなにを意味するのか
私にはさっぱりわからない。
https://zenn.dev/boiledorange73/books/b1de0a18073af70946e0

それでもとりあえずやってみる

繋ぎたいプロジェクトを開いた状態で
Menu → レイヤ → レイヤを追加 → PostGISレイヤを追加
すると接続情報を入れる画面になる。
ここにPostico2と同じ情報を入れてみる。
げ、繋がらない。
スクショを撮って爺様に見せたら、typoを見つけてくれた。
直したら、

おおお、繋がったじゃないか、あっさり!

地理情報を含むtableがありません

前回使ったCSVの元になっているテーブルには緯度、経度のColumnがあるが
そんなものはここでは地理情報と見なされないらしい。
そもそも「繋げられるか?」という不安が先に立ってまず繋いでみたものの、
これは参考にした本でいったら第8章の作業だ。
元に戻ろう。
第3章とりあえずPostGISのテーブル作ってみようか。
うーん、terminalでやってる。ローカルだからな。

後から考えたら、
本のterminalでの作業をそのまま、Postico2のSQLフィールドでやれば良かったのだが、
残念ながらそれを、この時点で気づけていない。

地理情報を含むテーブルを作るぞ

今回、私は、線や面ではなく、単純に点を打ちたいだけなので、
PostgreSQL的にいえば、それはpointという型で、(x, y) と表記するはず。
で、table追加、Column追加、強引にデータを直書き。
でも相変わらず、「地理情報を含むtableがありません」。
またスクショを撮って爺様にみせる。

これは、PostgreSQLのpoint型ですが、QGISが読み込める地理情報ではありません。

えええ、違うんかい。
第3章、ちゃんと読めよ、という話。

CREATE EXTENSION postgis;

QGIS側でPostGISというレイヤを加えたように、
PostgreSQL側でも、この呪文が要る。
そして爺様に言われたこの時、私はためらいなくPostico2のSQLフィールドにこれを打った。
そして気づいた。

最初からここでやれば良かったんだ!

だが時既に遅しで、本に載っているのは、テーブルを作るquery。
今私に必要なのは、tableを修正するquery。
皆さんはくれぐれも、私の轍を踏まず、最初から本のとおりにtableを作ってください。
できあがったtableはこんな形をしている。

できた! ・・・けど緯度と経度が逆

日本語で緯度経度という。
だけでなく、ふだんお目にかかるときも、latitudeが先で、longitudeが後に書いてある。
でなんとなく、そのまま書いたのが悪かった。
(x, y) ・・・・xは・・・横軸かい!
ということで、xは経度、yが緯度です。
BlenderとUnityも軸の向きが違うんでときどきイラッとくるけど、
こういうの引っかかると、ちょっと悲しい。
データベースを修正したら、toolBarのグルグル矢印で更新できる。
(ちなみに上の画像は、緯度経度修正後です)

見た目はぜんぜん変わらないけど

前回と違って、CSVじゃなく、データベースを読んでいる。

左下で赤くなっているのは戦艦大和の沈没場所。

QGIS Cloudに上げてみる

うーーーーーん、これってどうなんだろう。
アップロードするときに、取得するデータセットを聞かれた。
ということは、「その時のデータセット」が上がっている。
つまり、データベースが更新されても、cloud上には直には反映されないってことか。

つぎは自分のサイトに繋げてみたい

四次元年表
https://app.laporte.academy
三次元・四次元表示
https://tempo-spaco.web.app
四次元年表の使い方
https://www.youtube.com/@laporte_academy

四次元年表for Mobile
https://apps.apple.com/jp/app/四次元年表for-mobile/id6502634868

https://play.google.com/store/apps/details?id=academy.laporte.chronomapMobile.chronomap_mobile&hl=ja

Flutter大学

Discussion