属性の割り当て (Transfer Attributes) (編集)

サマリー

ソース ライン フィーチャが空間的にターゲット ライン フィーチャと一致している場所を検索し、指定された属性をソース フィーチャから一致するターゲット フィーチャに割り当てます。

属性の割り当ては、通常、あるデータセット内のフィーチャの属性を別のデータセット内の対応するフィーチャにコピーするために使用されます。 たとえば、道路フィーチャの名前を、デジタイズして保持しているデータセットから、新たに収集した精度の高い新しいデータセット内のフィーチャに割り当てる場合に使用されます。 これら 2 つのデータセットは、通常、ソース フィーチャおよびターゲット フィーチャと呼ばれます。 このツールは、指定された検索距離の範囲内で対応するソース ライン フィーチャとターゲット ライン フィーチャを検索し、指定された属性をソース ラインからターゲット ラインに割り当てます。

属性の割り当てツールの図

使用法

    注意:

    このツールを実行すると、入力データが変更されます。 詳細と不要なデータの変更を回避するための方法については、「入力データを変更または更新するツール」をご参照ください。

    注意:

    すべての入力は、同じ座標系に存在する必要があります。

  • 入力データのすべての領域の範囲が、処理範囲として使用されます。 使用されるソース フィーチャとターゲット フィーチャの数は、処理メッセージにレポートされます。

  • [割り当てフィールド] パラメーターで、1 つ以上のフィールドを指定する必要があります。 割り当てフィールドの名前がターゲット フィーチャ テーブルのフィールドと同じである場合、割り当てフィールドの名前が他と重複することのないように、名前の末尾に _1 (あるいは _2、_3 など) が付加されます。

    複数のソース フィーチャが 1 つ以上のターゲット フィーチャと一致した場合、ソース フィーチャのうちの 1 つのフィールド値のみがターゲット フィーチャに割り当てられます。 ソース フィールドに値がない場合、属性の割り当ては行われません。

  • [検索距離] パラメーターは、一致候補の検索で使用されます。 対応するフィーチャ間のずれの大部分を捉えることができるほど十分な大きさの距離を使用しますが、候補が多くなって不必要な処理が発生し、不正な一致が得られる場合があるため、この値を大きくし過ぎないでください。

  • [出力照合テーブル] パラメーターの指定は任意です。 この照合テーブルには、ソース FID とターゲット FID、一致グループ、一致関係、空間と属性の一致条件から得られた一致の信頼度など、フィーチャの完全な一致情報が含まれています。 この情報は、一致状況の理解に役立ち、照合後の検査、編集、および解析を助けます。 詳細は、「フィーチャの照合と照合テーブルについて」をご参照ください。

  • [割り当てルール フィールド] パラメーターを使用し、複数のソース フィーチャが 1 つ以上のターゲット フィーチャと一致した場合に、m:n の一致における属性の割り当て方法を制御するルールを設定します。 ルールが設定されていない場合、一致した最も長いソース フィーチャから属性が割り当てられます。 ただし、割り当てが適切に行われるように、属性ベースのルールを使用できます。それぞれのルールは、フィールド名と値で定義されます。

    次のフィールド タイプとルール値がサポートされています。

    フィールド タイプルール値

    Text

    ソース フィーチャ内に存在する可能性がある文字列値。

    Integer

    ソース フィーチャ内に存在する可能性がある整数、または最大値と最小値を表す [最大][最小]

    Date

    最も新しい日付と古い日付を表す [最大][最小]

    フィールドとルール値の組は、必要な数だけ指定できます。 ルールは、リストされた順序で適用されます。

    m:n の一致が見つかった場合、ツールは指定されたフィールドとルール値を確認して、次の方法で属性の割り当て元を決定します。

    • m ソース フィーチャの 1 つだけがルール リストの最初のフィールドにあるルール値を持つ場合、そのソース フィーチャが割り当てに使用されます。
    • m ソース フィーチャの複数がルール値を持つ場合や、ルール値を持つソース フィーチャがない場合は、このルールで割り当て元は決まりません。 他のルールが指定されていない場合、最も長いソース フィーチャが割り当てに使用されます。 他のルールが指定されている場合、リスト内の次のルールが確認され、割り当て元が決定されます。
    • すべてのルールが評価されるまで、このプロセスが続けられます。 割り当てに使用するソース フィーチャを決定できない場合、最も長いソース フィーチャが使用されます。

    次の例では、このプロセスの仕組みについて説明します。 ソースとターゲットは 3:1 の一致で、ROAD_NAME フィールドをソースからターゲットに割り当てる必要があります。 デフォルトでは、ソース フィーチャ 3 が 3 つのソース フィーチャの中で最も長いため、割り当てに使用されます。以下の表 (a) に示すように、ターゲット フィーチャには ROAD_NAME の値として West Ave が割り当てられます。

    次に、TRAVEL_DIRECTION フィールドに One way ルール、SPEED_LIMIT フィールドに MAX ルールが設定されているとします。 割り当て元になるソース フィーチャを決定するために、ツールは最初に 3 つすべてのソース フィーチャの TRAVEL_DIRECTION の値を評価し、2 つが One way と一致していることを見つけます。 次にツールは、これら 2 つのフィーチャの SPEED_LIMIT の値を確認し、最大値が 40 である OBJECTID フィールド 1 に決定します。 したがって、以下の表 (b) に示すように、ROAD_NAME フィールド値 East Ave がこのフィーチャからターゲット フィーチャに割り当てられます。

    割り当てルール フィールドの例

  • フィーチャの照合の精度は、データの品質、複雑さ、および 2 つの入力の類似性に依存します。

    前処理でデータ エラーを最小化し、関連するフィーチャを入力として選択します。 一般に、入力データセット内のフィーチャがトポロジ的に正しく、有効なジオメトリを有しており、シングルパートであって重複していないのは有効です。そうでない場合は、予期しない結果が発生するおそれがあります。

