Transferir atributos (Edición)

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 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

Ilustración de la herramienta Transferir atributos

Uso

    Precaución:

    Esta herramienta modifica los datos de entrada. Consulte Herramientas que modifican o actualizan los datos de entrada para obtener más información y estrategias para evitar cambios de datos no deseados.

    Nota:

    Todas las entradas deben estar en el mismo sistema de coordenadas.

  • 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.

  • El parámetro 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 ayudar en 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.

  • Utilice el parámetro Transferir campos de regla establece las reglas para controlar la transferencia de atributos para coincidencias m:n en las que varias entidades de origen coinciden con una 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 campoValores de reglas

    Texto

    Valor de cadena de caracteres que puede existir en las entidades de origen.

    Entero

    Valor entero que puede existir en las entidades de origen o bien MÁX o MÍN correspodiente al valor máximo o mínimo.

    Fecha

    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 One way y el campo SPEED_LIMIT con la regla MAX. 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 One way. A continuación, la herramienta comprueba los valores de SPEED_LIMIT de estas dos entidades y utiliza el campo OBJECTID 1,que tiene el valor máximo de 40. Esto significa que el valor del campo ROAD_NAME East Ave se transfiere de esta entidad a la entidad de destino, como se muestra en la tabla (b) a continuación.

    Ejemplo de Transferir campos de regla

  • La precisión de la coincidencia de entidades depende de la calidad de los datos, la complejidad y la similitud de las dos entradas.

    Minimice los errores de datos y seleccione las entidades relevantes. En general, es útil si las entradas de un dataset de entrada son topológicamente correctas, tienen una geometría válida y son de una sola parte y no están duplicadas; de lo contrario, pueden producirse resultados inesperados.

Parámetros

EtiquetaExplicaciónTipo de datos
Entidades de origen

Entidades de línea desde las que se transferirán atributos.

Feature Layer
Entidades de destino

Entidades de línea a las que se transferirán atributos. Los campos de transferencia se agregarán a las entidades de destino.

Feature Layer
Transferir campos

Lista de campos de origen que se transferirán a entidades de destino. Se debe proporcionar al menos un campo.

Field
Distancia de búsqueda

La distancia que se utilizará 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
Campos de coincidencia
(Opcional)

Listas de campos de entidades de origen y de destino. Si se proporciona, cada pareja de campos se comprueba para candidatos coincidentes con el fin de ayudar a determinar la concordancia adecuada.

Value Table
Tabla de concordancias de salida
(Opcional)

Tabla de salida que contiene información completa de coincidencia de entidades.

Table
Transferir campos de regla
(Opcional)

Reglas que controlan qué entidad de origen se usará para transferir atributos cuando haya varias entidades de origen que coincidan con las entidades de destino. Entidad de origen que se utilizará para la transferencia se determinan mediante los campos de reglas y los valores de reglas especificados, que se clasifican de 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:

  • MÍN: valor mínimo de un campo de número entero o fecha Para un campo de fecha, utilice la fecha más reciente.
  • MÁX: valor máximo de un campo de número entero o fecha Para un campo de fecha, utilice la fecha más antigua.
  • Texto o valor entero que puede existir en las entidades de origen.
Value Table

Salida derivada

EtiquetaExplicaciónTipo de datos
Entidades de destino actualizadas

Las entidades de destino actualizadas.

Feature Class

arcpy.management.TransferAttributes(source_features, target_features, transfer_fields, search_distance, {match_fields}, {out_match_table}, {transfer_rule_fields})
NombreExplicaciónTipo de datos
source_features

Entidades de línea desde las que se transferirán atributos.

Feature Layer
target_features

Entidades de línea a las que se transferirán atributos. Los campos de transferencia se agregarán a las entidades de destino.

Feature Layer
transfer_fields
[field,...]

Lista de campos de origen que se transferirán a entidades de destino. Se debe proporcionar al menos un campo.

Field
search_distance

La distancia que se utilizará 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 proporciona, 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)

Reglas que controlan qué entidad de origen se usará para transferir atributos cuando haya varias entidades de origen que coincidan con las entidades de destino. Entidad de origen que se utilizará para la transferencia se determinan mediante los campos de reglas y los valores de reglas especificados, que se clasifican de 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:

  • MÍN: valor mínimo de un campo de número entero o fecha Para un campo de fecha, utilice la fecha más reciente.
  • MÁX: valor máximo de un campo de número entero o fecha Para un campo de fecha, utilice la fecha más antigua.
  • Texto o valor entero que puede existir en las entidades de origen.
Value Table

Salida derivada

NombreExplicaciónTipo de datos
out_feature_class

Las entidades de destino actualizadas.

Feature Class

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 de modo inmediato.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.edit.TransferAttributes("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: 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.
"""
Ejemplo 3 de TransferAttributes (secuencia de comandos independiente)

El siguiente script independiente es un ejemplo de cómo aplicar la función TransferAttributes mediante el uso de reglas de transferencia en un entorno de scripts.

"""
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)