Resumen
Busca el lugar dónde las entidades de línea de origen coinciden espacialmente con las de destino y transfiere los atributos especificados de las entidades de origen a las entidades de destino coincidentes.
La transferencia de atributos se utiliza normalmente para copiar los atributos desde las entidades de un dataset a las entidades correspondientes de otro dataset. Por ejemplo, se puede utilizar para transferir los nombres desde entidades de carretera de un dataset previamente conservado y digitalizado a entidades de un nuevo dataset que se han capturado recientemente y son más precisas. Para referirse a los dos datasets se suelen utilizar los términos entidades de origen y entidades de destino. Esta herramienta busca las entidades de línea de origen y destino correspondientes dentro de una distancia de búsqueda especificada y transfiere los atributos especificados de las líneas de origen a las líneas de destino.
Ilustración
Uso
La unión de las extensiones de entrada se utiliza como extensión de procesamiento. Los recuentos de las entidades de origen y destino que participan se notifican en los mensajes de procesamiento.
Se deben especificar uno o más campos en el parámetro Transferir campos. Si un campo de transferencia tiene el mismo nombre que un campo de la tabla de entidades de destino, el campo de transferencia se incorporará con _1 (o _2, o _3, y así sucesivamente) para que sea único.
Cuando varias entidades de origen coinciden con una o más entidades de destino, solo se transfieren los valores de campo de una de las entidades de origen a las entidades de destino. Si falta un valor de campo de origen, no se producirá la transferencia de atributos.
El parámetro Distancia de búsqueda se utiliza para buscar candidatos que coinciden. Utilice una distancia que sea lo suficientemente grande para captar la mayoría de cambios entre las entidades correspondientes, pero no demasiado para generar el procesamiento innecesario de un exceso de candidatos y obtener potencialmente coincidencias erróneas.
La Tabla de concordancia de salida es opcional. Esta tabla de concordancia proporciona exhaustiva información de coincidencia de entidades, incluidos los FID de origen y destino, los grupos coincidentes, las relaciones coincidentes y el nivel de confianza de la correspondencia derivada de las condiciones coincidentes de espacio y atributo. Esta información puede servir para comprender las situaciones coincidentes y facilitar la inspección posterior, la postedición y los análisis adicionales. Consulte Acerca de la geocodificación de entidades y la tabla de coincidencias para obtener información detallada.
El parámetro Transferir campos de regla establece las reglas para controlar la transferencia de atributos para coincidencias m:n, donde varias entidades de origen coinciden con uno o más entidades de destino. Si no se establecen reglas, los atributos se transferirán desde la más larga de las entidades de origen que coincidan. No obstante, para guiar mejor la transferencia, se pueden usar reglas basadas en atributos y cada una se define mediante un nombre de campo y un valor.
Se admiten los siguientes tipos de campo y valores de reglas:
Tipo de campo Valores de reglas Texto
Un valor de cadena de caracteres que puede existir en las entidades de origen.
Entero
Un valor entero que puede existir en las entidades de origen p bien MÁX o MÍN para el valor máximo o mínimo.
Date
MÁX o MÍN para la fecha más reciente o más antigua.
Puede especificar tantos pares de valores campo/reglas como sea necesario. Las reglas se aplicarán en el orden en que se enumeran.
Cuando se encuentra una coincidencia m:n, la herramienta comprobará los valores de los campos y reglas especificados y determinará desde cuál de ellos se transfieren los atributos e las formas siguientes:
- Si solo una de las entidades de origen m tiene el valor de regla en el primer campo de la lista de reglas, esa entidad de origen se usará para la transferencia.
- Si ninguna entidad de origen o más de una entidad de origen tienen el valor de regla, es un empate. Si no se especifican más reglas, la más larga de ellas se utilizará para la transferencia. De lo contrario, la siguiente regla de la lista se comprobará para romper el empate.
- El proceso continúa hasta que todas las reglas se hayan evaluado. Si no se puede determinar ninguna entidad de origen para la transferencia, se usará la entidad de origen más larga.
En el ejemplo siguiente se explica cómo funciona este proceso. El campo ROAD_NAME tiene que transferirse del origen al destino para una coincidencia 3:1. De manera predeterminada, la entidad de origen 3, la más larga de las tres entidades de origen, se usará para la transferencia, y la entidad de destino recibirá el valor de ROAD_NAME de West Ave, como se muestra en la tabla (a) a continuación.
Ahora supongamos que se han definido las reglas siguientes: el campo TRAVEL_DIRECTION con la regla Unidireccional y el campo SPEED_LIMIT con la regla MÁX. Para determinar la entidad de origen correcta para la transferencia, la herramienta evalúa primero los valores de TRAVEL_DIRECTION de las tres entidades de origen y busca las dos que coincidan para Unidireccional. A continuación, la herramienta comprueba los valores de SPEED_LIMIT entre estas dos entidades y establece OBJECTID 1 que tiene el valor máximo de 40. Por tanto, el ROAD_NAME de East Ave se transfiere de esta entidad a la entidad de destino, como se muestra en la tabla (b) a continuación.
La precisión de la coincidencia de entidades depende de la calidad de los datos, la complejidad y la similitud de las dos entradas.
Como entrada durante el procesamiento previo, debe minimizar los errores de datos y seleccionar las entidades relevantes. En general, siempre es útil que dentro de un dataset de entrada, las entidades sean topológicamente correctas, tengan una geometría válida y sean de parte simple y no duplicadas; de lo contrario, pueden producirse errores inesperados.
Sintaxis
arcpy.edit.TransferAttributes(source_features, target_features, transfer_fields, search_distance, {match_fields}, {out_match_table}, {transfer_rule_fields})
Parámetro | Explicación | Tipo de datos |
source_features | Entidades de línea desde las que se transfieren atributos. | Feature Layer |
target_features | Entidades de línea a las que se transfieren atributos. Los campos de transferencia especificados se agregan a las entidades de destino. | Feature Layer |
transfer_fields [field,...] | Lista de campos de origen que se transfieren a entidades de destino. Se debe especificar al menos un campo. | Field |
search_distance | Distancia utilizada para buscar candidatos que coinciden. Se debe especificar una distancia que debe ser mayor que cero. Puede elegir la unidad que prefiera; el valor predeterminado es la unidad de la entidad. | Linear Unit |
match_fields [[source_field, target_field],...] (Opcional) | Listas de campos de entidades de origen y de destino. Si se especifican, cada pareja de campos se comprueba para candidatos coincidentes con el fin de ayudar a determinar la concordancia adecuada. | Value Table |
out_match_table (Opcional) | Tabla de salida que contiene información completa de coincidencia de entidades. | Table |
transfer_rule_fields [[field, rule],...] (Opcional) | Establece reglas para controlar qué entidad de origen se usará para transferir atributos cuando hay varias entidades de origen que coinciden con una o varias entidades de destino. La entidad de origen que se va a usar para la transferencia se determinan mediante los campos de reglas y los valores de reglas especificados, que se clasifican el alta a baja prioridad según aparecen en la lista. Si no se especifican reglas, la más larga de las entidades de origen que coincidan se utilizará para la transferencia. Están disponibles los siguientes tipos de reglas:
| Value Table |
Salida derivada
Nombre | Explicación | Tipo de datos |
out_feature_class | Las entidades de destino actualizadas. | Clase de entidad |
Muestra de código
Ejemplo 1 de TransferAttributes (ventana de Python)
El siguiente script de la ventana de Python demuestra cómo utilizar la función TransferAttributes en el modo inmediato.
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.TransferAttributes_edit("source_Roads.shp",
"target_Roads.shp", ["RoadName", "PaveType"],
"25 Feet")
Ejemplo 2 de TransferAttributes (script independiente)
El siguiente script independiente es un ejemplo de cómo aplicar la función TransferAttributes en un entorno de scripts.
# 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.
# ====================================================================================
Ejemplo 3 de TransferAttributes (script independiente)
El siguiente script independiente es un ejemplo de cómo aplicar la función TransferAttributes con el uso de reglas de transferencia en un entorno de scripts.
# 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.
# ------------------------------------------------------------------------------
# Import system modules
import arcpy
# Set environment settings
arcpy.env.overwriteOutput = True
arcpy.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])
Entornos
Información de licenciamiento
- Basic: No
- Standard: No
- Advanced: Sí