FAQ
フィールド演算で条件分岐を行いたい (IF構文)

ナレッジ番号:2589 | 登録日:2023/05/29 | 更新日:2024/11/21

ArcMap の「フィールド演算」はフィーチャの属性値を入力するための便利な機能です。複数のフィーチャに一括で属性値の入力ができ、スクリプトを使用した高度な演算も行うことができます。

ここでは、フィールド演算で Python スクリプトを使用して、フィールドの値に基づいて分類する例を紹介します。

Image

手順

  1. ArcMap でフィーチャ レイヤの属性テーブルを開きます。 
  2. 属性を編集したいフィーチャを選択状態にしてから、フィールド名を右クリックして [フィールド演算] をクリックします。 
  3. [フィールド演算] ダイアログが表示されたら、[形式] として [Python] を選択します。 
  4. [コードブロックを表示] のチェックボックスにチェックを入れます。 
  5. 次のように入力します。
     
    [Pre-Logic Script Code:]
    def Reclass(temperature):
      if (temperature >= 35):
        return "猛暑日"
      elif (temperature < 35 and temperature >= 30):
        return "真夏日"
      elif (temperature < 30 and temperature >= 25):
        return "夏日"
      else:
        return ""
    
    ※ 分類するしきい値および戻り値は適宜変更してください。
    ※ temperature は変数です。
     
    フィールドの値として入力する式
    Reclass(!TempAug15!)
    
    ※ 「!TempAug15!」の部分を、分類したい値が入っているフィールドの名前に変更してください。
     
    Image
     
  6. [OK] をクリックしてフィールド演算を実行します。
     

注意:

  • Python スクリプトでは、行のインデント(行頭のスペースの数)が意味を持ちます。注意して入力してください。
  • [フィールド演算] ダイアログにコピー&ペーストで入力する場合は、フィールドの値として入力する式の後に改行を入力しないようにご注意ください。

補足情報

フィールド演算で入力した条件式を再利用したい場合は、以下のFAQの手順をお試しください。
フィールド演算の式を別のマップ ドキュメントで再利用する方法


IF構文を使用したその他の入力例

2 つのフィールド値が同一かを判別する例

以下で示すように、Python のIF構文で等号を使用する際は2つ続けて入力します。

[Pre-Logic Script Code:]

def Check(a, b):
   if a == b:
      return "○"
   else:
      return "×"

条件式

Check( !Field1! , !Field2! )

2 つのフィールド値が同一かを判別する例 (Pre-Logic Script Code不要)

形式を [Python] に設定した場合、三項演算子を用いて 1 行で表現することも可能です。その場合は、[条件式] に以下の式を入力します。
"○" if !Field1! == !Field2! else "×"

VBScript で条件分岐を行う例

[形式] で「VB Script」を選択し、以下のように入力します。

[Pre-Logic Script Code:]

Dim density
If [POP90_SQMI] < 100 Then
density = "low"
elseif [POP90_SQMI] < 300 Then
density = "medium"
else
density = "high"
end if

条件式 :

density

メタデータ

種類

製品

バージョン