Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

DEMデータの形式をCSV→TEXTへ変換する方法について

433 views
Skip to first unread message

ehime_kenmin

unread,
Jul 10, 2024, 6:58:44 AM7/10/24
to QGIS初心者質問グループ
いつも勉強させていただいております。
初めて質問させていただきます。

CSVポイントデータで構成されたDEMデータを
TEXTデータへ変換する方法を教えてください。

1,-42000.75,108723.75,132.60,0
2,-42000.25,108723.75,132.30,0
3,-42001.75,108723.25,132.80,0
4,-42001.25,108723.25,132.60,0
5,-42000.75,108723.25,132.30,0
6,-42000.25,108723.25,132.00,0
7,-42002.75,108722.75,133.20,1
8,-42002.25,108722.75,132.90,1
9,-42001.75,108722.75,132.60,1
10,-42001.25,108722.75,132.30,0

こういった形のデータを

-42671.750 108000.250 188.591
-42671.250 108000.250 188.987
-42670.750 108000.250 189.384
-42670.250 108000.250 189.781
-42669.750 108000.250 190.137
-42669.250 108000.250 189.995
-42668.750 108000.250 189.864
-42668.250 108000.250 189.732
-42667.750 108000.250 189.600
-42667.250 108000.250 189.463

このような形に変換したいと考えています。
もしくは、ポイントデータを中心とした0.5m解像度のラスタデータでも構いません。

CSVデータが大量にありますので、一括で変換できたら非常にありがたいです。
アドバイスいただけると幸いです。

よろしくお願いします。

【QGIS ver3.44】【win 11】


mooya

unread,
Jul 10, 2024, 10:36:54 AM7/10/24
to QGIS初心者質問グループ
こんにちは。

 完全にQGISとは離れてしまうのですが、テキスト処理の話なので、、
 サクラエディタというフリーソフトのテキストエディタにgrep置換という複数ファイルの置換をする機能があり、紹介します。
 サクラエディタ https://sakura-editor.github.io/
 
 サクラエディタをインストールして、メニューから検索→grep置換を選びます。
 下記のように設定(正規表現にチェックを入れる、検索場所、対象ファイルを設定する)し、置換ボタンを押します。
 置換前  "^\d+,([\d\+\-\.]+),([\d\+\-\.]+),([\d\+\-\.]+),\d+$"
 置換後 "\1 \2 \3"

キャプチャ.PNG


正規表現については、下記を参照してください(説明しだすと長くなるのと、私もそんなに詳しくない^ ^;;)



2024年7月10日水曜日 19:58:44 UTC+9 ehime_kenmin:

ehime_kenmin

unread,
Jul 10, 2024, 10:00:08 PM7/10/24
to QGIS初心者質問グループ
早速の返信ありがとうございます。
数年にわたってモヤモヤしていた問題が大幅に解決しました。

ただ、重ねての質問で申し訳ありませんが、
2点ほどわからないことが発生したため、どうかご教示ください。

①一部変換できなかったCSVデータがありました。
下記のテキストについては正常に変換ができませんでした。
マイナスが入っている数値が含まれていたので、記載いただいた正規表現に該当しないのかと思われますが、
自分の力不足で解決できませんでした。。。

311,-41238.25,109017.75,29.40,1
312,-41237.75,109017.75,29.20,0
313,-41237.25,109017.75,29.00,0
314,-41236.75,109017.75,28.50,-9999
315,-41236.25,109017.75,28.10,-9999
316,-41235.75,109017.75,27.30,-9999
317,-41235.25,109017.75,26.80,-9999


②サクラエディタが処理落ちしてしまいます。
膨大な数のテキストを処理しようとするため、ソフトが強制終了してしまいます。
1件40万行ほどあるテキストファイル8ファイルほどが限界でした。
無料ソフトを使用されてもらっている身なので文句は言いませんが、
何か改善する方法があれば、ぜひ教えてください。


取り急ぎ①の問題さえ解決できたら何とかなりますので
アドバイスいただけると大変助かります。

どうぞよろしくお願いします。


2024年7月10日水曜日 23:36:54 UTC+9 mooya:

下手の横好き

unread,
Jul 10, 2024, 10:07:39 PM7/10/24
to QGIS初心者質問グループ
> もしくは、ポイントデータを中心とした0.5m解像度のラスタデータでも構いません。

