前回は、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 文” を使用する