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

サマリー

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

使用法

    注意:

    このツールを実行すると、入力データが変更されます。 詳細と不要なデータの変更を回避するための方法については、「入力データを変更または更新するツール」をご参照ください。

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

    Arcade 式の詳細については、開発者ヘルプの「ArcGIS Arcade」をご参照ください。

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

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

  • このツールの Arcade 式は フィールド演算の Arcade プロファイルを使用します。 Arcade プロファイルは、Arcade 式が評価および理解されるコンテキストです。 Arcade 式を評価すると、戻り値は出力値のフィールド タイプにキャストされます。

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

  • 既存のフィールドの値は上書きされます。 元の値を維持するには、バックアップとして入力テーブルのコピーを作成するか、[ジオプロセシング] ウィンドウの「[元に戻す] の有効化」オプションを使用します。

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

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

  • 注意:

    フィールド タイプ (Date、Date Only、Time Only、Timestamp Offset、Text) 間で時間値を転送するには、代わりに [時間フィールドの変換 (Convert Temporal Field)] ツールを使用します。

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

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

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

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

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

  • Python でジオメトリ情報を計算するには、Geometry オブジェクト プロパティを使用します。 たとえば、!shape.pointCount! の式を使用して、フィーチャ内の頂点の数を計算します。

    注意:

    [ジオメトリ属性の計算 (Calculate Geometry Attributes)] ツールでも、同様の計算を実行できます。

    Python で面積と長さを計算するには、getArea メソッドと getLength メソッドをメソッドおよび単位タイプと組み合わせて使用します。

    • ポリゴンの測地線の面積を平方キロメートル単位で計算するには、次の式を使用します。
      !shape.getArea('GEODESIC', 'SQUAREKILOMETERS')!
    • ポリライン (またはポリゴン) の平面の長さをヤード単位で計算するには、次の式を使用します。
      !shape.getLength('PLANAR', 'YARDS')

    詳細については、ArcPy Polygon オブジェクトと Polyline オブジェクトをご参照ください。

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

  • 結合されたデータを操作する場合は、結合元のテーブル内のフィールドのみ更新できます。 結合先のテーブル内のフィールドは更新できません。 結合されたテーブルで計算を実行する場合は、そのテーブルで直接計算を実行できます。

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

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

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

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

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

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

パラメーター

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

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

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

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

入力値がフィーチャ サービスの場合、デフォルトの式タイプは [SQL] になります。 それ以外の入力タイプでは、デフォルトの式タイプが [Python] になります。

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

Arcade 式の詳細については、開発者ヘルプの「ArcGIS Arcade」をご参照ください。

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

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

  • PythonPython 式の種類が使用されます。
  • ArcadeArcade 式の種類が使用されます。
  • SQLSQL 式の種類が使用されます。
  • VBScriptVBScript 式の種類が使用されます。
String
フィールド

計算されるフィールド、計算される式、およびオプションの WHERE 句とフィールド タイプ。

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

指定された名前のフィールドが入力テーブルに存在しない場合は、フィールドが追加されます。 フィールドのタイプはフィールド タイプの値を使用して設定します。 フィールド タイプが指定されていない場合、フィールドはテキストフィールドとして追加されます。

使用できるフィールド タイプは次のとおりです。

  • [Short (16 ビット整数)] - フィールド タイプは Short になります。 Short フィールドは、-32,768 〜 32,767 の範囲の整数をサポートします。
  • [Long (32 ビット整数)] - フィールド タイプは Long になります。 Long フィールドは、-2,147,483,648 ~ 2,147,483,647 の範囲の整数をサポートします。
  • [Big Integer (64 ビット整数)] - フィールド タイプは Big Integer です。 Big Integer フィールドには、-(253) ~ 253 の整数を指定できます。
  • [Float (32 ビット浮動小数点)] - フィールド タイプは Float になります。 Float フィールドは、-3.4E38 ~ 1.2E38 の範囲の有理数をサポートします。
  • [Double (64 ビット浮動小数点)] - フィールド タイプは Double になります。 Double フィールドは、-2.2E308 ~ 1.8E308 の範囲の有理数をサポートします。
  • [Text] - フィールド タイプはテキストになります。 Text フィールドは文字列をサポートします。
  • [Date] - フィールド タイプは日付になります。 Date フィールドは、日付値と時間値をサポートします。
  • [Date (高精度)] - このフィールド タイプでは高精度の日付になります。 高精度の日付フィールドではミリ秒の日時の値がサポートされます。
  • [Date only] - フィールド タイプは日付のみです。 Date Only フィールドには、日付値を指定できます。時間値は指定できません。
  • [Time only] - フィールド タイプは時間のみです。 Time only フィールドには、時間値を指定できます。日付値は指定できません。
  • [Timestamp offset] - フィールド タイプはタイムスタンプ オフセットです。 Timestamp offset フィールドは、日付、時刻、および UTC 値からのオフセットを指定できます。
  • [Blob (バイナリ データ)] - フィールド タイプは BLOB になります。 BLOB フィールドは、大容量バイナリ オブジェクトとして格納されたデータをサポートします。 BLOB フィールドにアイテムを読み込む、または BLOB フィールドの内容を参照するには、カスタム ローダー、カスタム ビューアー、またはサードパーティ アプリケーションが必要です。
  • [GUID (globally unique identifier)] - フィールド タイプは GUID になります。 GUID フィールドには、中括弧 ({}) で囲まれた 36 文字のレジストリ形式の文字列が格納されます。
  • [ラスター画像] - フィールド タイプはラスターになります。 ラスター フィールドでは、ラスター データをジオデータベース内またはジオデータベースとともに格納できます。 ArcGIS ソフトウェアでサポートされているラスター データセット形式はすべて格納できますが、小さい画像のみを使用することをおすすめします。
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 式の種類が使用されます。
  • VBVBScript 式の種類が使用されます。