との事なので、QGISにインポートする際に、ツールバーのデータソースマネージャーからcsv読み込みを選択し、xyzに対応するカラムを指定してやれば済むのかなと…

あとはポイントからのDEMの作成方法はググって下さい。
2024年7月11日木曜日 11:00:08 UTC+9 ehime_kenmin:

ehime_kenmin

unread,
Jul 11, 2024, 3:19:21 AM7/11/24
to QGIS初心者質問グループ
回答いただきありがとうございます。

CSVの読み込みまではできましたが、
QGISを用いてポイントからDEMへの作成方法について、ググっても適切な方法を見つけることができませんでした。
TIN内挿(不規則三角網)をどこかのサイトで記載されていたので試してみましたが、
うまくいきませんでした(ポイントの中心としたDEMではなく、ポイントが左端点としたDEMができてしまいました)
よろしければ、よいWEBサイトがあれば教えていただけますでしょうか?

よろしくお願いします。


2024年7月11日木曜日 11:07:39 UTC+9 kidani...@gmail.com:

mooya

unread,
Jul 11, 2024, 4:34:36 AM7/11/24
to QGIS初心者質問グループ
こんにちは

グリッド化された等間隔の、データのようなので、xyzの拡張子にするとそのまま読めると思います。

てっきりこの記事の前処理の質問かと思ってました。

2024年7月11日木曜日 16:19:21 UTC+9 ehime_kenmin:

ehime_kenmin

unread,
Jul 12, 2024, 7:05:00 AM7/12/24
to QGIS初心者質問グループ
mooya様

推察の通り、j添付の記事にある形式でQGISに表示させたいというのが一番の目的です。
最初にmooya様から回答いただいた方針で作業を進めたいと考えております。

その際、先日以下のご返信いたしました問題が発生してしまって、私のような素人では思うように作業ができていない状況です。
ご指導のほどをお願いします


ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
早速の返信ありがとうございます。
数年にわたってモヤモヤしていた問題が大幅に解決しました。

ただ、重ねての質問で申し訳ありませんが、
2点ほどわからないことが発生したため、どうかご教示ください。


①一部変換できなかったCSVデータがありました。
下記のテキストについては正常に変換ができませんでした。
マイナスが入っている数値が含まれていたので、記載いただいた正規表現に該当しないのかと思われますが、
自分の力不足で解決できませんでした。。。

311,-41238.25,109017.75,29.40,1
312,-41237.75,109017.75,29.20,0
313,-41237.25,109017.75,29.00,0
314,-41236.75,109017.75,28.50,-9999
315,-41236.25,109017.75,28.10,-9999
316,-41235.75,109017.75,27.30,-9999
317,-41235.25,109017.75,26.80,-9999


②サクラエディタが処理落ちしてしまいます。
膨大な数のテキストを処理しようとするため、ソフトが強制終了してしまいます。
1件40万行ほどあるテキストファイル8ファイルほどが限界でした。
無料ソフトを使用されてもらっている身なので文句は言いませんが、
何か改善する方法があれば、ぜひ教えてください。


取り急ぎ①の問題さえ解決できたら何とかなりますので
アドバイスいただけると大変助かります。

どうぞよろしくお願いします。

2024年7月11日木曜日 17:34:36 UTC+9 mooya:

ありた

unread,
Jul 12, 2024, 10:21:20 AM7/12/24
to QGIS初心者質問グループ
こんにちは

形式決め打ちで汎用性はないですが、 Python でスクリプトを組んでみました。
1行読み込み、変換し、1行書き込むという処理をしているので、メモリは
ほとんど使用せず落ちることはないかと思います。

1. 下記スクリプトをダウンロードし、標高 CSV が存在するフォルダに置きます
2. スタートメニューの QGIS 3.xx フォルダ内の OSGeo4W Shell を起動
3. OSGeo4W Shell のカレントディレクトリを、標高 CSV が存在するフォルダにする
4. python csv2txt.py コマンドでスクリプトを実行すると、同じ場所にある
 CSV ファイルが変換され、 txt 拡張子で出力されます。



なお、マッチしない問題に関しては、上記で示されている正規表現パターンの
末尾にある ,\d+$ の箇所の \d が数字( 0-9 )を表しているため、マイナス記号が
現れる場合にマッチしません。
サクラエディタで実際に動作の確認していませんが、末尾 ,\d+$,-?\d+$ の
ようにするとよいかと思います。



