SHPファイルへのCSVテーブル結合

651 views
Skip to first unread message

TDS OKNYM

unread,
Mar 6, 2022, 10:34:49 PM3/6/22
to QGIS初心者質問グループ
件名の件で質問がございます。バージョンは3.18.0です。
ベクタデータのSHPにCSVファイルを結合しようとしていますが、
小数点データなのに、整数となってしまう現象が発生します。

下記の手順で行いますが、3の段階までは、小数のデータで保たれています。
ところが4の作業後確認すると、整数値になってしまっています。

1、CSVとCSVTデータを作り、データ型を定義
2,QGISで1をデータマネージャで読む
3、結合先のSHPで2を結合
4、2をエクスポート

どうすればいいのか困ってはいますが、ひっかかることは1で定義しているCSVTでは小数を"real(4,3)" としているのに、2で確認するとreal(4,0)になっていることです。
しかしながら、属性テーブルを確認する限り、元データは保持されているので大丈夫なのかとは思っていましたが、こうなると、それが原因なのかどうなのか。そこが原因にしても何故real(4,3)がreal(4,0)と型式が変わるのかもわかりません。

教えて教えていただけますと幸いです。よろしくお願いいたします。

TDS OKNYM

unread,
Mar 6, 2022, 11:30:46 PM3/6/22
to QGIS初心者質問グループ
業務を進めるために邪道ながら、小数値のデータを100倍なり1000倍にしたものでエクスポートし、別フィールドを追加しフィールド演算で割り戻して、狙っているデータを作れましたので
業務の支障は排除できました。
しかし、本来は余計なステップだと思いますので、ご教示よろしくお願いいたします。
ちなみに、0.051というデータはreal(4,3)であっていますでしょうか?
そのような考え方でCSVTを作成しております。
2022年3月7日月曜日 12:34:49 UTC+9 TDS OKNYM:

福岡

unread,
Mar 7, 2022, 1:44:00 AM3/7/22
to QGIS初心者質問グループ
TDS OKNYM 様

こんにちは

CSVTの取り扱いに関する認識はTDS OKNYMさんと同様でしたので、実際に試してみて同じ結果となり、ちょっと意外でした。

小手先での解決策になると思いますが、次のような手順を考えてみました。
1 CSVTデータ作成を省略し、CSV単独で読み込む。
2 ShapeファイルへCSVファイルを結合する。
3 プロセッシングツールの「ベクタテーブル - 属性のリファクタリング」でデータ型と長さ、精度を設定して、ファイルを出力する。

手間数としてはCSVTファイル作成を省略し、エクスポートがプロセッシングツール利用に変わるので、面倒では無いと思います。
それにしても、何が原因なんでしょうね?

2022年3月7日月曜日 13:30:46 UTC+9 TDS OKNYM:

ありた

unread,
Mar 7, 2022, 9:32:10 AM3/7/22
to QGIS初心者質問グループ
こんにちは

まず CSVT の記述様式ですが、 "Real(5.3)" となります。

小数点、マイナス記号をふくめた幅が5文字、精度(小数点以下の桁数)が3文字です。
当然、整数部が大きな値をとったり、負数である場合には幅を大きくします。
なお、区切り文字にはドットを使います。そのため、 5 ドット 3 とします。

それはそうとして、 QGIS での CSV 読み込みを少し試してみましたが CSVT の精度表記は
読み込みエラーにはなりませんが、 QGIS に反映もされていないような気がします。
(精度表記を使っても、倍精度浮動小数点数 double 扱い)

反映されない挙動についても検証が不十分ではありますが、これが仕様の場合、
推測ですが、 CSV や Shapefile(dBase) ではテキストベースの形式であることから
精度は出力するファイルの容量にも影響するため、保存する際には指定し制約をつける
意味もありますが、 QGIS にレイヤとして読み込んだあとは(倍精度浮動小数点数で
表現できる範囲の数値であれば)制約を設ける必要はないため反映されないと
いうことも考えられます。



また現時点では RC 版扱いですが、先日リリースされた QGIS 3.24 ではデリミテットテキストを
読み込む際に、自動で型認識は行われますが、手動で型を指定してから読み込むことも
できるようになっています。
Reply all
Reply to author
Forward
0 new messages