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

サマリー

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

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

アペンド ツールの図

使用法

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

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

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

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

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

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

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

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

  • 追加された行の数はツール メッセージに表示され、[追加された行数] パラメーターによって返されます。

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

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

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

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

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

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

  • 入力データセットとターゲット データセットの名前が同じである場合、ツールのパフォーマンスが低下します。

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

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

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

パラメーター

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

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

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

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

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

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

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

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

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

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

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

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

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

String
(オプション)

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

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

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

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

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

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

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

派生した出力

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

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

Table View; Raster Layer
追加された行数

ターゲット データセットに追加された行の数。

Long
更新された行数

ターゲット データセットで更新された行の数。

Long

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 つ以上の入力フィールドの値を 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
appended_row_count

ターゲット データセットに追加された行の数。

Long
updated_row_count

ターゲット データセットで更新された行の数。

Long

コードのサンプル

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 ウィンドウ スクリプトは、Append および match_fields パラメーターを指定した update_geometry 関数をイミディエイト モードで使用する方法を示しています。

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

関連トピック