アペンド (Append) (データ管理)

サマリー

既存のターゲット データセットに複数の入力データセットを追加し、必要に応じて更新します。 入力データセットとして、フィーチャクラス、テーブル、シェープファイル、ラスター、アノテーション フィーチャクラス、ディメンション フィーチャクラスを使用できます。

複数の入力データセットを 1 つの新しい出力データセットに結合するには [マージ (Merge)] ツールを使用します。

アペンド ツールの図

使用法

  • このツールは、既存のデータセットに新しいフィーチャ、またはその他のデータを複数のデータセットから追加するときに使用します。 このツールは、ポイント フィーチャクラス、ライン フィーチャクラス、ポリゴン フィーチャクラス、テーブル、ラスター、アノテーション フィーチャクラス、ディメンション フィーチャクラスを、同じタイプの既存のデータセットに追加できます。 たとえば、複数のテーブルを既存のテーブルに追加したり、複数のラスターを既存のラスター データセットに追加したりすることはできますが、ライン フィーチャクラスをポイント フィーチャクラスに追加することはできません。

  • [フィールド マップ] パラメーターを使用すると、入力データセットの各フィールドの属性情報をターゲット データセットに転送する方法を制御できます。 [フィールド マップ] パラメーターを使用できるのは、[スキーマ タイプ] パラメーターで [フィールド マップを使用してスキーマの違いをリコンサイル] が指定されている場合に限ります。

  • 出力データセット内のフィールドとそれらのフィールドの内容を管理するには、[フィールド マップ] パラメーターを使用します。

    • 使用できるマージ ルールは、最初、最後、結合、合計、平均、中央値、最頻値、最小、最大、標準偏差、個数です。
    • [結合] マージ ルールを使用している場合、スペース、カンマ、ピリオド、ダッシュなど、区切り文字を指定できます。 スペースを使用する場合は、入力ボックスの先頭にポインターを置き、Space キーを 1 回押してください。
    • 書式設定オプションを使用して、テキスト フィールドの開始位置と終了位置を指定できます。
    • 1 個しかないデータの標準偏差を計算しないでください。ゼロによる除算が発生するからです。したがって、入力ソースがただ 1 つである場合には、標準偏差オプションを使用すべきではありません。

    スクリプトでフィールドをマッピングする方法の詳細

  • このツールでは、フィーチャがターゲット データセットに追加されるときに、フィーチャのライン分割は行われません。 アペンド後にフィーチャが重なった場合でも、入力フィーチャクラスとターゲット フィーチャクラスのすべてのフィーチャがそのまま表示されます。 フィーチャ ジオメトリの結合や分割を実行するには、[ユニオン (Union)] ツールを使用します。

  • [フィールド マッチング タイプ] パラメーターが [入力フィールドはターゲット フィールドと一致する必要があります。] に設定されている場合、フィーチャを追加するには、入力データセットのスキーマがターゲット データセットのスキーマと一致している必要があります。

    [フィールド マッチング タイプ] パラメーターが [フィールド マップを使用してフィールドの違いをリコンサイル] に設定されている場合、スキーマが一致する必要はありません。 ターゲット データセットのフィールドと一致しない入力データセットのフィールドは、[フィールド マップ] パラメーターでマッピングが設定されていない限り、ターゲット データセットにマッピングされません。 入力データセットのフィールドにマッピングされていないターゲット データセットのフィールドには、NULL 値が含まれます。

    [フィールド マッチング タイプ] パラメーターが [スキーマが一致しない場合はスキップして警告する] に設定されている場合、入力データセットのスキーマが、追加されるフィーチャのターゲット データセットのスキーマと一致している必要があります。 ターゲット データセットのフィールドに一致しないフィールドが入力データセットに含まれている場合、その入力データセットは省略されます。

  • 入力データセットのデータは、スキーマがあらかじめ定義されている既存のターゲット データセットに書き込まれるため、ターゲット データセットに対してフィールドの追加や削除を行うために [フィールド マップ] パラメーターを使用することはできません。

  • このツールを使用して、同じ操作で、ターゲット データセットに新しいレコードを挿入したり、既存レコードを更新したりできます (UPSERT データベース操作に該当)。 入力データセットのフィールドがターゲット データセットのフィールドに一致するよう指定するには、[更新用マッチング フィールド] パラメーターを使用します。 フィールドの値が一致するレコードでは、ターゲット レコードのフィールドは、入力レコードの同じ名前のフィールドの値を使用して更新されます。 [ジオメトリの更新] パラメーターがオンの場合、ジオメトリが更新されます。

  • 入力フィーチャクラスとターゲット フィーチャクラスの空間参照が一致しない場合、ターゲット フィーチャクラスで使用されている座標系に入力フィーチャクラスのフィーチャが投影されます。

  • このツールでは、エッジ マッチが実行されないので、フィーチャのジオメトリに対して調整は行われません。

  • マップのレイヤーを [入力データセット] パラメーターの値として使用することができます。 レイヤーで選択が行われている場合は、選択されているレコード (フィーチャまたはテーブル行) だけが使用されます。

  • このツールでは、名前の同じ入力レイヤーを複数使用することはできません。 その代わりに、ツール ダイアログ ボックスの参照ボタンを使用して、個々の [入力データセット] 値の絶対パスを参照します。

  • [サブタイプ] パラメーターを使用するには、ターゲット データセットにサブタイプ フィールドが定義され、サブタイプ コードが割り当てられている必要があります。 [サブタイプ] パラメーターには、ターゲット データセットに追加されるすべての新しいデータにこのサブタイプを割り当てることを示すサブタイプの説明を記述します。

  • このツールを、Web フィーチャ レイヤーのバックエンド データストア、サーバー、データベースに対して直接使用して、パフォーマンスを最適化することができます。 ジオデータベースを参照するフィーチャ サービスの場合、データベース コネクションにより、このツールを使用して、大量のデータ読み込み操作を基礎ジオデータベースに対して直接実行できます。 ArcGIS Enterprise のホスト サービスの場合、フィーチャ レイヤーのアイテム ページまたは ArcGIS REST API の「append 操作」を使用することができます。

    ArcGIS Online のホスト サービスで最適なパフォーマンスを得るために、管理者およびサービス所有者は、supportAppend プロパティが true のときに、ArcGIS REST API でこのツールを使用できます。 管理者以外のユーザーが ArcGIS REST API[アペンド (Append)] ツールを使用する場合は、フィーチャ サービスのアペンド機能が有効になっている必要があります。

