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

ライセンス レベル:BasicStandardAdvanced

サマリ

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

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

Transfer Attributes

使用法

構文

TransferAttributes_edit (source_features, target_features, transfer_fields, search_distance, {match_fields}, {out_match_table})
パラメータ説明データ タイプ
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

コードのサンプル

TransferAttributes(属性の割り当て)の例 1(Python ウィンドウ)

次の Python ウィンドウ スクリプトで、TransferAttributes(属性の割り当て)関数をイミディエイト モードで使用する方法を示します。

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.TransferAttributes_edit("source_Roads.shp",
                              "target_Roads.shp", "RoadName, PaveType"
                              "25 Feet")
TransferAttributes(属性の割り当て)の例 2(スタンドアロン Python スクリプト)

次のスタンドアロン Python スクリプトは、TransferAttributes(属性の割り当て)関数をスクリプティング環境に適用する例を示しています。

# Name:        TransferAttributes_example_script2.py
# Description: Performs attribute transfer from newly updated roads (source) to existing
#              base roads (target). Where 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 post-process that flags resulting target features with the m:n
#              match relationships. You can inspect the flagged features and retrieve the
#              attributes from the desired source features if necessary.
# Author:      Esri
# -----------------------------------------------------------------------

# Import system modules
import arcpy
from arcpy import env

# Set environment settings
env.overwriteOutput = True
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.CopyFeatures_management(targetFeatures, targetCopy)

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

# ====================================================================================
# Note 1:  The result of TransferAttributes may contain errors; see 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 flag 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.AddField_management(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.CalculateField_management(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.MakeTableView_management(outMatchTable, "mtable_view", field_srcM_inMN + "> 1")

# For the selected records, transfer srcM_inMN and SRC_FID fields and values to the targetCopy
arcpy.JoinField_management(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
#          come from.
#
#          At this point you can interactively review the transferred attributes for the
#          flagged features. If you want to replace any of them by those from a different
#          source feature, you would need to make the edits as needed.
# ====================================================================================

環境

関連トピック

ライセンス情報

ArcGIS for Desktop Basic: ×
ArcGIS for Desktop Standard: ×
ArcGIS for Desktop Advanced: ○
5/10/2014