2022年9月6日火曜日

QGIS + PostgreSQL + 日本語

一息ついたので、QGIS + PostgreSQL を実践しています。

用意したのはガッツリ日本語の入った csv。
以前購入していた図書を参考に、PostgreSQL が日本語にどこまで対応しているのか知りたいというのと、QGIS から PostgreSQL へデータを取り込む方法のトレースが目的です。後者は図書を読むまで知らなかったんですよね。

まずはSQL。
ジオメトリ作成は日本語 out。””ナシだとエラー。”緯度”というように””で囲むとエラーはかからなかったのですが、ジオメトリとして認識されませんでした。日本語でカラムを指定する方法がわからず、Lat, Lon で csv を書き換え。
csvを取り込む際に小文字変換のチェックがあったのですが、大文字だと引っかかるみたいですね。ま、キホン英数小文字というのはわかるのですが、何か日本語を通す書き方はあるのだと思います。
ALTER TABLE s_aaa.tb_bbb ADD geom GEOMETRY(POINT,4612);
UPDATE s_aaa.tb_bbb SET geom=ST_GeometryFromText('SRID=4612;POINT('||lat||' '||lon||')');
※この後、空間インデックス作成

型変換は日本語カラムOK。
ALTER TABLE s_aaa.tb_bbb
ALTER COLUMN "あああ" TYPE int4
USING "あああ"::int4
ただし、Python と異なって、nan を含む場合は float にも変換できませんでした。これも何かコツがあるのでしょう。

キーの指定は日本語OK。テーブル名、カラム名ともに日本語でも問題ありませんでした。


次にQGIS
csv を shpにするとカラム名が半角8文字でぶつ切りにされます。が、csv を PostgreSQL に取り込むと、問題ナシ。SQL でジオメトリを作ってから QGIS に持っていくと、長い日本語カラムでも欠かすことなく取り込めました。

QIS からは geometry を持つテーブルしか見えません。オブジェクトをクリックするとその属性が pop up され、さらに外部キーから参照テーブルの情報を表示させる、といった機能はなさそうです。これに期待していたので、もう少し探してみようと思います。

一通り触ってみましたが、QGIS の機能の多さにあらためて驚き。
SQL は使わないかな。QGIS 側で地理情報のみの表示であれば、Python で作ってしまった方が柔軟かつ速いと思います。

0 件のコメント:

コメントを投稿