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

前回は、ArcGIS Desktop の ModelBuilder で使用できる [値の計算] ツールを使用して条件分岐を作成する方法をご紹介しました。今回は入力データの座標系の定義がされているか判断する条件分岐を作成し、False または True によって処理を継続/中断する処理を行います。

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

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

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

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

5. [値の計算] ツールをダブル クリックして開きます。

6. 以下のように Describe オブジェクト を使用して座標系の定義の有無を確認します。

—————————–

条件式

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

コード ブロック

def checkProject(data):
  import arcpy
  prj = arcpy.Describe(data).spatialReference.name
  if prj == "Unknown":
    return 'false'
  else:
    return 'true'

—————————–

データ タイプは「ブール値」とします(ArcMap の場合は「ブール型」)。これで座標系が未定義であれば「false」、定義済みであれば「true」が返るようになります。

実行結果

7. [挿入] → [モデル専用ツール] → [停止] を追加します(ArcGIS Pro の場合は [MODELBUILDER] タブ → [論理] → [停止])。

8. [停止] ツールで以下のように設定します。条件分岐の出力値が True である場合、処理が中断し、False の場合処理が継続されます(つまり座標系が未定義の場合のみ処理が続行されます)。

9. [投影法の定義] ツールをモデルに追加して、以下のように設定します(座標系はユーザーが定義したい座標系を指定してください)。

この処理によって、フィーチャクラスの座標系が未定義の場合のみ、指定した座標系に定義することができます。

このように条件分岐を使用して、処理の継続/中断を行えますので、是非お試しください。

■関連リンク
モデルで条件分岐を作成しよう!If 文の作成―その 1:条件分岐の作成
モデルで条件分岐を作成しよう!If 文の作成―その 3:属性値で条件分岐

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