フィールド演算 (複数) (Calculate Fields) (データ管理)

サマリー

フィーチャクラス、フィーチャ レイヤー、またはラスターの 2 つ以上のフィールドの値を計算します。

使用法

  • Python 式の詳細については、「フィールド演算 (Calculate Field) の Python の例」をご参照ください。

    Arcade 式の詳細については、「ArcGIS Arcade ガイド」をご参照ください。

    SQL 式の詳細については、「フィールドの計算」をご参照ください。

  • [フィーチャ レイヤーの作成 (Make Feature Layer)][属性検索 (Select Layer By Attribute)] ツールでクエリから作成されたフィーチャなど、一連の選択されているフィーチャに対してこのツールを使用すると、選択されているレコードのみが更新されます。

  • 既存のフィールドの値は上書きされます。 元の値を維持するには、入力テーブルのコピーを作成します。

  • Python の演算の場合、フィールド名は感嘆符で囲まれている必要があります (たとえば、!fieldname!)。

    Arcade の演算の場合、フィールド名に接頭辞 $feature. が付与されている必要があります (たとえば、$feature.fieldname)。

  • テキスト フィールドまたは文字フィールドの文字列の演算を行う場合、ダイアログ ボックスでは、文字列を二重引用符で囲む必要があり (たとえば「"string"」)、スクリプトでは、二重引用符で囲まれた文字列をさらに一重引用符で囲む必要があります (たとえば、'"string"')。

  • 数値を指定するフィールドの演算を行うには、[式] パラメーターに数値を入力します。値を引用符で囲む必要はありません。

  • [コード ブロック] パラメーターを使用すると、複雑な式を作成できます。 コード ブロックは、ダイアログ ボックスに直接入力するか、スクリプトで文字列として入力します。 式とコード ブロックは接続されています。 コード ブロックの結果が式に渡される必要があるため、コード ブロックが式に関連付けられている必要もあります。

    [コード ブロック] パラメーターは Python 式でのみサポートされています。

  • [コード ブロック] パラメーターで、Pythonmath モジュールおよび形式を使用できます。 追加のモジュールをインポートすることもできます。 math モジュールは、数論的関数と表現関数、べき関数と対数関数、三角関数、角度変換関数、双曲線関数、および数学定数を提供します。 math モジュールの詳細については、「Python」のヘルプをご参照ください。

  • typeextentcentroidfirstPointlastPointarealengthisMultipartpartCount などの Geometry オブジェクトのプロパティを使用して、Python 式 (たとえば、!shape.area!) を作成することができます。

  • Python 式では、ジオメトリの area プロパティや length プロパティに面積や長さの単位を指定して、値を異なる計測単位 (!shape.length@kilometers! など) に変換できます。 データが地理座標系に格納されており、距離単位 (たとえば、マイル) が指定されている場合、長さは測地線アルゴリズムを使用して計算されます。 地理データで面積単位を使用すると、グローブ全体で度 (10 進) が一定でないため、正確な結果になりません。

    ジオプロセシング ツールと距離および面積単位の詳細

  • geodesicArea または geodesicLength プロパティを面積や長さの計測単位と組み合わせて Python 式で使用すると、測地線に基づくフィーチャの面積や長さを計算できます (例: !shape.geodesicArea@hectares! または !shape.geodesicLength@miles!)。

  • 結合したデータの演算を行う際、結合された列を直接演算することはできません。 元のテーブルの列の演算を直接行うことはできます。 結合されたデータの演算を行うには、はじめに、結合されたテーブルまたはレイヤーをマップに追加します。 そうすると、このデータの演算を単体で行うことができるようになります。 これらの変更は結合された列に反映されます。

  • NULL を含む文字列フィールドの連結やゼロ値での除算を試みる Python 式は、このフィールド値として NULL を返します。

  • SQL 式は、フィーチャ サービスやエンタープライズ ジオデータベースの高速な計算をサポートします。 一度に 1 つのフィーチャまたは行を計算する代わりに、サーバーまたはデータベースに 1 つのリクエストが送信されるので、計算が高速化します。

    フィーチャ サービスとエンタープライズ ジオデータベースだけが SQL 式をサポートしています。 他の形式では、Python または Arcade 式を使用します。

    [式の種類] パラメーターの [SQL] オプションの使用には、次の制限があります。

    • このオプションは、Db2OraclePostgreSQLSAP HANA、および SQL Server のエンタープライズ ジオデータベースのみでサポートされています。
    • 結合テーブルのフィールド値の計算はサポートされていません。
    • バージョン対応登録されたエンタープライズ ジオデータベース データと履歴管理が有効化されたエンタープライズ ジオデータベース データはサポートされていません。
    • ジオプロセシング ツールを元に戻す機能はサポートされていません。

    SQL 式のヘルプは、データベース ベンダーのドキュメントをご参照ください。

