マージ (Merge) (データ管理)

サマリー

複数の入力データセットを 1 つの新しい出力データセットに結合します。 このツールで結合できるのはポイント フィーチャクラス、ライン フィーチャクラス、ポリゴン フィーチャクラス、またはテーブルです。

[アペンド (Append)] ツールを使用すると、入力データセットに既存のデータセットを結合できます。

マージ ツールの図

使用法

  • このツールを使用すると、複数のソースからのデータセットを、1 つの新しい出力データセットに結合できます。 すべての入力フィーチャクラスが同じジオメトリ タイプでなければなりません。 たとえば、ポイント フィーチャクラス同士であればマージできますが、ライン フィーチャクラスをポリゴン フィーチャクラスとマージすることはできません。

    テーブルとフィーチャクラスを結合して 1 つの出力データセットにすることは可能です。 出力タイプは最初の入力によって決まります。 最初の入力がフィーチャクラスであれば、出力はフィーチャクラスになります。 最初の入力がテーブルであれば、出力はテーブルになります。 テーブルをフィーチャクラスにマージすると、入力テーブルの行に NULL ジオメトリが格納されます。

  • 入力データセットのフィールドを出力データセットに転送する方法を指定するには、[フィールドの一致モード] パラメーターを使用します。 デフォルトでは、ツールは同じ名前のフィールドをまとめてマッピングし、入力において一意のフィールドは出力に維持します。 [フィールド マップを使用してフィールドの違いをリコンサイル] オプションが指定されている場合は、[フィールド マップ] パラメーターを使用します。 すべての入力データセットのスキーマが同じである場合、パフォーマンスを高めるために [最初のデータセットのスキーマのみを使用] オプションを使用します。

  • フィールド マップ パラメーターを使用すると、出力データセット内のフィールドとそのコンテンツを管理できます。

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

  • このツールは、入力データセットのジオメトリを分割も変更もしません。 入力データセット内のすべてのフィーチャは、フィーチャ同士が重なり合っても、出力データセット内では元の状態を保持しています。 フィーチャ ジオメトリの結合や分割を実行するには、[ユニオン (Union)] ツールを使用します。

  • フィーチャクラスをマージした場合、出力座標系環境が設定されていない場合を除き、出力データセットは [入力データセット] パラメーターで指定された最初のフィーチャクラスの座標系に設定されます。

  • このツールでは、アノテーション フィーチャクラスはサポート対象外です。 [アノテーション フィーチャクラスのアペンド (Append Annotation Feature Classes)] ツールを使用して、アノテーション フィーチャクラスを結合します。

  • このツールはラスター データセットをサポートしていません。 複数のラスターを新しい出力ラスターに結合するには、[新規ラスターにモザイク (Mosaic To New Raster)] ツールを使用します。

パラメーター

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

新しい出力データセットにマージする入力データセット。 入力データセットとしてポイント フィーチャクラス、ライン フィーチャクラス、ポリゴン フィーチャクラス、またはテーブルのいずれかを指定できます。 入力フィーチャクラスはすべて同じジオメトリ タイプでなければなりません。

テーブルとフィーチャクラスを結合して 1 つの出力データセットにすることは可能です。 出力タイプは最初の入力によって決まります。 最初の入力がフィーチャクラスであれば、出力はフィーチャクラスになります。 最初の入力がテーブルであれば、出力はテーブルになります。 テーブルをフィーチャクラスにマージすると、入力テーブルの行に NULL ジオメトリが格納されます。

Table View
出力データセット

結合した入力データセットを格納する、出力データセット。

Feature Class;Table
フィールド マップ
(オプション)

フィールド マップを使用すると、スキーマの違いをリコンサイルし、複数のデータセット間で属性フィールドを照合することができます。 デフォルトでは、入力データセット内のすべてのフィールドが出力に含まれます。

フィールド マップを使用すると、フィールドの追加、フィールドの削除、フィールド名の変更、フィールドの順序変更、他のフィールド プロパティの変更を実行できます。

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

Field Mappings
出力へのソース情報の追加
(オプション)

ソース情報を新しい MERGE_SRC テキスト フィールドの出力データセットに追加するかどうかを指定します。 MERGE_SRC フィールドの値は出力内の各レコードのソースである入力データセットのパスまたはレイヤー名を示します。

  • オフ - ソース情報は MERGE_SRC フィールドによって出力データセットに追加されません。 これがデフォルトです。
  • オン - MERGE_SRC フィールドによってソース情報が出力データセットに追加されます。
Boolean
フィールドの一致モード
(オプション)

入力データセットのフィールドを出力データセットに転送する方法を指定します。

  • すべての入力から統合されたフィールドを自動的に生成同じ名前のフィールドは、出力で自動的にまとめてマッピングされます。 入力において一意のフィールドは、出力で維持されます。 これがデフォルトです。
  • フィールド マップを使用してフィールドの違いをリコンサイル出力フィールドは [フィールド マップ] のパラメーター値で決定されます。
  • 最初のデータセットのスキーマのみを使用最初の入力データセットのスキーマが使用されます。 このモードは、すべての入力データセットのスキーマが同じである場合に適しています。