2024年7月12日金曜日 20:05:00 UTC+9 ehime_kenmin:

ehime_kenmin

unread,
Jul 12, 2024, 10:24:52 PM7/12/24
to QGIS初心者質問グループ
ありたさま

ご回答ありがとうございます。
スクリプトまでご丁寧に作成いただき、(おそらく)処理落ちしないより適切な方法をご提示いただき感謝しております。

昨夜から実際にチャレンジをしてみているところですが、
pyshonなどのプログラミングソフトの経験がほとんどなく未知の領域で、たびたび躓いている状況です。

少なくとも1点エラーの要因として考えられるのが、
質問時言葉足らずでしたが、変換元のデータはコンマ区切りですが、拡張子はテキスト形式です。
そのため、組んでいただいたスクリプトのうち、このあたりは修正が必要なのではないかと思いますが、なんどやってもエラーが発生します。
こちらのエラー以前のごく初歩的な問題化もしれませんが。。。

頼ってばかり申し訳ありませんが、よろしければご確認のほどをお願いします。



スクショ.jpg


2024年7月12日金曜日 23:21:20 UTC+9 ありた:
04gc3941_0.5g_抜粋.txt

ありた

unread,
Jul 13, 2024, 12:09:39 AM7/13/24
to QGIS初心者質問グループ
こんにちは

python コマンドで対話用の Python を起動するのではなく、
python csv2txt.py コマンドとして、スクリプトを指定して起動してください。

2024年7月13日土曜日 11:24:52 UTC+9 ehime_kenmin:

ehime_kenmin

unread,
Jul 15, 2024, 11:28:20 AM7/15/24
to QGIS初心者質問グループ
ありたさま

何度も確認をしていることをお許しください
スクリプトを起動する箇所が誤っていた件については解消しました。ありがとうございました。

ただ、目的のファイルの形式が「コンマ区切りのテキストファイル」であるため、思うように動作いたしません。
試しに一部を「コンマ区切りのCSVファイル」へ変換すると正常に作動しました。

初めてのpythonなので関数や正規表現をひとつずつ調べながら、スクリプト内の「CSVファイル」と記載されている箇所を
「テキストファイル」に変更したりして何度も試行したものの、ファイルが空になったり、エラーが出たり、まっさらになったり、別のエラーがでたりで、正直なところ挫折中です。。。

目的ファイルを前もってすべてCSVに変換することはあまりにも時間がかかりすぎます。
どうか解決のヒントをいただけないでしょうか

2024年7月13日土曜日 13:09:39 UTC+9 ありた:

ありた

unread,
Jul 15, 2024, 12:06:34 PM7/15/24
to QGIS初心者質問グループ
すみませんが、もう一度手元にある入力ファイルの仕様等詳細を教えてください。

CSV 形式とは「コンマ(もしくは別の文字 (Character))で区切られたテキスト形式」です。
すなわち「コンマ区切りのテキストファイル」とは「コンマ区切りの CSV ファイル」ですが
どこをどう変更しようとされているのでしょうか。

「一部を「コンマ区切りの CSV ファイル」へ変換すると正常に作動しました」とは
ファイルの拡張子を *.csv にした。ということでしょうか。
そうであれば、元々の入力ファイルの拡張子はなんでしょうか。

またエラーが出たのであれば、そのエラーメッセージを記載してください。
ただしどのようにスクリプトを変更されたかわからないため、変更前のスクリプトに
対するエラーメッセージでお願いします。


2024年7月16日火曜日 0:28:20 UTC+9 ehime_kenmin:

ehime_kenmin

unread,
Jul 15, 2024, 8:28:51 PM7/15/24
to QGIS初心者質問グループ
ありたさま