パラメーター

ラベル説明データ タイプ
入力テーブル

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

Table View; Raster Layer; Mosaic Layer
式の種類

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

Python 式の詳細については、「フィールド演算 (Calculate Field) の Python の例」をご参照ください。

Arcade 式の詳細については、「ArcGIS Arcade ガイド」をご参照ください。

SQL 式の詳細については、「フィールドの計算」をご参照ください。

  • Python 3Python 式の種類が使用されます。 これがデフォルトです。
  • ArcadeArcade 式の種類が使用されます。
  • SQLSQL 式の種類が使用されます。
String
フィールド

計算されるフィールド、その式、および WHERE 句。

レコードのサブセットを選択するために使用するオプションの SQL 式。 この WHERE 句に一致するレコードのみが計算されます。 WHERE 句を空白のままにすると、すべてのレコードが計算されます。 SQL 構文の詳細については、「ArcGIS で使用されるクエリ式への SQL リファレンス」をご参照ください。

Value Table
コード ブロック
(オプション)

複雑な式に使用するコードのブロック。

関数を使用し、複数の値を返すことはできません。

String
ドメインを設定
(オプション)

フィールド ドメイン ルールを適用するかどうかを指定します。

  • オン - フィールド ドメイン ルールが適用されます。 フィールドを更新できない場合、フィールド値は変更されず、ツールのメッセージには警告メッセージが表示されます。
  • オフ - フィールド ドメイン ルールは適用されません。 これがデフォルトです。
Boolean

派生した出力

ラベル説明データ タイプ
出力テーブル

更新されたテーブル。

Table View; Raster Layer; Mosaic Layer

arcpy.management.CalculateFields(in_table, expression_type, fields, {code_block}, {enforce_domains})
名前説明データ タイプ
in_table

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

Table View; Raster Layer; Mosaic Layer
expression_type

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

  • PYTHON3Python 式の種類が使用されます。 これがデフォルトです。
  • ARCADEArcade 式の種類が使用されます。
  • SQLSQL 式の種類が使用されます。

Python 式の詳細については、「フィールド演算 (Calculate Field) の Python の例」をご参照ください。

Arcade 式の詳細については、「ArcGIS Arcade ガイド」をご参照ください。

SQL 式の詳細については、「フィールドの計算」をご参照ください。

String
fields
[[Field Name, Expression, {Where Clause}],...]

計算されるフィールド、その式、および WHERE 句。

レコードのサブセットを選択するために使用するオプションの SQL 式。 この WHERE 句に一致するレコードのみが計算されます。 WHERE 句を空白のままにすると、すべてのレコードが計算されます。 SQL 構文の詳細については、「ArcGIS で使用されるクエリ式への SQL リファレンス」をご参照ください。

Value Table
code_block
(オプション)

複雑な式に使用するコードのブロック。

関数を使用し、複数の値を返すことはできません。

String
enforce_domains
(オプション)

フィールド ドメイン ルールを適用するかどうかを指定します。

  • ENFORCE_DOMAINSフィールド ドメイン ルールが適用されます。
  • NO_ENFORCE_DOMAINSフィールド ドメイン ルールは適用されません。 これがデフォルトです。
Boolean

派生した出力

名前説明データ タイプ
out_table

更新されたテーブル。

Table View; Raster Layer; Mosaic Layer

コードのサンプル

CalculateFields の例 1 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、Python 式タイプのイミディエイト モードで CalculateFields 関数を使用する方法を示しています。

import arcpy
arcpy.env.workspace = "C:/data/airport.gdb"
arcpy.CalculateFields_management("parcels", "PYTHON3", 
                                 [["xCentroid", "!SHAPE.CENTROID.X!"], 
                                  ["yCentroid", "!SHAPE.CENTROID.Y!"]])
CalculateFields の例 2 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、SQL 文タイプのイミディエイト モードで CalculateFields 関数を使用する方法を示しています。

import arcpy
arcpy.CalculateFields_management("<a feature service url>", "SQL", 
                                 [["ceiling_field", "CEILING(field1)"], 
                                  ["floor_field", "FLOOR(field1)"]])
CalculateFields の例 3 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、Arcade 式タイプのイミディエイト モードで CalculateFields 関数を使用する方法を示しています。

import arcpy
arcpy.env.workspace = "C:/data/airport.gdb"
arcpy.CalculateFields_management(
    "parcels", "ARCADE", 
    [["max_value", "Max($feature.field1, $feature.field2)"], 
     ["min_value", "Min($feature.field1, $feature.field2)"]])