Zusammenfassung
Ermittelt, wo die Quell-Linien-Features räumlich mit den Ziel-Linien-Features übereinstimmen, und überträgt angegebene Attribute von Quell-Features auf abgeglichene Ziel-Features.
Die Attributübertragung wird normalerweise verwendet, um Attribute von Features in einem Dataset zu entsprechenden Features in einem anderen Dataset zu kopieren. Beispielsweise kann sie verwendet werden, um die Namen von Straßen-Features von einem zuvor digitalisierten und verwalteten Dataset auf Features, die neu erfasst und genauer sind, in einem neuen Dataset zu übertragen. Die zwei Datasets werden gewöhnlich als Quell-Features und Ziel-Features bezeichnet. Dieses Werkzeug ermittelt einander entsprechende Quell- und Ziellinien-Features innerhalb der angegebenen Suchentfernung und überträgt die angegebenen Attribute von Quelllinien auf Ziellinien.
Abbildung
Verwendung
Die Vereinigung der Eingabe-Ausdehnungen wird als Verarbeitungsausdehnung verwendet. Die Anzahl der beteiligten Quellen- und Ziel-Features wird in den Verarbeitungsmeldungen aufgeführt.
Im Parameter Feld(er) übertragen müssen ein oder mehrere Felder angegeben werden. Wenn ein Übertragungsfeld denselben Namen wie ein Feld der Ziel-Feature-Tabelle trägt, wird _1 (oder _2 bzw. _3 usw.) an das Übertragungsfeld angehängt, um es eindeutig zu benennen.
Wenn mehrere Quell-Features mit einem oder mehreren Ziel-Features übereinstimmen, werden nur die Feldwerte aus einem der Quell-Features auf die Ziel-Features übertragen. Wenn ein Quellenfeldwert fehlt, findet keine Attributübertragung statt.
Der Parameter Suchentfernung wird zum Suchen von Übereinstimmungskandidaten verwendet. Verwenden Sie eine Entfernung, die lang genug ist, um die meisten Verschiebungen zwischen übereinstimmenden Features zu erfassen, jedoch nicht so lang, dass dadurch zu viele Kandidaten unnötig verarbeitet und potenziell falsche Treffer erzielt werden.
Die Ausgabe-Zuordnungstabelle ist optional. Diese Zuordnungstabelle enthält vollständige Informationen zum Feature-Abgleich, z. B. die Quellen- und Ziel-FIDs, Übereinstimmungsgruppen, Übereinstimmungsbeziehungen und das Konfidenzniveau des Abgleichs aus Bedingungen für den räumlichen und Attributabgleich. Diese Informationen können die Interpretation der Übereinstimmungssituationen ermöglichen und die Nachprüfung, Nachbearbeitung und weitere Analyse vereinfachen. Weitere Informationen finden Sie unter Feature-Abgleich und Zuordnungstabelle.
Mit dem Parameter Übertragungsregelfeld(er) werden Regeln zur Steuerung der Attributübertragung bei m:n-Zuordnungen festgelegt, wenn mehrere Quell-Features einem oder mehreren Ziel-Features zugeordnet werden. Wenn keine Regeln festgelegt sind, werden die Attribute aus dem längsten der zugeordneten Quell-Features übertragen. Um eine bessere Übertragung zu erhalten, können attributbasierte Regeln verwendet werden, wobei jede durch einen Feldnamen und einen Wert definiert wird.
Die folgenden Feldtypen und Regelwerte werden unterstützt:
Feldtyp Regelwerte Text
Ein eventuell in Ihren Quell-Features vorhandener Zeichenkettenwert.
Ganze Zahl
Entweder ein in Ihren Quell-Features vorhandener Ganzzahlwert oder MAX bzw. MIN für den Maximal- oder Minimalwert.
Date
MAX oder MIN für das am kürzesten oder weitesten zurückliegende Datum.
Sie können beliebig viele Wertepaare aus Feldern und Regeln angeben. Die Regeln werden in der angegebenen Reihenfolge angewendet.
Wenn eine m:n-Zuordnung gefunden wurde, überprüft das Werkzeug die für Felder und Regeln angegebenen Werte daraufhin, aus welchem Attribute wie folgt übertragen werden sollen:
- Wenn nur eines der m-Quell-Features den Regelwert im ersten Feld der Regelliste aufweist, wird dieses Quell-Feature für die Übertragung verwendet.
- Enthält mehr als ein oder gar keines der m-Quell-Features den Regelwert, so besteht ein Unentschieden. Wenn keine weiteren Regeln angegeben sind, wird die längste unter ihnen für die Übertragung verwendet. Ansonsten wird die in der Liste nachfolgende Regel daraufhin überprüft, ob sie das Unentschieden aufhebt.
- Der Vorgang setzt sich so lange fort, bis alle Regeln bewertet wurden. Wenn kein Quell-Feature für die Übertragung ermittelt werden kann, dann wird das längste Quell-Feature verwendet.
Im folgenden Beispiel wird erklärt, wie dieser Vorgang abläuft. Das Feld ROAD_NAME muss von der Quelle zum Ziel übertragen werden, wobei eine 3:1-Zuordnung erfolgt. Standardmäßig würde das Quell-Feature 3, das längste der drei Quell-Features, für die Übertragung verwendet, und das Ziel-Feature würde den Wert ROAD_NAME von West Ave erhalten, wie in Tabelle (a) zu sehen ist.
Beispielsweise wurden die folgenden Regeln festgelegt: das Feld TRAVEL_DIRECTION mit der Regel Einweg und das Feld SPEED_LIMIT mit der Regel MAX. Zum Ermitteln des richtigen Quell-Features für die Übertragung bewertet das Werkzeug zuerst die Werte von TRAVEL_DIRECTION für alle drei Quell-Features und findet heraus, dass zwei die Regel Einweg erfüllen. Danach überprüft das Werkzeug die Werte SPEED_LIMIT für diese beiden Features und legt sich auf OBJECTID 1 fest, das den Maximalwert 40 aufweist. Daher wird ROAD_NAME von East Ave aus diesem Feature in das Ziel-Feature übertragen, wie der nachstehenden Tabelle (b) zu entnehmen ist.
Die Genauigkeit des Feature-Abgleichs ist abhängig von der Qualität, Komplexität und Ähnlichkeit der Daten der zwei Eingaben.
Während der Vorverarbeitung müssen Sie die Datenfehler minimieren und relevante Features auswählen. Im Allgemeinen ist es hilfreich, wenn die Features in einem Eingabe-Dataset topologisch richtig sind, eine gültige Geometrie aufweisen und Singlepart und nicht doppelt sind. Andernfalls können unerwartete Fehler auftreten.
Syntax
TransferAttributes_edit (source_features, target_features, transfer_fields, search_distance, {match_fields}, {out_match_table}, {transfer_rule_fields})
Parameter | Erläuterung | Datentyp |
source_features | Linien-Features, aus denen Attribute übertragen werden sollen. | Feature Layer |
target_features | Linien-Features, zu denen Attribute übertragen werden sollen. Die angegebenen Übertragungsfelder werden zu den Ziel-Features hinzugefügt. | Feature Layer |
transfer_fields [field,...] | Liste der Quellenfelder, die zu Ziel-Features übertragen werden sollen. Es muss mindestens ein Feld angegeben werden. | Field |
search_distance | Die für die Suche nach Übereinstimmungskandidaten verwendete Entfernung. Die Entfernung muss angegeben und größer als null sein.Sie können eine bevorzugte Einheit auswählen. Standardmäßig wird die Feature-Einheit verwendet. | Linear unit |
match_fields [[source_field, target_field],...] (optional) | Liste der Felder aus Quellen- und Ziel-Features. Falls angegeben, wird jedes Feldpaar auf Übereinstimmungskandidaten geprüft, um die Ermittlung des richtigen Treffers zu ermöglichen. | Value Table |
out_match_table (optional) | Die Ausgabetabelle mit vollständigen Informationen zum Feature-Abgleich. | Table |
transfer_rule_fields [[field, rule],...] (optional) | Legt Regeln fest, mit denen kontrolliert wird, welches Quell-Feature bei der Zuordnung mehrerer Quell-Features zu einem oder mehreren Ziel-Feature(s) für die Übertragung von Attributen verwendet werden soll. Das für die Übertragung verwendete Quell-Feature ergibt sich aus den angegebenen Regelfeldern und den Regelwerten, denen in der angegebenen Liste Prioritäten von hoch bis niedrig zugeordnet sind. Wenn keine Regeln festgelegt sind, wird das längste der mehrfach zugeordneten Quell-Features für die Übertragung verwendet. Die folgenden Regeltypen sind verfügbar:
| Value Table |
Codebeispiel
TransferAttributes – Beispiel 1 (Python-Fenster)
Das folgende Skript im Python-Fenster veranschaulicht, wie Sie die Funktion TransferAttributes im unmittelbaren Modus verwenden.
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.TransferAttributes_edit("source_Roads.shp",
"target_Roads.shp", ["RoadName", "PaveType"],
"25 Feet")
TransferAttributes – Beispiel 2 (eigenständiges Skript)
Das folgende eigenständige Skript ist ein Beispiel für die Anwendung der Funktion TransferAttributes in einer Skriptumgebung.
# 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.
# ====================================================================================
TransferAttributes – Beispiel 3 (eigenständiges Skript)
Das folgende eigenständige Skript ist ein Beispiel für die Anwendung der Funktion TransferAttributes mithilfe von Übertragungsregeln in einer Skriptumgebung.
# Name: TransferAttributes_example_script3.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 can be transferred
# based on transfer rules. This script shows how transfer rules are set.
#
# 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"
try:
# 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.CopyFeatures_management(targetFeatures, targetCopy)
# Performs attribute transfer
arcpy.TransferAttributes_edit(sourceFeatures, targetCopy, transfer_fields, search_distance, match_fields, outMatchTable, transfer_rules)
except arcpy.ExecuteError as aex:
print(arcpy.GetMessages(2))
except Exception as ex:
print(ex.args[0])
Umgebungen
Lizenzinformationen
- ArcGIS Desktop Basic: Nein
- ArcGIS Desktop Standard: Nein
- ArcGIS Desktop Advanced: Ja