パラメーター

ラベル説明データ タイプ
ソース フィーチャ

属性の割り当て元のライン フィーチャ。

Feature Layer
ターゲット フィーチャ

属性の割り当て先のライン フィーチャ。 割り当てフィールドが、ターゲット フィーチャに追加されます。

Feature Layer
割り当てフィールド

ターゲット フィーチャに割り当てられるソース フィールドのリスト。 少なくとも 1 つのフィールドを指定する必要があります。

Field
検索距離

一致候補の検索に使用される距離。 ゼロより大きい距離を指定する必要があります。 優先的に適用される単位を選択できます。 デフォルトはフィーチャの単位です。

Linear Unit
照合フィールド
(オプション)

ソース フィーチャおよびターゲット フィーチャのフィールドのリスト。 これを入力すると、照合候補に関して各フィールド ペアがチェックされるため、正しい適合の特定に役立ちます。

Value Table
出力照合テーブル
(オプション)

完全なフィーチャ マッチング情報を含む出力テーブル。

Table
割り当てルール フィールド
(オプション)

複数のソース フィーチャがターゲット フィーチャと一致する場合に、属性の割り当てに使用するソース フィーチャを制御するルール。 割り当てに使用するソース フィーチャは、指定したルール フィールドとルール値によって決定されます。これらは、指定されたリストに表示される順序で、優先度が高から低にランク付けされます。 ルールが指定されていない場合、一致した複数のソース フィーチャの中で最も長いものが割り当てに使用されます。

使用できるルール タイプは次のとおりです。

  • 最小 - 整数または日付フィールドの最小値。 日付フィールドの場合は、最も新しい日付を使用します。
  • 最大 - 整数または日付フィールドの最大値。 日付フィールドの場合は、最も古い日付を使用します。
  • ソース フィーチャ内に存在する可能性があるテキストまたは整数値。
Value Table

派生した出力

ラベル説明データ タイプ
更新されたターゲット フィーチャ

更新されたターゲット フィーチャ。

Feature Class

arcpy.management.TransferAttributes(source_features, target_features, transfer_fields, search_distance, {match_fields}, {out_match_table}, {transfer_rule_fields})
名前説明データ タイプ
source_features

属性の割り当て元のライン フィーチャ。

Feature Layer
target_features

属性の割り当て先のライン フィーチャ。 割り当てフィールドが、ターゲット フィーチャに追加されます。

Feature Layer
transfer_fields
[field,...]

ターゲット フィーチャに割り当てられるソース フィールドのリスト。 少なくとも 1 つのフィールドを指定する必要があります。

Field
search_distance

一致候補の検索に使用される距離。 ゼロより大きい距離を指定する必要があります。 優先的に適用される単位を選択できます。 デフォルトはフィーチャの単位です。

Linear Unit
match_fields
[[source_field, target_field],...]
(オプション)

ソース フィーチャおよびターゲット フィーチャのフィールドのリスト。 これを入力すると、照合候補に関して各フィールド ペアがチェックされるため、正しい適合の特定に役立ちます。

Value Table
out_match_table
(オプション)

完全なフィーチャ マッチング情報を含む出力テーブル。

Table
transfer_rule_fields
[[field, rule],...]
(オプション)

複数のソース フィーチャがターゲット フィーチャと一致する場合に、属性の割り当てに使用するソース フィーチャを制御するルール。 割り当てに使用するソース フィーチャは、指定したルール フィールドとルール値によって決定されます。これらは、指定されたリストに表示される順序で、優先度が高から低にランク付けされます。 ルールが指定されていない場合、一致した複数のソース フィーチャの中で最も長いものが割り当てに使用されます。

使用できるルール タイプは次のとおりです。

  • 最小 - 整数または日付フィールドの最小値。 日付フィールドの場合は、最も新しい日付を使用します。
  • 最大 - 整数または日付フィールドの最大値。 日付フィールドの場合は、最も古い日付を使用します。
  • ソース フィーチャ内に存在する可能性があるテキストまたは整数値。
Value Table

派生した出力

