SHPからCSVへのエクスポートを自動化したい

859 views
Skip to first unread message

おとは

unread,
May 24, 2022, 12:07:52 AM5/24/22
to QGIS初心者質問グループ
QGISに読み込んでいる大量の Shapeファイルを全てCSV形式でエクスポートしたいです。
一つや二つなら右クリックからエクスポートで大丈夫なのですが、大量にあるため苦戦しています。
そこでバッチプロセスで処理していきたいのですが、そのような機能をご存じの方いますでしょうか。
教えていただけますと幸いです。
(Shapeファイルのデータは中の数値が違うだけでカラム名など構成?は全て同じです。)

福岡

unread,
May 26, 2022, 2:54:11 AM5/26/22
to QGIS初心者質問グループ
おとは 様

こんにちは

ちょっと時間が取れましたので、私ならどうするかと考えて、試してみました。
そして試した過程を含めてお伝えすると、今後に役に立つこともあるかと思いますので、今回は実況中継風の投稿にしてみました。
ちょっと煩わしく感じるかもしれませんが、なにとぞご容赦ください。

さて最初の発想です。
プロセッシングツールにGDALがあることを記憶していましたので、これを使ってバッチ処理すると何とかなるのではないかと思いました。
プロセッシングツールの「GDAL - ベクタ変換 - フォーマット変換(gdal_translate)」を立ち上げます。

fig01.png

バッチ処理に入る前に、まずは単独処理で「入力レイヤ」と「出力レイヤ」を設定して「GDAL/OGRコンソール」の記述を確認します。

fig02.png

ふむふむ。コマンドは「ogr2ogr」を使っていて、出力で拡張子を「csv」にしている関係で「-f "CSV"」というオプションが自動で設定されています。

まずは単独で処理してみましょう。
なるほど、属性テーブルがそのままCSVファイルになっている感じですね。私なら座標データのフィールドを欲しいと思います。
それでは座標をCSVに付与するオプションを付ける方針で行きましょう。

「ogr2ogr」をググって説明をみてみます。

GDAL documentation ≫ Programs ≫ ogr2ogr
https://gdal.org/programs/ogr2ogr.html

むむむ、これはいけません。Google翻訳大先生の力を借りても、どのようなオプションを設定して良いのかわかりません。

それではキーワードを「shape to csv ogr2ogr」にしてググってみましょう。
検索のトップに出てきたものを拝見。

ogr2ogr 備忘録
https://qiita.com/tohka383/items/d3d1bf80db2cfb416330

これは、わかりやすいです。
投稿者は「tohka383」さんですと!!
いつもお世話になっております。 ありがとうございます。m(__)m  ありがとうございますm(__)m

「-lco GEOMETRY=AS_WKT」を追加することでいけそうです。

さきほどのダイアログの下にある「バッチプロセスで実行」ボタンをクリックします。
オプションを追加するフィールドがないので、歯車の形をしたアイコンをクリックして追加オプションのフィールドを追加します。

fig03.png

入力レイヤでは「ファイル選択」で、ファイルを指定します。
※QGISのレイヤにShapeファイルは読み込んでいません。読み込まないほうが、後の出力パスの式が簡素な記述で済むと思います。

fig04.png

追加オプションでは「式による計算」を選んで、式ウインドウに「'-lco GEOMETRY=AS_WKT'」と入力して「OK」ボタンをクリックします。

fig05.png

fig06.png

出力レイヤでも「式による計算」を選びます。式ウインドウに「replace( @INPUT ,'.shp' ,'.csv' )」と入力して「OK」ボタンをクリックします。
なお、これはShapeファイルと同じフォルダに出力する式となっていますので、状況に応じて、適宜、修正してください。

fig07.png

設定後のダイアログの状況は、ざっとこんな感じです。これで実行します。

fig08.png

結果をみると良好だと思います。
必要に応じて他のオプション(-lco SEPARATOR=、-lco CREATE_CSVT=など)を追加したり、「-lco GEOMETRY=AS_WKT」を「-lco GEOMETRY=AS_XY」などにすると良いと思います。

2022年5月24日火曜日 13:07:52 UTC+9 おとは:
Reply all
Reply to author
Forward
0 new messages