入力値がフィーチャ サービスの場合、デフォルトの式タイプは SQL になります。 それ以外の入力タイプでは、デフォルトの式タイプが PYTHON3 になります。

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

Arcade 式の詳細については、開発者ヘルプの「ArcGIS Arcade」をご参照ください。

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

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

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

計算されるフィールド、計算される式、およびオプションの WHERE 句とフィールド タイプ。

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

指定された名前のフィールドが入力テーブルに存在しない場合は、フィールドが追加されます。 フィールドのタイプはフィールド タイプの値を使用して設定します。 フィールド タイプが指定されていない場合、フィールドはテキストフィールドとして追加されます。

使用できるフィールド タイプは次のとおりです。

  • SHORT - フィールド タイプは Short になります。 Short フィールドは、-32,768 〜 32,767 の範囲の整数をサポートします。
  • LONG - フィールド タイプは Long になります。 Long フィールドは、-2,147,483,648 ~ 2,147,483,647 の範囲の整数をサポートします。
  • BIGINTEGER - フィールド タイプは Big Integer です。 Big Integer フィールドには、-(253) ~ 253 の整数を指定できます。
  • FLOAT - フィールド タイプは Float になります。 Float フィールドは、-3.4E38 ~ 1.2E38 の範囲の有理数をサポートします。
  • DOUBLE - フィールド タイプは Double になります。 Double フィールドは、-2.2E308 ~ 1.8E308 の範囲の有理数をサポートします。
  • TEXT - フィールド タイプはテキストになります。 Text フィールドは文字列をサポートします。
  • DATE - フィールド タイプは日付になります。 Date フィールドは、日付値と時間値をサポートします。
  • DATEHIGHPRECISION - このフィールド タイプでは高精度の日付になります。 高精度の日付フィールドではミリ秒の日時の値がサポートされます。
  • DATEONLY - フィールド タイプは日付のみです。 Date Only フィールドには、日付値を指定できます。時間値は指定できません。
  • TIMEONLY - フィールド タイプは時間のみです。 Date Only フィールドには、時間値を指定できます。日付値は指定できません。
  • TIMESTAMPOFFSET - フィールド タイプは Timestamp オフセットです。 Timestamp offset フィールドは、日付、時刻、および UTC 値からのオフセットを指定できます。
  • BLOB - フィールド タイプは BLOB になります。 BLOB フィールドは、大容量バイナリ オブジェクトとして格納されたデータをサポートします。 BLOB フィールドにアイテムを読み込む、または BLOB フィールドの内容を参照するには、カスタム ローダー、カスタム ビューアー、またはサードパーティ アプリケーションが必要です。
  • GUID - フィールド タイプは GUID になります。 GUID フィールドには、中括弧 ({}) で囲まれた 36 文字のレジストリ形式の文字列が格納されます。
  • RASTER - フィールド タイプはラスターになります。 Raster フィールドでは、ラスター データをジオデータベース内またはジオデータベースとともに格納できます。 ArcGIS ソフトウェアでサポートされているラスター データセット形式はすべて格納できますが、小さい画像のみを使用することをおすすめします。
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.management.CalculateFields("parcels", "PYTHON3", 
                                 [["xCentroid", "!SHAPE.CENTROID.X!"], 
                                  ["yCentroid", "!SHAPE.CENTROID.Y!"]])
CalculateFields の例 2 (Python ウィンドウ)

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

import arcpy
arcpy.management.CalculateFields("<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.management.CalculateFields(
    "parcels", "ARCADE", 
    [["max_value", "Max($feature.field1, $feature.field2)"], 
     ["min_value", "Min($feature.field1, $feature.field2)"]])
CalculateFields の例 4 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、CalculateFields 関数を SQL 式とともに使用する方法を示しています。

import arcpy
arcpy.env.workspace = "C:/data/airport.gdb"

# Calculate the Field1 field to -1 if the value is null.
# Calculate the Title field to remove any leading spaces if the first character
# is a space.
arcpy.management.CalculateFields(
    "parcels", "PYTHON3", 
    [['Field1', -1, "Field1 IS NULL"],
     ['Title', '!Address!.lstrip()', "Title LIKE ' %'"]])

ライセンス情報

  • Basic: Yes
  • Standard: Yes
  • Advanced: Yes

関連トピック