パラメーター

ラベル説明データ タイプ
入力データセット

ターゲット データセットに追加するデータを含む入力データセット。 入力データセットには、ポイント フィーチャクラス、ライン フィーチャクラス、ポリゴン フィーチャクラス、テーブル、ラスター、アノテーション フィーチャクラス、ディメンション フィーチャクラスを指定することができます。

テーブルとフィーチャクラスは結合できます。 フィーチャクラスをテーブルに追加すると、属性は割り当てられますが、フィーチャは削除されます。 テーブルをフィーチャクラスに追加すると、入力テーブルの行に NULL ジオメトリが格納されます。

Table View; Raster Layer
ターゲット データセット

入力データセットのデータを追加する既存のデータセット。

Table View; Raster Layer
フィールド マッチング タイプ
(オプション)

データを追加するために、入力データセットのフィールドをターゲット データセットのフィールドと一致させる必要があるかどうかを指定します。

  • 入力フィールドはターゲット フィールドと一致する必要があります。入力データセットのフィールドがターゲット データセットのフィールドに一致する必要があります。 フィールドが一致しない場合はエラーが返されます。
  • フィールド マップを使用してフィールドの違いをリコンサイル入力データセットのフィールドをターゲット データセットのフィールドと一致させる必要はありません。 ターゲット データセットのフィールドと一致しない入力データセットのフィールドは、[フィールド マップ] パラメーターでマッピングが明示的に設定されていない限り、ターゲット データセットにマッピングされません。
  • スキーマが一致しない場合はスキップして警告する入力データセットのフィールドがターゲット データセットのフィールドに一致する必要があります。 ターゲット データセットのフィールドに一致しないフィールドが入力データセットに含まれている場合は、その入力データセットは省略され、警告メッセージが表示されます。