String

arcpy.management.Merge(inputs, output, {field_mappings}, {add_source}, {field_match_mode})
名前説明データ タイプ
inputs
[inputs,...]

新しい出力データセットにマージする入力データセット。 入力データセットとしてポイント フィーチャクラス、ライン フィーチャクラス、ポリゴン フィーチャクラス、またはテーブルのいずれかを指定できます。 入力フィーチャクラスはすべて同じジオメトリ タイプでなければなりません。

テーブルとフィーチャクラスを結合して 1 つの出力データセットにすることは可能です。 出力タイプは最初の入力によって決まります。 最初の入力がフィーチャクラスであれば、出力はフィーチャクラスになります。 最初の入力がテーブルであれば、出力はテーブルになります。 テーブルをフィーチャクラスにマージすると、入力テーブルの行に NULL ジオメトリが格納されます。

Table View
output

結合した入力データセットを格納する、出力データセット。

Feature Class;Table
field_mappings
(オプション)

フィールド マップを使用すると、スキーマの違いをリコンサイルし、複数のデータセット間で属性フィールドを照合することができます。 デフォルトでは、入力データセット内のすべてのフィールドが出力に含まれます。

フィールド マップを使用すると、フィールドの追加、フィールドの削除、フィールド名の変更、フィールドの順序変更、他のフィールド プロパティの変更を実行できます。

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

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

Field Mappings
add_source
(オプション)

ソース情報を新しい MERGE_SRC テキスト フィールドの出力データセットに追加するかどうかを指定します。 MERGE_SRC フィールドの値は出力内の各レコードのソースである入力データセットのパスまたはレイヤー名を示します。

  • NO_SOURCE_INFOソース情報は MERGE_SRC フィールドによって出力データセットに追加されません。 これがデフォルトです。
  • ADD_SOURCE_INFOMERGE_SRC フィールドによってソース情報が出力データセットに追加されます。
Boolean
field_match_mode
(オプション)

入力データセットのフィールドを出力データセットに転送する方法を指定します。

  • AUTOMATIC同じ名前のフィールドは、出力で自動的にまとめてマッピングされます。 入力において一意のフィールドは、出力で維持されます。 これがデフォルトです。
  • MANUAL_EDIT出力フィールドは field_mappings のパラメーター値で決定されます。
  • USE_FIRST_SCHEMA最初の入力データセットのスキーマが使用されます。 このモードは、すべての入力データセットのスキーマが同じである場合に適しています。
String

コードのサンプル

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

次の Python ウィンドウ スクリプトは、Merge 関数の使用方法を示しています。

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.management.Merge(["majorrds.shp", "Habitat_Analysis.gdb/futrds"], 
                       "C:/output/Output.gdb/allroads", "", "ADD_SOURCE_INFO")
Merge の例 2 (スタンドアロン スクリプト)

Merge 関数を使用して、フィーチャを 2 つのストリート フィーチャクラスから 1 つのデータセットに移動します。

# Name: Merge.py
# Description: Use Merge to move features from two street
#              feature classes into a single dataset with field mapping

# import system modules 
import arcpy

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

# Street feature classes to be merged
oldStreets = "majorrds.shp"
newStreets = "Habitat_Analysis.gdb/futrds"
addSourceInfo = "ADD_SOURCE_INFO"

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

# Add all fields from both oldStreets and newStreets
fieldMappings.addTable(oldStreets)
fieldMappings.addTable(newStreets)

# Add input fields "STREET_NAM" & "NM" into new output field
fldMap_streetName = arcpy.FieldMap()
fldMap_streetName.addInputField(oldStreets, "STREET_NAM")
fldMap_streetName.addInputField(newStreets, "NM")

# Set name of new output field "Street_Name"
streetName = fldMap_streetName.outputField
streetName.name = "Street_Name"
fldMap_streetName.outputField = streetName

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

# Add input fields "CLASS" & "IFC" into new output field
fldMap_streetClass = arcpy.FieldMap()
fldMap_streetClass.addInputField(oldStreets, "CLASS")
fldMap_streetClass.addInputField(newStreets, "IFC")

# Set name of new output field "Street_Class"
streetClass = fldMap_streetClass.outputField
streetClass.name = "Street_Class"
fldMap_streetClass.outputField = streetClass  

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

# Remove all output fields from the field mappings, except fields 
# "Street_Class", "Street_Name", & "Distance"
for field in fieldMappings.fields:
    if field.name not in ["Street_Class", "Street_Name", "Distance"]:
        fieldMappings.removeFieldMap(fieldMappings.findFieldMapIndex(field.name))

# Since both oldStreets and newStreets have field "Distance", no field mapping 
# is required

# Use Merge tool to move features into single dataset
uptodateStreets = "C:/output/Output.gdb/allroads"
arcpy.management.Merge([oldStreets, newStreets], uptodateStreets, fieldMappings, 
                       addSourceInfo)

ライセンス情報

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

関連トピック