Résumé
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
-
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.
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.
Syntaxe
arcpy.edit.TransformFeatures(in_features, in_link_features, {method}, {out_link_table})
Paramètre | Explication | Type 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.
| String |
out_link_table (Facultatif) | Table de sortie contenant des liens en entrée et leurs erreurs résiduelles. | Table |
Sortie dérivée
Nom | Explication | Type 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
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")
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
Informations de licence
- Basic: Non
- Standard: Non
- Advanced: Oui
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?