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

ArcGIS DesktopModelBuilder を使用すると一連のジオプロセシング ツールを連結したワークフローを作成でき、一括で処理を行うことができます。ただし、処理を進めたいデータもあれば、処理を中断したいデータもあるかと思います。また属性の値に応じて場合分けをしたい場合もあるでしょう。

ModelBuilder の中で条件式を作成することで処理を分岐させることができます。条件式とは以下のようなロジックで表すことができます。

if (条件式)
文1;
else
文2;

ModelBuilder の [値の計算] ツールを使用して条件分岐を作成することで、データを分けて処理する方法を 3 回に分けてご紹介します!

その1:条件分岐の作成
その2:条件分岐による処理の中断と継続
その3:属性値で条件分岐

モデルビルダーの条件分岐

今回は入手したデータがシェープファイルかそれ以外のファイル形式かを判断する条件式を作成します。

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

2. [挿入] メニューから [変数の作成] をクリックします。

3. 変数データ タイプを [フィーチャクラス] とします。変数には適当なデータを指定します。

変数データ タイプの設定

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

5. [値の計算] をダブルクリックして起動して、以下のように設定を行います。

値の計算

—————————–
条件式

checkType(r’%フィーチャクラス%’)

コード ブロック

def checkType(data):
 import arcpy
 desc = arcpy.Describe(data)
 type = desc.datatype
 if type == "ShapeFile":
  return 'true'
 else:
  return 'false'

—————————–

「%フィーチャクラス%」はインライン変数ですので、フィーチャクラス変数で指定しているデータセットが格納されます。また、Describe 関数ではデータのプロパティを取得することができます。詳細は「データ処理に役立つ Python コード例その 1 :Describe オブジェクトを使ってデータのプロパティにアクセスする方法」をご参照ください。

データ タイプは「ブール値」とします(ArcMap の場合は「ブール型」)。これで条件式が真であれば true、偽であれば false が返るようになります。

実行結果
実行結果

 

 

このように条件を設定して真偽を判定することができます。是非活用してください。

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