名前説明データ タイプ
out_feature_class

更新されたターゲット フィーチャ。

Feature Class

コードのサンプル

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

次の Python ウィンドウ スクリプトは、イミディエイト モードで TransferAttributes 関数を使用する方法を示しています。

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.edit.TransferAttributes("source_Roads.shp", "target_Roads.shp", 
                              [["RoadName", "PaveType"]], "25 Feet")
TransferAttributes の例 2 (スタンドアロン スクリプト)

次のスタンドアロン スクリプトは、TransferAttributes 関数をスクリプティング環境で適用する方法の例を示しています。

"""
Name:        TransferAttributes_example_script2.py
Description: Perform attribute transfer from newly updated roads (source) to existing
             base roads (target). When the source and target features are matched in
             many-to-one or many-to-many (m:n) relationships, attributes are transferred 
             from only one of the m source features to the n target features. This script
             includes a postprocess that flags resulting target features with the m:n
             match relationship. You can inspect the flagged features and retrieve the
             attributes from the desired source features if necessary.
"""

# Import system modules
import arcpy

# Set environment settings
arcpy.env.overwriteOutput = True
arcpy.env.workspace = r"D:\conflationTools\ScriptExamples\data.gdb"

# Set local variables
sourceFeatures = "updateRoads"
targetFeatures = "baseRoads"
transfer_fields = [["RD_NAME", RD_ID"]]

search_distance = "300 Feet"
match_fields = [["RD_NAME", "FULLNAME"]]

outMatchTable = "ta_mtbl"

# Make a copy of the targetFeatures for attribute transfer
targetCopy = targetFeatures + "_Copy"
arcpy.management.CopyFeatures(targetFeatures, targetCopy)

# Performs attribute transfer
arcpy.edit.TransferAttributes(sourceFeatures, targetCopy, transfer_fields, search_distance, match_fields, outMatchTable)

"""
Note 1:  The result of TransferAttributes may contain errors; see the tool reference.
         Additional analysis steps may be necessary to check the results. These steps
         are not included in this script.

         The following process identifies m:n matches between source and target features 
         and flags features in targetCopy for inspection.
"""

# Add a field srcM_inMN to the match table to store the m count of source features in m:n relationship
field_srcM_inMN = "srcM_inMN"
arcpy.management.AddField(outMatchTable, field_srcM_inMN)

codeblock = """
def getM(fld):
    x = fld.split(\":\")[0]
    if x.isnumeric():
        if int(x) > 0:
            return int(x)
    return -1
"""

# Calculate values for srcM_inMN
arcpy.management.CalculateField(outMatchTable, field_srcM_inMN, "getM(!FM_MN!)", "PYTHON_9.3", codeblock)

# Make a table view of the match table, selecting srcM_inMN values greater than 1 
# (excluding 1:n relationships which don't need to be inspected)
arcpy.management.MakeTableView(outMatchTable, "mtable_view", field_srcM_inMN + "> 1")

# For the selected records, transfer srcM_inMN and SRC_FID fields and values to the targetCopy
arcpy.management.JoinField(targetCopy, "OBJECTID", "mtable_view", "TGT_FID", [["field_srcM_inMN", "SRC_FID"]])

"""
Note 2:  Now the fields srcM_inMN and SRC_FID are in the copy of the target features.
         The srcM_inMN values are the counts of matched source features. The SRC_FID
         values indicate the source feature IDs from which the transferred attributes
         originated.

         You can interactively review the transferred attributes for the
         flagged features. To replace any of them with those from a different
         source feature, make the edits as needed.
"""
TransferAttributes の例 3 (スタンドアロン スクリプト)

次のスタンドアロン スクリプトは、割り当てルールを使用して TransferAttributes 関数をスクリプティング環境で適用する方法の例を示しています。

"""
Name:        TransferAttributes_example_script3.py
Description: Perform attribute transfer from newly updated roads (source) to
             existing base roads (target). When the source and target
             features are matched in many-to-one or many-to-many (m:n)
             relationships, attributes can be transferred based on transfer
             rules. This script shows how transfer rules are set.
"""

# Import system modules
import arcpy

# Set environment settings
arcpy.env.overwriteOutput = True
arcpy.env.workspace = r"D:\conflationTools\ScriptExamples\data.gdb"

# Set local variables
sourceFeatures = "updateRoads"
targetFeatures = "baseRoads"
transfer_fields = "RD_NAME"

search_distance = "300 Feet"
match_fields = ""
outMatchTable = ""
transfer_rules = [["TRAVEL_DIRECTION", "One-Way"], ["SPEED_LIMIT", "MAX"]]

# Make a copy of the targetFeatures for attribute transfer
targetCopy = targetFeatures + "_Copy"
arcpy.management.CopyFeatures(targetFeatures, targetCopy)

# Perform attribute transfer
arcpy.edit.TransferAttributes(sourceFeatures, targetCopy, transfer_fields,
                              search_distance, match_fields, outMatchTable,
                              transfer_rules)