2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

QGISでのバッチ処理

Last updated at Posted at 2020-06-11

#1.はじめに
コメント投稿用にアカウントを取得しましたが、1つも記事を書かないのはもったいないと思うようになりました。
エンドユーザーの作業記録程度のものですが、こんなものもあっても良いですよね?
本人にとっては備忘録のようなものです。

#2.やってみたこと
今回バッチプロセスを試してみたのは、「形式変換(gdal_translate)」、「全体図の作成(ピラミッド)」、「シェープファイルの投影法の定義」、「フィールド計算機」の4つです。
この中の「フィールド計算機」で、ちょっと苦労しています。
動作環境はWindows10 Pro 64bitでユーザ名は「owner」。QGISのバージョンは3.10.6です。
デスクトップに作業用の「TEST_1」と「TEST_2」というフォルダを作っています。

##2-1.ワールドファイル付きのTiffをGeoTiffへ変換する
メニューの「ラスタ - 変換 - 形式変換(gdal_translate)」をクリックします。
「形式変換(gdal_translate)」が立ち上がったら、左端下にある「バッチプロセスで実行」ボタンをクリックします。

「入力ラスタ」の行番号「2」に「 ・・・ 」というボタンがあるので、これをクリックします。
「ディレクトリ選択」を選ぶとエクスプローラー風の選択画面が出るので、Tiffとワールドファイルが入っているフォルダを選択して「フォルダの選択」ボタンをクリックします。

「出力のCRSを上書きする」では、一番上の上で適当なCRSを選択してから「オートフィル」ボタンをクリックして「フィルダウン」を選びます。

「出力バンドにnodata値を割り当てる」と「各出力ファイルに全データをコピーする」は、特に設定しません。

「出力ファイル」は出力ファイルのファイル名とパスを設定するところです。入力フォルダとは別のフォルダに、同一ファイル名で出力するように設定します。
「オートフィル」ボタンをクリックして、「式による計算」を選択すると「式文字列ビルダ」が立ち上がります。

「式文字列ビルダ」の真ん中のウインドウには、関数がカテゴリー毎に整理されていて、検索機能も用意されていますので、これを活用すると便利です。
関数をクリックしてアクティブにすると、右側のウインドウに現在の値や関数の説明などが表示されます。
今回は「INPUT」と「replace」を使うのでこれらをみてみます。

最初に「INPUT」です。現在の値に'C:/Users/owner/Desktop/TEST_1/ImgKA10ID9034.tif'と表示されています。
ユーザー名が「owner」で、デスクトップの「TEST_1」というフォルダに変換元のファイルを入れています。
この関数を使うと、フルパスでファイル名が取得されていることがわかります。
fig_1.png

次に「replace」をみてみます。
文字列内で文字の入れ替えができるようです。デスクトップに「TEST_2」という出力フォルダを用意しているので、「TEST_1」を「TEST_2」に入れ替えると目的が達成できそうです。
fig_2.png

入力した式は次のとおりです。

replace(@INPUT,'TEST_1','TEST_2')

「実行」ボタンをクリックして、処理を開始します。

##2-2.GeoTiffにピラミッドを作成する
高解像度のラスタがたくさんあると描画に時間が掛かり、スクロールがスムーズにできなくなります。
そこで、縮尺に応じて解像度を下げて表示させるために、ピラミッドを作成します。

メニューの「ラスタ - その他 - 全体図の作成(ピラミッド)」をクリックします。
「全体図の作成(ピラミッド)」が立ち上がったら、左端下にある「バッチプロセスで実行」ボタンをクリックします。

「入力ラスタ」の行番号「2」に「 ・・・ 」というボタンがあるので、これをクリックします。
「ディレクトリ選択」を選ぶとエクスプローラー風の選択画面が出るので、GeoTiffが入っているフォルダを選択して「フォルダの選択」ボタンをクリックします。

「全体図を作成するレベル」の2行目の値を「2 4 8 16 32 64」として、「オートフィルボタン」を押して「フィルダウン」を選択します。
「実行」ボタンをクリックして、処理を実行します。

