フィールド演算(Calculate Field) (データ管理)

ライセンス レベル:BasicStandardAdvanced

サマリ

フィーチャクラス、フィーチャ レイヤ、ラスタ カタログのフィールドの値を計算します。

フィールド演算(Calculate Field)ツールの使用例

使用法

構文

CalculateField_management (in_table, field, expression, {expression_type}, {code_block})
パラメータ説明データ タイプ
in_table

新しい演算で更新されるフィールドを含んでいるテーブル。

Mosaic Layer; Raster Catalog Layer; Raster Layer; Table View
field

新しい演算で更新されるフィールド。

Field
expression

選択されている行を設定する値を作成するために使用される単純な演算式。

SQL Expression
expression_type
(オプション)

使用される式のタイプを指定します。

  • VB式は標準の VB 形式で作成されます。デフォルト設定。
  • PYTHON式は標準の Python 形式で作成されます。ジオプロセッサのメソッドとプロパティを使用することは、9.2 バージョンのジオプロセッサを作成することと同じです。
  • PYTHON_9.3式は標準の Python 形式で作成されます。ジオプロセッサのメソッドとプロパティを使用することは、9.3 バージョンのジオプロセッサを作成することと同じです。
String
code_block
(オプション)

複雑な式に使用するコード ブロックを入力できるようにします。

String

コードのサンプル

CalculateField(フィールド演算)の例(Python ウィンドウ)

次の Python ウィンドウ スクリプトは、CalculateField(フィールド演算)関数をイミディエイト モードで使用する方法を示しています。

import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.AddField_management("vegtable.dbf", "VEG_TYP2", "TEXT", "", "", "20")
arcpy.CalculateField_management("vegtable.dbf", "VEG_TYP2", 
                                '!VEG_TYPE!.split(" ")[-1]', "PYTHON_9.3")
CalculateField(フィールド演算)の例:重心の演算

CalculateField(フィールド演算)を使用して、新しいフィールドに重心の値を割り当てます。

# Name: CalculateField_Centroids.py
# Description: Use CalculateField to assign centroid values to new fields

# Import system modules
import arcpy
from arcpy import env

try: 
    # Set environment settings
    env.workspace = "C:/data/airport.gdb"
 
    # Set local variables
    inFeatures = "parcels"
    fieldName1 = "xCentroid"
    fieldName2 = "yCentroid"
    fieldPrecision = 18
    fieldScale = 11
 
    # Add fields
    arcpy.AddField_management(inFeatures, fieldName1, "DOUBLE", 
                              fieldPrecision, fieldScale)
    arcpy.AddField_management(inFeatures, fieldName2, "DOUBLE", 
                              fieldPrecision, fieldScale)
 
    # Calculate centroid
    arcpy.CalculateField_management(inFeatures, fieldName1, 
                                    "!SHAPE.CENTROID.X!",
                                    "PYTHON_9.3")
    arcpy.CalculateField_management(inFeatures, fieldName2, 
                                    "!SHAPE.CENTROID.Y!",
                                    "PYTHON_9.3")
except Exception as e:
    # If an error occurred, print line number and error message
    import traceback
    import sys
    tb = sys.exc_info()[2]
    print("Line {0}".format(tb.tb_lineno))
    print(e.message)
CalculateField(フィールド演算)の例:範囲の演算

CalculateField(フィールド演算)とコード ブロックを使用して、範囲に基づいて値の演算を行います。

# Name: CalculateField_Ranges.py
# Description: Use CalculateField with a codeblock to calculate values
#  based on ranges

# Import system modules
import arcpy
from arcpy import env
 
# Set environment settings
env.workspace = "C:/data/airport.gdb"
 
# Set local variables
inTable = "parcels"
fieldName = "areaclass"
expression = "getClass(float(!SHAPE.area!))"
codeblock = """def getClass(area):
    if area <= 1000:
        return 1
    if area > 1000 and area <= 10000:
        return 2
    else:
        return 3"""
 
# Execute AddField
arcpy.AddField_management(inTable, fieldName, "SHORT")
 
# Execute CalculateField 
arcpy.CalculateField_management(inTable, fieldName, expression, "PYTHON_9.3", 
                                codeblock)
CalculateField(フィールド演算)の例:ランダム値の演算

CalculateField(フィールド演算)を使用して、新しいフィールドにランダム値を割り当てます。

# Name: CalculateField_Random.py
# Description: Use CalculateField to assign random values to a new field


# Import system modules
import arcpy
from arcpy import env
 
# Set environment settings
env.workspace = "C:/data/airport.gdb"
  
# Set local variables
inFeatures = "parcels"
fieldName = "RndValue"
expression = "arcgis.rand('Integer 0 10')"
 
# Execute AddField
arcpy.AddField_management(inFeatures, fieldName, "LONG")
 
# Execute CalculateField 
arcpy.CalculateField_management(inFeatures, fieldName, expression, "PYTHON_9.3")

環境

関連トピック

ライセンス情報

ArcGIS for Desktop Basic: ○
ArcGIS for Desktop Standard: ○
ArcGIS for Desktop Advanced: ○
9/14/2013