String
フィールド マップ
(オプション)

入力データセットの属性フィールドのターゲット データセットへの転送方法またはマッピング方法を制御します。

このパラメーターを使用できるのは、[フィールド マッチング タイプ] パラメーターが [フィールド マップを使用してフィールドの違いをリコンサイル] に設定されている場合に限ります。

入力データセットは、フィールドがあらかじめ定義されている既存のターゲット データセットに追加されるため、フィールド マップ内のフィールドのタイプを追加、削除、変更することはできません。 出力フィールドごとにマージ ルールを設定できます。

マージ ルールによって、複数の入力フィールドの値を単一の出力値にマージまたは結合する方法を指定できます。 出力フィールドの値を指定する方法を決定するために使用できるマージ ルールは次のとおりです。

  • 最初 - 入力フィールドの最初の値を使用します。
  • 最後 - 入力フィールドの最後の値を使用します。
  • 結合 - 入力フィールドの値を結合します。
  • 合計 - 入力フィールドの値の合計を計算します。
  • 平均 - 入力フィールドの値の平均を計算します。
  • 中央値 - 入力フィールドの値の中央値を計算します。
  • 最頻値 - 最も頻度が高い値を使用します。
  • 最小 - すべての入力フィールドの値のうちの最小値を使用します。
  • 最大 - すべての入力フィールドの値のうちの最大値を使用します。
  • 標準偏差 - すべての入力フィールドの値に、標準偏差の分類法を使用します。
  • 個数 - 計算に含まれるレコード数を検出します。

Field Mappings
サブタイプ
(オプション)

ターゲット データセットに追加されるすべての新しいデータに割り当てるサブタイプの説明。

String
(オプション)

入力データセットのレコードのサブセットを選択するために使用する SQL 式。 複数の入力データセットを指定した場合、これらのデータセットはこの式を使用して評価されます。 入力データセットのレコードが式と一致しない場合、そのデータセットのレコードはターゲットに追加されません。

SQL 構文の詳細については、「ArcGIS で使用されるクエリ式への SQL リファレンス」をご参照ください。

SQL Expression
更新用マッチング フィールド
(オプション)

ターゲット データセットとの照合に使用される入力データセットのフィールド。 これらのフィールドの値が一致する場合、入力データセットのレコードはターゲット データセットの対応レコードを更新します。

Value Table
ジオメトリの更新
(オプション)

[更新用マッチング フィールド] パラメーターのフィールド値が一致する場合、入力データセットのジオメトリを使用してターゲット データセットのジオメトリを更新するかどうかを指定します。

  • オン - [更新用マッチング フィールド] パラメーターのフィールド値が一致する場合、ターゲット データセットのジオメトリを更新します。
  • オフ - ジオメトリは更新されません。 これがデフォルトです。
Boolean

派生した出力

ラベル説明データ タイプ
更新されたターゲット データセット

更新されたターゲット データセット。

Table View; Raster Layer

arcpy.management.Append(inputs, target, {schema_type}, {field_mapping}, {subtype}, {expression}, {match_fields}, {update_geometry})
名前説明データ タイプ
inputs
[inputs,...]

ターゲット データセットに追加するデータを含む入力データセット。 入力データセットには、ポイント フィーチャクラス、ライン フィーチャクラス、ポリゴン フィーチャクラス、テーブル、ラスター、アノテーション フィーチャクラス、ディメンション フィーチャクラスを指定することができます。