##2-3.空間参照系が定義されていないShapeのprjファイルを作る
プロセッシングツールボックスの「ベクタ一般 - シェープファイルの投影法の定義」をクリックします。
「シェープファイルの投影法の定義」が立ち上がったら、左端下にある「バッチプロセスで実行」ボタンをクリックします。
「入力ラスタ」の行番号「2」に「 ・・・ 」というボタンがあるので、これをクリックします。
「ファイル選択」を選ぶとエクスプローラー風の選択画面が出るので、右下にあるファイルの種類を「全ファイル()」から「ESRI Shaoefilkes(.shp *.SHP)」にします。
Shapeファイルが入っているフォルダへ移動して、ファイルを選択します。
「CRS」行番号「2」の右端のアイコンをクリックして、適正なCRSを選びます。
「実行」ボタンをクリックして、処理を実行します。

##2-4.ファイル名を属性テーブルに取り込む
プロセシングツールボックスの「ベクタテーブル」内に「フィールド計算機」があることに気がつきました。
喜んで起動させてみたものの、立ち上がったフィールド計算機には他のツールにあった「バッチプロセスで実行」ボタンがありません。
ところが、何気なくプロセシングツールボックス内の「フィールド計算機」の文字の上で右クリックしたところ、メニューに「バッチプロセスで実行」が表示されました。

「2-3」の処理の後ですので、ファイルは「TEST_1」に入っています。ファイル名を属性テーブルに取り込んだ新しいShapeファイルを「TEST_2」に出力させます。
まず、処理前のShapeファイルをQGISに読み込ませておきます。そして「フィールド計算機」を「バッチプロセスで実行」で立ち上げます。
「入力レイヤ」の行番号「2」に「 ・・・ 」というボタンがあるので、これをクリックして「レイヤを開くから選択」を選びます。
「全てを選択する」ボタンをクリックしてから、「OK」ボタンをクリックします。

「結果フィールド名」には適当な名前を入力してから「オートフィル」ボタンをクリックして「フィルダウン」を選択します。
「フィールド型」は行番号「2」に「 ・・・ 」というボタンをクリックして「文字列(string)」を選択します。
「オートフィル」ボタンをクリックして「フィルダウン」を選択します。

「フィールド長」と「精度」は行番号「2」に適当な数値を入れてから、「オートフィル」ボタンをクリックして「フィルダウン」を選択します。
なお、データ型が文字列ですので、「精度」は「0」としました。
「新フィールド」はデフォルトの「はい」のままにしておきます。

「計算式」ですが、ここで躓きました。
「式文字列ビルダ」にある「INPUT」を使いますが、GeoTiff変換の時と違ってフルパスでなくファイル名が出力されます。
fig_3.png

欲しいのはファイル名なので「INPUT」を使うだけで良いように思いましたが、新しいフィールドの値が「Null」になりました。
もしかしてと思い、手作業で「バッチ処理・フィールド計算機」の「計算式」フィールドに表示された文字列をシングルクオーテーションで囲んでから実行してみたところ、属性テーブルに書き込むことができました。
さて、これを式で処理したいですが、「''」をシングルクオーテーションで囲むことで解決しました。
「'」や「\」を文字列として扱う場合、2つ重ねますので、これをシングルクオーテーションで囲んだということですね。
入力した式は次のとおりです。

'''' ||  @INPUT  || ''''

最後に「計算結果」です。ここには出力先のフルパスを入れたいです。
エクスプローラーで「TEST_2」フォルダまで移動してアドレスバーからパスをコピーしておきます。
「オートフィル」ボタンをクリックして「式による計算」を選びます。
左の式枠に先程のパスを貼り付けて、ちょこちょこと編集します。

'C:\\Users\\owner\\Desktop\\TEST_2\\' || @INPUT || '.shp'

「実行」ボタンをクリックして、処理を実行します。

#3.さいごに
「フィールド計算機」でバッチプロセスを行うことができるというのは、注目すべきことだと思いました。
たぶん気づいていない人も多いかと思います。

それとさらっと書いていますが、シングルクオーテーションの4連打('''')に辿り着くまで、それなりに試行錯誤しました。多分、半日くらい悩んだと思います。
プログラマーの方にとっては何でも無いことかと思いますが、非プログラマーのQGISユーザーが、高確率で躓く箇所かと思います。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?