Transforma entidades (Edición)

Resumen

Convierte las coordenadas de las entidades de entrada de una ubicación a otra mediante el escalado, el desplazamiento y la rotación basándose en los vínculos de transformación entre los puntos de control correspondientes conocidos.

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.

  • Las entidades de entrada pueden ser puntos, líneas, polígonos o anotaciones.

  • Las entidades de vínculo de entrada son líneas que representan vínculos de transformación entre puntos de control correspondientes conocidos. El punto inicial de un vínculo es la ubicación del punto de control de origen y el punto final del vínculo es la ubicación del punto de control de destino correspondiente.

  • La transformación funciona en un sistema de coordenadas planas o cartesiano. Se recomienda utilizar un sistema de coordenadas proyectadas (PCS). Si se utiliza un sistema de coordenadas geográficas (GCS) con valores de latitud y longitud puede dar lugar a una distorsión o a que se produzcan errores de cálculo.

  • Todas las entidades de entrada se transforman por medio de uno de los tres métodos de transformación: afín, proyectiva y similitud. Cada método requiere una cantidad mínima de vínculos de transformación. Para obtener más información, consulte Transformar una entidad, incluidas las fórmulas de transformación.

    • AFÍN: requiere un mínimo de tres vínculos de transformación.
    • PROYECTIVA: requiere un mínimo de cuatro vínculos de transformación.
    • SIMILITUD: requiere un mínimo de dos vínculos de transformación.
  • El resultado transformado depende de la calidad de los vínculos de entrada. Un vínculo debería partir de una ubicación de origen conocida y debería finalizar en su ubicación de destino correspondiente, también llamado puntos de control. Cuanto mejor establecidos estén los puntos de control, más preciso será el resultado transformado. Las coordenadas de las ubicaciones de origen y destino de los vínculos se utilizarán para derivar los parámetros de transformación, que encajan mejor entre los puntos de control de origen y de destino. Incluso aunque utilice los parámetros de transformación para transformar los puntos de control de origen reales, las ubicaciones resultantes no coincidirán con las ubicaciones de los puntos de control de destino. Esto se conoce como error residual y se genera para cada vínculo de transformación. Como opción, los errores residuales de los vínculos de entrada se pueden escribir en una tabla que contenga los campos siguientes:

    • Orig_FID: el Id. de la entidad del vínculo de entrada
    • X_Source: la coordenada x de la ubicación de origen o del final del vínculo
    • Y_Source: la coordenada y de la ubicación de origen o del final del vínculo
    • X_Destination: la coordenada x de la ubicación de destino o al final del vínculo
    • Y_Destination: la coordenada y de la ubicación de destino o al final del vínculo
    • Residual_Error: el error residual de la ubicación transformada

    Un error cuadrático medio (RMSE), también conocido como desviación cuadrática media (RMSD), se calcula basándose en los errores residuales e indica la adecuación de la transformación derivada. El valor de RMSE se escribe en los mensajes de procesamiento. También es un parámetro de salida derivado que puede utilizar en un flujo de trabajo de script o modelo.

    En el tema Transformar entidades se proporcionan detalles relacionados con los cálculos de los errores residuales y RMSE. Debe decide el valor de RMSE aceptable según su conocimiento de la precisión de la posición de las entidades de entrada, así como de los puntos de control. Si el valor de RMSE es demasiado alto, revise los errores residuales y descarte o sustituya los vínculos que tienen errores residuales altos.

Parámetros

EtiquetaExplicaciónTipo de datos
Entidades de entrada

Las entidades de entrada cuyas coordenadas se transformarán. Pueden ser puntos, líneas, polígonos o anotaciones.

Feature Layer
Entidades de vínculo de entrada

Las entidades de vínculo de entrada que vinculan puntos de control conocidos para la transformación.

Feature Layer
Método
(Opcional)

Especifica el método de transformación que se utilizará para convertir las coordenadas de las entidades de entrada.

  • Transformación afínSe requiere un mínimo de tres vínculos de transformación. Esta es la opción predeterminada.
  • Transformación proyectivaSe requiere un mínimo de cuatro vínculos de transformación.
  • Transformación de similitudSe requiere un mínimo de dos vínculos de transformación.
String
Tabla de vínculos de salida
(Opcional)

Tabla de salida que contiene los vínculos de entrada y sus errores residuales.

Table

Salida derivada

EtiquetaExplicaciónTipo de datos
RMSE

Notifica el valor del error cuadrático medio (RMSE).

Double
Entidades de entrada actualizadas

Las entidades de entrada actualizadas.

Feature Layer

arcpy.management.TransformFeatures(in_features, in_link_features, {method}, {out_link_table})
NombreExplicaciónTipo de datos
in_features

Las entidades de entrada cuyas coordenadas se transformarán. Pueden ser puntos, líneas, polígonos o anotaciones.

Feature Layer
in_link_features

Las entidades de vínculo de entrada que vinculan puntos de control conocidos para la transformación.

Feature Layer
method
(Opcional)

Especifica el método de transformación que se utilizará para convertir las coordenadas de las entidades de entrada.

  • AFFINESe requiere un mínimo de tres vínculos de transformación. Esta es la opción predeterminada.
  • PROJECTIVESe requiere un mínimo de cuatro vínculos de transformación.
  • SIMILARITYSe requiere un mínimo de dos vínculos de transformación.
String
out_link_table
(Opcional)

Tabla de salida que contiene los vínculos de entrada y sus errores residuales.

Table

Salida derivada

NombreExplicaciónTipo de datos
out_rmse

Notifica el valor del error cuadrático medio (RMSE).

Double
out_feature_class

Las entidades de entrada actualizadas.

Feature Layer

Muestra de código

Ejemplo 1 de TransformFeatures (ventana de Python)

El siguiente script de la ventana de Python demuestra cómo utilizar la función TransformFeatures de modo inmediato.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.edit.TransformFeatures("source_Roads.shp","control_Links.shp",
                             "AFFINE")
Ejemplo 2 de TransformFeatures (script independiente)

El siguiente script independiente es un ejemplo de cómo aplicar la función TransformFeatures en un entorno de scripts.

import arcpy
import os

# Set environment settings
arcpy.env.overwriteOutput = True

# Function to convert link info in a text file to a line feature class
def CreateLinkFeatures(in_text_file, in_data):

    sr = arcpy.Describe(in_data).spatialReference
    features = []  # a list to hold polyline geometry objects

    f = open(in_text_file, "r")
    
    for line in f.readlines():

        # Take start/end blank spaces off
        # Separate the start and end point coordinates
        points = line.strip().split()   
        
        point1 = arcpy.Point(float(points[1]), float(points[2]))
        point2 = arcpy.Point(float(points[3]), float(points[4]))
        
        features.append(arcpy.Polyline(arcpy.Array([point1, point2]), sr))
        
    f.close()   # close the text file

    # Copy the geometry objects into a feature class named Links
    result = arcpy.management.CopyFeatures(features, in_data + "_links")

    return result[0]
    
if __name__ == "__main__":

    # Make a copy of the data because
    # TransformFeatures tool modifies the input data
    arcpy.management.CopyFeatures(r"C:\data\Tutorial.gdb\Parcels", r"C:\data\Tutorial.gdb\Parcels_copy")

    links_file = r"C:\data\TF_links.txt"
    tf_link_features = CreateLinkFeatures(links_file, r"C:\data\Tutorial.gdb\Parcels")
    
    arcpy.edit.TransformFeatures(r"C:\data\Tutorial.gdb\Parcels_copy", tf_link_features)
    print(arcpy.GetMessages())