テーブルとフィーチャクラスは結合できます。 フィーチャクラスをテーブルに追加すると、属性は割り当てられますが、フィーチャは削除されます。 テーブルをフィーチャクラスに追加すると、入力テーブルの行に NULL ジオメトリが格納されます。

Table View; Raster Layer
target

入力データセットのデータを追加する既存のデータセット。

Table View; Raster Layer
schema_type
(オプション)

データを追加するために、入力データセットのフィールドをターゲット データセットのフィールドと一致させる必要があるかどうかを指定します。

  • TEST入力データセットのフィールドがターゲット データセットのフィールドに一致する必要があります。 フィールドが一致しない場合はエラーが返されます。
  • NO_TEST入力データセットのフィールドをターゲット データセットのフィールドと一致させる必要はありません。 ターゲット データセットのフィールドと一致しない入力データセットのフィールドは、[フィールド マップ] パラメーターでマッピングが明示的に設定されていない限り、ターゲット データセットにマッピングされません。
  • TEST_AND_SKIP入力データセットのフィールドがターゲット データセットのフィールドに一致する必要があります。 ターゲット データセットのフィールドに一致しないフィールドが入力データセットに含まれている場合は、その入力データセットは省略され、警告メッセージが表示されます。
String
field_mapping
(オプション)

入力データセットの属性フィールドのターゲット データセットへの転送方法またはマッピング方法を制御します。

このパラメーターを使用できるのは、schema_type パラメーターが NO_TEST に設定されている場合に限ります。

入力データセットは、フィールドがあらかじめ定義されている既存のターゲット データセットに追加されるため、フィールド マップ内のフィールドのタイプを追加、削除、変更することはできません。 出力フィールドごとにマージ ルールを設定できます。

マージ ルールによって、複数の入力フィールドの値を単一の出力値にマージまたは結合する方法を指定できます。 出力フィールドの値を指定する方法を決定するために使用できるマージ ルールは次のとおりです。

  • 最初 - 入力フィールドの最初の値を使用します。
  • 最後 - 入力フィールドの最後の値を使用します。
  • 結合 - 入力フィールドの値を結合します。
  • 合計 - 入力フィールドの値の合計を計算します。
  • 平均 - 入力フィールドの値の平均を計算します。
  • 中央値 - 入力フィールドの値の中央値を計算します。
  • 最頻値 - 最も頻度が高い値を使用します。
  • 最小 - すべての入力フィールドの値のうちの最小値を使用します。
  • 最大 - すべての入力フィールドの値のうちの最大値を使用します。
  • 標準偏差 - すべての入力フィールドの値に、標準偏差の分類法を使用します。
  • 個数 - 計算に含まれるレコード数を検出します。

このパラメーターを定義するには、PythonFieldMappings クラスを使用します。

Field Mappings
subtype
(オプション)

ターゲット データセットに追加されるすべての新しいデータに割り当てるサブタイプの説明。

String
expression
(オプション)

入力データセットのレコードのサブセットを選択するために使用する SQL 式。 複数の入力データセットを指定した場合、これらのデータセットはこの式を使用して評価されます。 入力データセットのレコードが式と一致しない場合、そのデータセットのレコードはターゲットに追加されません。

SQL 構文の詳細については、「ArcGIS で使用されるクエリ式への SQL リファレンス」をご参照ください。

SQL Expression
match_fields
[match_fields,...]
(オプション)

ターゲット データセットとの照合に使用される入力データセットのフィールド。 これらのフィールドの値が一致する場合、入力データセットのレコードはターゲット データセットの対応レコードを更新します。

Value Table
update_geometry
(オプション)

