Transformer des entités (Mise à jour)

Synthèse

Convertit les coordonnées des entités en entrée d'un emplacement vers un autre via la mise à l'échelle, le décalage et la rotation en fonction des liens de transformation qui existent entre des points de contrôle correspondants connus.

Utilisation

    Attention :

    Cet outil modifie les données en entrée. Pour plus d’informations et connaître les stratégies permettant d’empêcher les modifications de données indésirables, reportez-vous à la rubrique Outils qui modifient ou mettent à jour les données en entrée.

    Remarque :

    Toutes les entrées doivent être exprimées dans le même système de coordonnées.

  • Les entités en entrée peuvent être des points, des lignes, des polygones ou des annotations.

  • Les entités de liens en entrée sont des lignes représentant des liens de transformation entre des points de contrôle correspondants connus. Le point de départ d'un lien est l'emplacement source du point de contrôle et l'extrémité du lien est l'emplacement cible correspondant du point de contrôle.

  • La transformation est effectuée dans un système de coordonnées planaires ou cartésien. Nous recommandons vivement l'utilisation d'un système de coordonnées projetées. L'utilisation d'un système de coordonnées géographiques avec des valeurs de latitude et de longitude risque de produire des distorsions indésirables ou des erreurs de calcul.

  • Toutes les entités en entrée sont transformées par une des trois méthodes de transformation : affine, projective et d’Helmert, chacune d'elle nécessitant un nombre minimum de liens de transformation. Reportez-vous à la rubrique Transformer une entité pour en savoir plus, notamment sur les formules de transformation.

    • AFFINE : la transformation affine nécessite au moins trois liens de transformation.
    • PROJECTIVE : la transformation projective nécessite au moins quatre liens de transformation.
    • D'HELMERT : la transformation d'Helmert nécessite au moins deux liens de transformation.
  • Le résultat transformé varie selon la qualité des vos liens en entrée. Un lien doit commencer à partir d'un emplacement source connu et se terminer à l'emplacement cible correspondant, ces emplacements étant appelés des points de contrôle. Plus les points de contrôle sont établis, plus le résultat transformé est précis. Les coordonnées des emplacements source et de destination des liens permettent de dériver les paramètres de transformation les plus appropriés entre les points de contrôle source et de destination. Même si vous appliquez les paramètres de transformation pour transformer les points de contrôle source réels, les emplacements résultants ne correspondent pas aux emplacements des points de contrôle de destination. Il s'agit d'une erreur résiduelle qui est générée pour chaque lien de transformation. Il est possible de consigner les erreurs résiduelles des liens en entrée dans une table qui contient les champs suivants :

    • Orig_FID: identifiant d’entité du lien en entrée
    • X_Source : coordonnée x de l’emplacement source ou d’origine du lien.
    • Y_Source : coordonnée y de l’emplacement source ou d’origine du lien.
    • X_Destination : coordonnée x de l’emplacement de destination ou cible du lien.
    • Y_Destination : coordonnée y de l’emplacement de destination ou cible du lien.
    • Residual_Error : erreur résiduelle de l’emplacement transformé.

    Une erreur quadratique moyenne (EQM), également appelée déviation quadratique moyenne, est calculée en fonction des erreurs résiduelles et indique habituellement le degré de qualité de la transformation dérivée. La valeur de l'erreur quadratique moyenne est indiquée dans les messages de traitement. Elle représente également un paramètre de sortie dérivé que vous pouvez utiliser dans un script ou un workflow de modèle.

    La section « Présentation de l’erreur résiduelle et de l’erreur quadratique moyenne » de la rubrique Transformer une entité contient des informations supplémentaires sur le calcul des erreurs résiduelles et l’EQM. C'est vous qui déterminez la valeur acceptable de l'erreur quadratique moyenne selon les informations dont vous disposez sur la précision de la position des entités en entrée et des points de contrôle. Si la valeur de l'erreur quadratique moyenne est trop élevée, vous devez passer en revue les erreurs résiduelles et ignorer ou remplacer les liens qui présentent de nombreuses erreurs résiduelles.

Paramètres

ÉtiquetteExplicationType de données
Entités en entrée

Entités en entrée dont les coordonnées doivent être transformées. Il peut s’agir de points, de lignes, de polygones ou d’annotations.

Feature Layer
Entités linéaires en entrée

Entités de liens en entrée qui lient les points de contrôle connus pour la transformation.

Feature Layer
Méthode
(Facultatif)

Spécifie la méthode de transformation à utiliser pour convertir des coordonnées d’entités en entrée.

  • Transformation affineLa transformation affine nécessite au moins trois liens de transformation. Il s’agit de l’option par défaut.
  • Transformation projectiveLa transformation projective nécessite au moins quatre liens de transformation.
  • Transformation d'HelmertLa transformation d'Helmert nécessite au moins deux liens de transformation.
String
Table des liens en sortie
(Facultatif)

Table de sortie contenant des liens en entrée et leurs erreurs résiduelles.

Table

Sortie obtenue

ÉtiquetteExplicationType de données
EQM

Renvoie la valeur de l'erreur quadratique moyenne (EQM).

Double
Entités en entrée mises à jour

Entités en entrée mises à jour.

Couche d’entités

arcpy.edit.TransformFeatures(in_features, in_link_features, {method}, {out_link_table})
NomExplicationType de données
in_features

Entités en entrée dont les coordonnées doivent être transformées. Il peut s’agir de points, de lignes, de polygones ou d’annotations.

Feature Layer
in_link_features

Entités de liens en entrée qui lient les points de contrôle connus pour la transformation.

Feature Layer
method
(Facultatif)

Spécifie la méthode de transformation à utiliser pour convertir des coordonnées d’entités en entrée.

  • AFFINELa transformation affine nécessite au moins trois liens de transformation. Il s’agit de l’option par défaut.
  • PROJECTIVELa transformation projective nécessite au moins quatre liens de transformation.
  • SIMILARITYLa transformation d'Helmert nécessite au moins deux liens de transformation.
String
out_link_table
(Facultatif)

Table de sortie contenant des liens en entrée et leurs erreurs résiduelles.

Table

Sortie obtenue

NomExplicationType de données
out_rmse

Renvoie la valeur de l'erreur quadratique moyenne (EQM).

Double
out_feature_class

Entités en entrée mises à jour.

Couche d’entités

Exemple de code

Exemple 1 de TransformFeatures (fenêtre Python)

Le script de fenêtre Python ci-dessous illustre l'utilisation de la fonction TransformFeatures en mode immédiat.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.TransformFeatures_edit("source_Roads.shp","control_Links.shp",
                             "AFFINE")
Exemple 2 d’utilisation de l’outil TransformFeatures (script autonome)

Le script autonome suivant est un exemple d'application de la fonction TransformFeatures dans un environnement de scripts.

import arcpy
import os

# Set geoprocessing environments
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.CopyFeatures_management(features, in_data + "_links")

    return result.getOutput(0)
    
if __name__ == "__main__":

    # Make a copy of the data because
    # TransformFeatures tool modifies the input data
    arcpy.CopyFeatures_management(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")
    
    try:
        arcpy.TransformFeatures_edit(r"C:\data\Tutorial.gdb\Parcels_copy", tf_link_features)
        print(arcpy.GetMessages())
        
    except arcpy.ExecuteError as aex:
        print(arcpy.GetMessages(2))

    except Exception as ex:
        print(ex.args[0])

Environnements

Cas particuliers

Informations de licence

  • Basic: Non
  • Standard: Non
  • Advanced: Oui

Rubriques connexes