🚀

geo = 'SRID=4326;POINT($longitude $latitude)'

2024/08/12に公開

いや、それはだめでしょう

『四次元年表』というデータベースをつくっている。
位置情報を、いろんな形で格納している。
ふつうに緯度経度、三次元座標に変換したヤツ、
宇宙関係では、日心黄道座標、銀河座標系・・・
で、QGISを使うときのためのSRIDも保存したいのだが、なんかやたらとめんどうくさい。
なんとかにencodeして、それからdecodeして、それからなんとかに・・・みたいな

当分使わないけど、tableの構成だけ整えたいから
とりあえず形だけ、と思って、タイトルみたいに書いた。

なんとなくいける

これを使って、QGIS用のtableに保存する関数を書いた。
で、それを実行すると、まあ・・・当然Errorが出るよね。
でもよく見ると、QGIS用のtableには、ちゃんと保存されている。
問題はgeoの型。
PostgreSQLにはgeometry(Point,4326)というtypeがあるけど
Serverpodにはないので、とりあえずStringって書いた。
そしたら UndecodedBytes型がString型にキャストできない、というErrorで止まる。
止まるんだけど、保存はできてる。

止まって困るのは、先に進めないこと

ちゃんと保存できてるからいいじゃんと思うのだが、
いろんなtableに一斉に保存するために、関数が行列している。
QGISで止まられると、後ろの関数が走らない。

なら順番を変えよう

ということで、QGISテーブルへの挿入関数を最後尾に移した。
最後だろうとなんだろうと、Errorは出るので、「保存成功!」って出ないのが残念だけど、
でも、想定の項目は全て保存されている。
とりあえず、これでいいんじゃないだろうか?

どなたか詳しい方、ご教示ください。

四次元年表
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