ArcGIS for Desktop

  • ドキュメント
  • 価格
  • サポート

  • My Profile
  • ヘルプ
  • Sign Out
ArcGIS for Desktop

ArcGIS Online

組織のマッピング プラットフォーム

ArcGIS for Desktop

完全なプロ仕様の GIS

ArcGIS for Server

エンタープライズ GIS

ArcGIS for Developers

位置情報利用アプリの開発ツール

ArcGIS Solutions

各種業界向けの無料のテンプレート マップおよびテンプレート アプリケーション

ArcGIS Marketplace

組織で使えるアプリとデータを取得

  • ドキュメント
  • 価格
  • サポート
Esri
  • サイン イン
user
  • マイ プロフィール
  • サイン アウト

ヘルプ

  • ホーム
  • はじめに
  • マップ
  • 解析
  • データ管理
  • ツール
  • その他...

分岐での If-Then-Else 論理の使用

  • ModelBuilder での if-then-else 論理の使用
  • if-then-else 論理の例

if-then-else 論理は、条件に基づいて異なる処理を実行するための単純で強力な概念です。if-then-else 論理は、「条件が true の場合はある処理を実行し、同じ条件が false の場合は別の処理を実行する」のように説明できます。

ModelBuilder での if-then-else 論理の使用

ModelBuilder で if-then-else 論理を実装するには、条件をテストして true と false の状態を表す 2 つの Boolean 変数を出力するスクリプト ツールを作成し、このスクリプト ツールをモデルに組み込みます。スクリプト ツールを作成する代わりに、[値の計算(Calculate Value)] ツールを使用して、条件のテストと Boolean 値の出力を行うこともできます。

次のモデルは、[座標系の確認(Check Coordinate System)] というスクリプト ツールを組み込んで、分岐の論理を使用しています。このスクリプト ツールは入力データセットを評価して、そのデータセットの座標系が投影された State Plane 座標系であるか、不明の座標系であるかを通知します。このモデルでは、入力データセットの座標系が投影された State Plane 座標系であると判断された場合、何も処理は実行されません。一方、入力データの座標系が不明の座標系であると判断された場合、モデルは投影システムを定義して、入力データを投影変換します。ModelBuilder で分岐論理を使用する際の主な手順の 1 つは、条件出力の 1 つを後の処理に対する前提条件として設定することです。

If-Then-Else の例

if-then-else 論理の例

次のサンプル コードは、上で説明した [座標系の確認(Check Coordinate System)] スクリプト ツールで、if-then-else による分岐がどのように実装されるかを示しています。スクリプトは 2 つの変数を出力し、1 つは if(true)条件を表し、もう 1 つは else(false)条件を表しています。

座標系の確認の例

この例は、入力データが StatePlane であるか、PRJ がないか、StatePlane 以外であるかをチェックします。

# Import modules
import arcpy
import sys
import traceback

# Set local variables
prj = "" 
indata = "C:/ToolData/well.shp" 
dsc = arcpy.Describe(indata) 
sr = dsc.spatialReference 
prj = sr.name.lower()

try:
 
   # check if indata is in StatePlane, has no PRJ, or one other than StatePlane
   if prj.find("_stateplane_") > -1:
       # Set the Is Unknown parameter to FALSE, and the Is StatePlane parameter to TRUE
       arcpy.SetParameterAsText(1,"false") #The first parameter refers to the "Is Unknown" variable
       arcpy.SetParameterAsText(2,"true") #The second parameter refers to the "Is StatePlane" variable
       arcpy.AddMessage("Coordinate system is StatePlane") 

   elif prj == "unknown": 
       # Set the Is Unknown parameter to TRUE, and the Is StatePlane parameter to FALSE
       arcpy.SetParameterAsText(1,"true") 
       arcpy.SetParameterAsText(2,"false") 
       arcpy.AddMessage("To continue, first define a coordinate system!") 

   else:
       # Set the Is Unknown parameter to FALSE, and the Is StatePlane parameter to FALSE
       arcpy.SetParameterAsText(1,"false") 
       arcpy.SetParameterAsText(2,"false") 
       arcpy.AddMessage("Coordinate system is not StatePlane or Unknown") 

except Exception as e:
    AddPrintMessage(e[0], 2)

モデル内での if-then-else 論理の使用例については、以下のブログをご参照ください。

  • Understanding which "if" troubles you(「if」の概要)
  • If you are stuck at "if" - Part 1 - Calculate Value examples(「if」の問題 - パート 1 - 値の計算例)
  • If you are stuck at "if" - Part 2 - Script tool example(「if」の問題 - パート 2 - スクリプト ツールの例)
  • If you are stuck at "if" - Part 3 - Does Extension Exist model example(「if」の問題 - パート 3 - 「エクステンションが存在するか?」モデルの例)
  • If you are stuck at "if" - Part 4 - Does Selection Exist model example(「if」の問題 - パート 4 - 「選択セットが存在するか?」モデルの例)
  • If you are stuck at "if" - Part 5 - Does Projection Exist model example(「if」の問題 - パート 5 - 「投影が存在するか?」モデルの例)

このトピックへのフィードバック

ArcGIS for Desktop

  • ホーム
  • ドキュメント
  • 価格
  • サポート

ArcGIS プラットフォーム

  • ArcGIS Online
  • ArcGIS for Desktop
  • ArcGIS for Server
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Esri について

  • 会社概要
  • 採用情報
  • スタッフ ブログ
  • ユーザ カンファレンス
  • デベロッパ サミット
Esri
© Copyright 2016 Environmental Systems Research Institute, Inc. | プライバシー | リーガル