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

サマリー

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

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

アペンドツールの図

使用法

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

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

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

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

  • Pythonfield_mapping パラメーターに対して FieldMappings オブジェクトを使用する場合、まずターゲット データセットからフィールドを追加します。 入力フィールドは、ターゲット フィールドのスキーマにマッピングされます。 最初に入力フィールドを追加すると、フィールド マップはリセットされるか、予期しない動作をします。

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

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

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

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

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

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

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

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

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

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

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

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

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

  • [ドメインを設定] パラメーターを使用し、ターゲット データセットのフィールドに属性ドメインを設定します。 このパラメーターをオンにすると、ツールはターゲット データセットで定義されたドメイン値を優先します。 これらのドメイン値に対応しない入力フィールドのデータはアペンドされません。

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

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

  • [フィーチャ サービスのパフォーマンスの最適化] パラメーターは、ターゲット データセットがフィーチャ サービスのアペンド機能をサポートしている場合にのみサポートされます。 このパラメーターがオンの場合、次のことが行われます。

    • 最適なパフォーマンスを実現するため、このツールは ArcGIS REST API を使用します。
    • [入力データセット] パラメーターは 1 つのデータセットに制限されます。
    • [式] パラメーターと [ドメインを設定] パラメーターはサポートされません。
    • [更新用マッチング フィールド] パラメーターは、1 組のマッチング フィールドに制限されます。
    • ターゲット データセットのジオメトリーは、一致する行の入力データセットのジオメトリで更新されます。
    • すべての更新操作と挿入操作は、出力の [アペンドされた行数] 値にカウントされます。

    ツールが既存の編集セッションで実行されるか、[[元に戻す] の有効化] 切り替えボタンがオンになっている場合、[フィーチャ サービスのパフォーマンスの最適化] パラメーターは無視されます。

    [フィーチャ サービスのパフォーマンスの最適化] パラメーターがオンになっており、[更新用マッチング フィールド] パラメーター値に一致する Global ID フィールドがある場合、Global ID 値は保持されます。 Global ID フィールドが含まれない場合、すべての入力行が挿入され、新しい Global ID 値が割り当てられます。

パラメーター

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

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

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

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

入力データセットのデータをアペンドする既存のデータセット。

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

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

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

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

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

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

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

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

String
(オプション)

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

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

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

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

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

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

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

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

  • オン - フィールド ドメイン ルールが適用されます。 フィールドを更新できない場合、フィールド値は変更されず、ツールのメッセージには警告メッセージが表示されます。
  • オフ - フィールド ドメイン ルールは適用されません。 これがデフォルトです。
Boolean
フィーチャ サービスのパフォーマンスの最適化
(オプション)

ターゲット データセットが ArcGIS Online フィーチャ サービスか ArcGIS Enterprise フィーチャ サービスである場合、パフォーマンスを最適化するかどうかを指定します。 このパラメーターは、ターゲット データセットが最適化をサポートしている場合にのみ有効です。

  • オン - ターゲット データセットが最適化をサポートするフィーチャ サービスである場合、ツールのパフォーマンスが最適化されます。 ターゲット データセットが最適化をサポートする場合、パラメーターはデフォルトでオンになります。 このパラメーターがオンの場合、[式] パラメーターと [ドメインを設定] パラメーターはサポートされません。 また、[更新用マッチング フィールド] パラメーターでは、1 つの入力データセットと、1 組のフィールドに制限されます。
  • オフ - ターゲットがフィーチャ サービスである場合、ツールのパフォーマンスは最適化されません。
Boolean

派生した出力

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

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

Table View; Raster Layer
アペンドされた行数

ターゲット データセットにアペンドされた行の数。

[フィーチャ サービスのパフォーマンスの最適化] パラメーターがオンになっており、[更新用マッチング フィールド] パラメーター値が指定されている場合、すべての更新操作と挿入操作がカウントされます。

ターゲット データセットにアペンドされた行の数。

feature_service_mode パラメーター値が USE_FEATURE_SERVICE_MODE で、match_fields パラメーター値が指定されている場合、すべての更新操作と挿入操作がカウントされます。

Long
更新された行数

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

[フィーチャ サービスのパフォーマンスの最適化] パラメーターがオンの場合、ターゲット フィーチャ サービス データセットに対して、更新された行のカウントは提供されません。

Long

arcpy.management.Append(inputs, target, {schema_type}, {field_mapping}, {subtype}, {expression}, {match_fields}, {update_geometry}, {enforce_domains}, {feature_service_mode})
名前説明データ タイプ
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
enforce_domains
(オプション)

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

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

ターゲット データセットが ArcGIS Online フィーチャ サービスか ArcGIS Enterprise フィーチャ サービスである場合、パフォーマンスを最適化するかどうかを指定します。 このパラメーターは、ターゲット データセットが最適化をサポートしている場合にのみ有効です。

  • USE_FEATURE_SERVICE_MODEターゲット データセットが最適化をサポートするフィーチャ サービスである場合、ツールのパフォーマンスが最適化されます。 ターゲット データセットが最適化をサポートする場合、パラメーターはこのオプションをデフォルトで使用します。 このオプションを使用する場合、expression パラメーターと enforce_domains パラメーターはサポートされません。 また、match_fields パラメーターでは、1 つの入力データセットと、1 組のフィールドに制限されます。
  • NO_FEATURE_SERVICE_MODEターゲットがフィーチャ サービスである場合、ツールのパフォーマンスは最適化されません。
Boolean

派生した出力

名前説明データ タイプ
output

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

Table View; Raster Layer
appended_row_countLong
updated_row_count

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

feature_service_mode パラメーター値が USE_FEATURE_SERVICE_MODE の場合、ターゲット フィーチャ サービス データセットに対して、更新された行のカウントは提供されません。

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 ウィンドウ スクリプトは、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)] ツールを使用します。

この環境はターゲット フィーチャ サービスでは無視されます。 最適化をサポートするフィーチャ サービスの Global ID を保持するには、[フィーチャ サービスのパフォーマンスの最適化] パラメーターをオンにし、[更新用マッチング フィールド] パラメーターの一致フィールドとして GlobalID を指定します。

ライセンス情報

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

関連トピック