モデルで条件分岐を作成しよう!If 文の作成
―その 3:属性値で条件分岐

これまで 2 回に渡って、ArcGIS Desktop の ModelBuilder で使用できる [値の計算] ツールを使用して条件分岐を作成する方法をご紹介しました。

モデルで条件分岐を作成しよう!If 文の作成―その1:条件分岐の作成

モデルで条件分岐を作成しよう!If 文の作成―その2:条件分岐による処理の中断と継続

今回は入力データの属性値に応じて処理を分ける方法をご紹介します。

例として、入力データの道路種別に応じてバッファーのサイズ(太さ)を変えてデータを出力するモデルを作成します。

入力データと出力バッファー

1. ArcMap または ArcGIS Pro の ModelBuilder を起動します。

2. [挿入] → [反復処理] → [フィーチャ選択の反復] を追加します(ArcGIS Pro の場合は [MODELBUILDER] タブ → [反復] → [フィーチャ選択の反復])。

3. [フィーチャ選択の反復] ツールをダブルクリックして起動して、入力フィーチャと定義分けするフィールドを指定します(今回は TYPE フィールドに格納された道路種別に応じてバッファー サイズを変えます)。

4. 緑色の出力値を右クリックして [名前の変更] をクリックして、「道路選択_%値%」という名前に変更します。(%値%インライン変数ですので、各フィーチャの道路種別の名前が入ります)。

5. [挿入] → [モデル専用ツール] → [値の計算] を追加します(ArcGIS Pro の場合は [MODELBUILDER] タブ → [ユーティリティ] → [値の計算])。

6. [値の計算] ツールをダブルクリックして以下のように道路種別に応じてバッファー サイズを変更します。

—————————–

条件式

X(“%値%”)

コード ブロック

def X(value):
  if value == "高速自動車国道等":
    return 20
  elif values == "国道":
    return 10
  else:
    return 5

—————————–

データ タイプは「Long」とします。

7. モデルに [バッファー] ツールを追加して、モデル上で [出力値] と [バッファー] ツールを接続して、[バッファーの距離 [値またはフィールドを指定]] をクリックして、値として指定します。[値の計算] ツールで返った値が自動でパラメーターとして設定されます。

8.「道路選択_%値%」と [バッファー] ツールも接続して、「入力フィーチャ」に指定します。

9. [バッファー] ツールをダブルクリックして以下のように設定されていることを確認します。出力名は「道路_Buffer _%値%」としてフィーチャクラス名が重複しないように設定します。

処理を実行すると、道路種別に応じて道路幅が異なるバッファーが作成されます。

完成したモデル

ModelBuilder には反復ツールやモデル専用ツールがあり、ジオプロセシング ツールの入出力や処理の手助けをします。是非活用して効率的な処理を行ってください。

■関連リンク
モデルで条件分岐を作成しよう!If 文の作成―その 1:条件分岐の作成
モデルで条件分岐を作成しよう!If 文の作成―その 2:条件分岐による処理の中断と継続

今さら聞けない ModelBuilder 入門 1 : ModelBuilder って何?
今さら聞けない ModelBuilder 入門 2 : モデルの保存
今さら聞けない ModelBuilder 入門 3 : リスト変数で複数データを一括処理
今さら聞けない ModelBuilder 入門 4 : バッチ グリッドの便利な入力方法
Python コード例(その5): ModelBuilder で Python の “If 文” を使用する