ご連絡ありがとうございます
お答えします。

 「01_変換元データ(抜粋).txt」が変換したい目的のデータです。実際は何千行もありサイズは14MB程度ありますが、一部を抜粋しています。ファイルの種類等は変更していません。
 
 スクリプト実行後はこのような画面となりました。素人目には特に反応がないように思いました。

 02_スクリプト実行結果(04→06)_スクショ.jpg 
 「03_スクリプト実行後データ(01と更新日時、サイズ等変化なし).txt」がスクリプト実行後に存在していたデータです。更新日時やサイズに変更が見られないので、01と同様のファイルなのではと考えています。


 次に、エクセルを用いて01を読み込み、ファイルの種類を「CSV UTF-8(コンマ区切り)」と選択し、
 保存したデータが「04_CSVファイル変換(01元データ加工).csv」です。

 04をディレクトリ内へ入れて、いただいたスクリプトを実行するとこちらの反応が返ってきました。
 上の画像の続いて実施しています。

 05_スクリプト実行結果(04→06)_スクショ.jpg
 その結果得られたデータが「06_スクリプト実行後データ(04_CSVファイルに対し実行).txt」です。
 中身は希望通りの形式になっておりました。

 その際のディレクトリの状態はこちらとなりました。
 07_スクリプト実行後のフォルダの様子.jpg
 


初歩的なミスによって正常に作動していないのかもしれません。
 よろしくお願いします。
2024年7月16日火曜日 1:06:34 UTC+9 ありた:
02_スクリプト実行結果(04→06)_スクショ.jpg
03_スクリプト実行後データ(01と更新日時、サイズ等変化なし).txt
05_スクリプト実行結果(04→06)_スクショ.jpg
04_CSVファイル変換(01元データ加工).csv
01_変換元データ(抜粋).txt
06_スクリプト実行後データ(04_CSVファイルに対し実行).txt
07_スクリプト実行後のフォルダの様子.jpg

ありた

unread,
Jul 18, 2024, 8:25:05 AM7/18/24
to QGIS初心者質問グループ
こんにちは

当初のスクリプトは csv の拡張子を持つものを対象として変換するものですので
対象ファイルがなく、何も処理を行わないという想定通りの実行結果です。
(エラーもなく、 convert ... という処理の進捗も出力されない)

いくつか対処方針はあるかと思います。


(1) 変換対象のファイルの拡張子を csv とし、当初のスクリプトをそのまま用い、
  変換後のファイルの拡張子は txt とする方法
  → 変換対象のファイルに対し、 OSGeo4W Shell 上で下記コマンドなどを実行し
    拡張子変換(リネーム)を行ったのち、 csv2txt.py を実行
    ren *.txt *.csv


(2) 拡張子が txt であるファイルを対象とし、変換後のファイルは txt 以外の拡張子と
  なるようにする方法(例: csv, xyz, dat, 拡張子なしなど)
(3) 拡張子が txt であるファイルを対象とし、変換後のファイルを別フォルダ内に
  出力するようにする方法
(4) 拡張子が txt であるファイルを対象とし、変換後のファイルは別の命名規則の
  拡張子 txt ファイルとする方法(例: *.txt → *.output.txt )
  この際、出力ファイルの命名規則に則ったファイルは、変換対象から除外する必要がある
(5) 拡張子が txt であるファイルを対象とし、同ファイルに上書きする方法
  (変換エラーが生じた際や2回実行した場合など、元データが失われる危険性あり)

  → (2)~(5) は csv2txt.py の修正が必要となります



要するに入力ファイル(未処理ファイル)と出力ファイル(変換済みファイル)をいかに
区別して取り扱うかといったところです。

(1)はスクリプトを変更する必要がないため楽かと思いますが、(2)~(5)で希望のものが
あれば修正させていただきます。
その際、希望の出力拡張子名やフォルダ名などを具体的に記載ください。

2024年7月16日火曜日 9:28:51 UTC+9 ehime_kenmin:

ehime_kenmin

unread,
Jul 19, 2024, 1:34:20 AM7/19/24
to QGIS初心者質問グループ
ありたさま

無事、(1)の方法で拡張子を変換すると
すべてのデータの形式変換に成功いたしました!
本質問に対して、お時間をかけてご指導いただきましたこと、改めてお礼いたします。
長年やりたかった課題が解決できました。
pythonの可能性についても強く感じました。
少しだけ自分でも悩んだ時間もあり、わずかですが成長したような気がします。
今回をきっかけに今後とも勉強して理想のデータの整備に励んでまいります!

また、mooya様につきましても、より初心者向けのソフト「サクラエディタ」について
いち早くご回答いただき、ありがとうございます。こちらも大変参考になりました。


今後ともどうぞよろしくお願いします。

2024年7月18日木曜日 21:25:05 UTC+9 ありた:
Reply all
Reply to author
Forward
0 new messages