match_fields パラメーターのフィールド値が一致する場合、入力データセットのジオメトリを使用してターゲット データセットのジオメトリを更新するかどうかを指定します。

  • UPDATE_GEOMETRYmatch_fields パラメーターのフィールド値が一致する場合、ターゲット データセットのジオメトリを更新します。
  • NOT_UPDATE_GEOMETRYジオメトリは更新されません。 これがデフォルトです。
Boolean

派生した出力

名前説明データ タイプ
output

更新されたターゲット データセット。

Table View; Raster Layer

コードのサンプル

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

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

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.management.Append(["north.shp", "south.shp", "east.shp", "west.shp"], 
                        "wholecity.shp", "TEST")
Append の例 2 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、イミディエイト モードで match_fields パラメーターおよび update_geometry パラメーターを指定して Append 関数を使用する方法を示しています。

import arcpy
arcpy.env.workspace = "C:/data/zoning.gdb"
arcpy.management.Append("Zoning_update_2040", "Zoning_2020", "TEST", 
                        match_fields=[["ZONEID", "ZONEID"]], update_geometry="UPDATE_GEOMETRY")
Append の例 3 (スタンドアロン スクリプト)

次のスクリプトは、Append 関数の使用方法を示しています。

# Name: Append.py
# Description: Use the Append tool to combine several polygon feature classes

# Import system modules 
import arcpy
import os

# Set environment settings
arcpy.env.workspace = "C:/data/towns.gdb"

# Set local variables
outLocation = "C:/data/output.gdb"
outName = "MA_towns.shp"
schemaType = "NO_TEST"
fieldMappings = ""
subtype = ""

# Process: Append to an existing "amherst" polygon feature class
target = os.path.join(outLocation, "amherst")

# All polygon FCs in the workspace are MA town FCs, you want to append these
# to the target FC. The list will resemble ["amherst", "hadley", "pelham",
# "coldspring"]

fcList = arcpy.ListFeatureClasses("", "POLYGON")

# Create FieldMappings object to manage merge output fields
fieldMappings = arcpy.FieldMappings()

# Add the target table to the field mappings class to set the schema
fieldMappings.addTable(target)

# Add input fields for the town name to TOWNNAME field that matches the 
# target dataset since each input dataset has a different field name for 
# this info
fldMap = arcpy.FieldMap()
fldMap.addInputField("amherst","TOWNNAME")
fldMap.addInputField("hadley","NAME")
fldMap.addInputField("pelham","TOWN_NAME")
fldMap.addInputField("coldspring","TOWN")

# Set name of new output field "TOWNNAME"
townName = fldMap.outputField
townName.name, townName.aliasName, townName.type = "TOWNNAME", "TOWNNAME", "TEXT"
fldMap.outputField = townName

# Add output field to field mappings object
fieldMappings.addFieldMap(fldMap)

# Do the same thing for the POPULATION field
fldMap = arcpy.FieldMap()
fldMap.addInputField("amherst","POPULATION")
fldMap.addInputField("hadley","POP")
fldMap.addInputField("pelham","POP_2010")
fldMap.addInputField("coldspring","POP")

# Set name of new output field "POPULATION"
pop = fldMap.outputField
pop.name, pop.aliasName, pop.type = "POPULATION", "POPULATION", "LONG"
fldMap.outputField = pop

# Add output field to field mappings object
fieldMappings.addFieldMap(fldMap)

# Process: Append the feature classes to the target feature class
arcpy.management.Append(fcList, os.path.join(outLocation, "amherst"), schemaType, 
                        fieldMappings, subtype)

環境

特殊なケース

Global ID を維持

[アペンド (Append)] ツールの場合、この環境はエンタープライズ ジオデータベースのデータにのみ適用されるため、一意のインデックス付きの Global ID フィールドを含むデータしか処理されません。 Global ID フィールドに一意のインデックスが付いていない場合、このツールは正常に実行されない可能性があります。 Global ID フィールドに一意のインデックスを追加するには、[属性インデックスの追加 (Add Attribute Index)] ツールを使用します。