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

サマリー

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

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

アペンド ツールの図

使用法

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

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

  • フィールド マップ パラメーターを使用すると、入力データセット内のフィールドとターゲット データセット内のフィールドをマッピングまたはマッチングできます。

    • アクションを使用して、入力データセット内の 1 つまたは複数のフィールドの値をターゲット データセット内の 1 つのフィールドにマッピングする方法を決定します。
    • 使用可能なアクションは [最初][最後][連結][合計][平均][中央][最頻][最小][最大][標準偏差]、および [個数] です。
    • [連結] アクションを使用する場合は、カンマなどの文字を区切り文字として指定できます。 [区切り文字] テキスト ボックスの先頭をクリックして、区切り文字を追加します。
    • [標準偏差] は、単一の入力値に有効なオプションではありません。
    • テキスト ソース フィールドにある [テキストのスライス] ボタンを使用して、入力値のどの文字をターゲット フィールドに抽出するかを選択します。 [テキストのスライス] ボタンにアクセスするには、入力フィールド リスト内のテキスト フィールドにポインターを合わせて、最初の文字と最後の文字の位置を指定します。
    • フィールドは、Python スクリプトを使用してマッピングすることもできます。

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

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

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

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

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

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

  • 入力データセットとターゲット データセットの空間参照は異なる可能性があります。 この場合、ツールは、入力フィーチャをターゲットの座標系に投影します。 最適な結果のためには、地理座標系変換環境を使用する適切な地理座標系変換を指定します。 ターゲット データセットがマップ レイヤーの場合、ツールはデフォルトの変換を適用します。 Python には、デフォルトの変換はありません。

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

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

  • このツールでは、名前の同じ入力レイヤーを複数使用することはできません。 代わりに、[ジオプロセシング] ウィンドウの参照ボタンを使用して、[入力データセット] の各値の絶対パスを参照します。

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

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

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

パラメーター

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

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

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

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

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

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

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

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

フィールド マップ パラメーターでは、入力データセットからターゲット データセットへのフィールドの転送またはマッピングを制御します。 このパラメーターは、[フィールド マッチング タイプ] パラメーターが [フィールド マップを使用してフィールドの違いをリコンサイル] に設定されている場合にのみ使用できます。

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

フィールド マップを使用して、複数の入力フィールドの値を 1 つの出力フィールドに結合することができます。

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 に設定されている場合にのみ使用できます。

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

フィールド マップを使用して、複数の入力フィールドの値を 1 つの出力フィールドに結合することができます。

Python では、FieldMappings クラスを使用して、このパラメーターを定義します。

Field Mappings
subtype
(オプション)

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

String
expression
(オプション)

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

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

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

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

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 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)] ツールを使用します。