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

概要

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

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

マージ (Merge) ツール

使用法

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

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

  • 出力データセット内のすべてのフィールドおよびそのフィールドの内容は、[フィールド マップ] を使用して制御できます。

    • フィールドの順序を変更するには、フィールド名を選択して、目的の位置にドラッグします。
    • 出力フィールドのデフォルトのデータ タイプは、最初に検出した (その名前の) 入力フィールドのデータ タイプと同じになります。データ タイプをいつでも手動で他の任意の有効なデータ タイプに変更できます。
    • 使用できるマージ ルールは、最初、最後、結合、合計値、平均値、中央値、最頻値、最小値、最大値、標準偏差、個数です。
    • [結合] マージ ルールを使用している場合、スペース、カンマ、ピリオド、ダッシュなど、区切り文字を指定できます。スペースを使用する場合は、入力ボックスの先頭にポインターを置き、Space キーを 1 回押してください。
    • 形式オプションを使用すると、テキスト フィールドの開始位置および終了位置を指定できます。
    • 1 個しかないデータの標準偏差を計算しないでください。ゼロによる除算が発生するからです。したがって、入力ソースがただ 1 つである場合には、[標準偏差] オプションを使用すべきではありません。

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

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

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

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

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

構文

arcpy.management.Merge(inputs, output, {field_mappings}, {add_source})
パラメーター説明データ タイプ
inputs
[inputs,...]

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

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

Table View
output

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

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

出力でどの属性フィールドを使用するかを制御します。デフォルトでは、入力のすべてのフィールドが含まれます。

フィールドの追加、削除、名前変更、並べ替えを行うことができ、フィールドのプロパティを変更することもできます。

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

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

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

Field Mappings
add_source
(オプション)

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

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

コードのサンプル

Merge (マージ) の例 1 (Python ウィンドウ)

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

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.Merge_management(["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.Merge_management([oldStreets, newStreets], uptodateStreets, fieldMappings, 
                       addSourceInfo)

ライセンス情報

  • Basic: はい
  • Standard: はい
  • Advanced: はい

関連トピック