Résumé
Compare deux couches ou classes d'entités et renvoie les résultats de la comparaison. L'outil Comparaison d'entités peut signaler des différences de définitions de champ, de géométrie, de valeurs tabulaires et de référence spatiale.
Utilisation
Cet outil renvoie des messages affichant le résultat de la comparaison. Par défaut, il s'arrête dès qu'il rencontre une première erreur de comparaison. Pour signaler toutes les différences, activez le paramètre Continuer la comparaison.
Vous pouvez spécifier plusieurs champs de tri. Le premier champ est trié, puis le second, et ainsi de suite, dans l'ordre croissant. Lorsque vous effectuez une opération de tri sur la base d'un champ commun dans les Entités de base en entrée et les Entités test en entrée, vous êtes sûr que la comparaison porte sur la même ligne dans chaque jeu de données en entrée.
Par défaut, le type de comparaison est défini sur Tout (ALL dans Python). Cela signifie que toutes les propriétés des entités faisant l'objet d'une comparaison sont vérifiées, y compris les références spatiales, les propriétés de champ, les attributs et la géométrie. Toutefois, vous pouvez choisir un type de comparaison différent pour vérifier uniquement certaines propriétés des entités comparées.
Le paramètre Ignorer les options permet d'omettre certaines propriétés, telles que les attributs de mesure, les attributs z, les attributs ID de point et les propriétés d'extension. Deux classes d'entités peuvent être identiques, mais l'une d'elles a des mesures et des coordonnées z, l'autre non. Vous pouvez choisir d'ignorer ces propriétés. L'option Ignorer les propriétés d'extension (IGNORE_EXTENSION_PROPERTIES dans Python) désigne des informations supplémentaires ajoutées à une table ou une classe d'entités. Par exemple, deux classes d'entités annotations peuvent avoir des entités identiques mais des propriétés d'extension différentes, par exemple des symboles différents dans la collection de symboles et un comportement de mise à jour différent.
La tolérance XY par défaut est déterminée par la tolérance XY par défaut des entités de base en entrée. Pour minimiser le risque d'erreur, attribuez la plus petite valeur possible à la tolérance de comparaison. Si la tolérance XY est nulle, une correspondance exacte est trouvée.
Les tolérances M et Z par défaut sont déterminées par les tolérances M et Z par défaut des Entités de base en entrée. Les unités sont identiques à celles des Entités de base en entrée. Si les tolérances M et Z sont nulles, une correspondance exacte est trouvée.
Lorsque la comparaison porte uniquement sur Géométrie uniquement (GEOMETRY_ONLY dans Python), les références spatiales doivent correspondre. Si elles sont différentes, une erreur de comparaison est renvoyée. Si le système de coordonnées est différent pour l'une ou l'autre des entrées, les entités génèrent des erreurs de comparaison. Cet outil ne fait pas de projection à la volée.
Le paramètre Ignorer des champs se compose d'une liste des champs qui sont exclus de la comparaison du nombre de champs. Leurs définitions de champ et leurs valeurs tabulaires sont ignorées.
Les tolérances d'attribut peuvent uniquement être spécifiées pour les champs de type numérique.
Le Fichier de comparaison en sortie contient toutes les similitudes et différences trouvées entre les Entités de base en entrée et les Entités test en entrée. Il s'agit d'un fichier texte délimité par des virgules qui peut être visualisé et utilisé comme table dans ArcGIS. Par exemple, cette table peut être interrogée pour obtenir toutes les valeurs ObjectID de toutes les lignes qui sont différentes. Le champ "has_error" indique que l'enregistrement contient une erreur. La valeur Vrai (True) signale une différence.
Le nombre d'entités est l'une des premières comparaisons effectuées. Si le nombre d'entités est différent et que le paramètre Continuer la comparaison a la valeur Vrai, les messages de comparaison suivants risquent de ne pas refléter avec précision les différences supplémentaires entre les valeurs de Entités de base en entrée et Entités test en entrée. Cela est dû au fait que l'outil Comparaison d'entités n'est pas capable d'identifier la destination et la provenance des entités ajoutées ou supprimés dans l'option Entités test en entrée et passe simplement à la ligne suivante de chaque table attributaire. A l'endroit dans la table attributaire où une entité a été ajoutée ou supprimée, l'outil passe simplement à la ligne suivante et commence à comparer l'entité de base avec une entité test qui n'est pas la bonne, car l'entité test appropriée dans l'option Données test en entrée a été supprimée ou une entité a été ajoutée avant elle.
Dans Python, vous pouvez obtenir le statut de cet outil à l'aide de la commande result.getOutput(1). La valeur est 'true' si aucune différence n'est trouvée et 'false' dans le cas contraire.
Pour en savoir plus sur l'utilisation des outils dans Python
Syntaxe
FeatureCompare_management (in_base_features, in_test_features, sort_field, {compare_type}, {ignore_options}, {xy_tolerance}, {m_tolerance}, {z_tolerance}, {attribute_tolerances}, {omit_field}, {continue_compare}, {out_compare_file})
Paramètre | Explication | Type de données |
in_base_features | Les entités de base en entrée sont comparées aux entités test en entrée. Les entités de base en entrée font référence aux données que vous avez déclarées valides. Ces données de base comportent les définitions de géométrie, les définitions de champ et la référence spatiale correctes. | Feature Layer |
in_test_features | Les entités test en entrée sont comparées aux entités de base en entrée. Les entités test en entrée font référence aux données que vous avez modifiées en mettant à jour ou en compilant de nouvelles entités. | Feature Layer |
sort_field [sort_field,...] | Le ou les champs utilisés pour trier les enregistrements de la Table de base en entrée et de la Table test en entrée. Les enregistrements sont triés dans l'ordre croissant. Lorsque vous effectuez une opération de tri sur la base d'un champ commun dans les Entités de base en entrée et les Entités test en entrée, vous êtes sûr que la comparaison porte sur la même ligne dans chaque jeu de données en entrée. | Value Table |
compare_type (Facultatif) | Type de comparaison. L'option par défaut est Tout, qui compare toutes les propriétés des entités.
| String |
ignore_options [ignore_option,...] (Facultatif) | Ces propriétés ne seront pas comparées.
| String |
xy_tolerance (Facultatif) | Distance qui détermine la plage dans laquelle des entités sont considérées comme identiques. Pour minimiser le risque d'erreur, attribuez la plus petite valeur possible à la tolérance de comparaison. Par défaut, la tolérance de comparaison est la tolérance XY des entités de base en entrée. | Linear unit |
m_tolerance (Facultatif) | La tolérance de mesure correspond à la distance minimale entre des mesures avant qu'elles ne soient considérées comme étant identiques. | Double |
z_tolerance (Facultatif) | La tolérance Z correspond à la distance minimale entre des coordonnées Z avant qu'elles ne soient considérées comme étant identiques. | Double |
attribute_tolerances [[Field, {Tolerance}],...] (Facultatif) | Valeur numérique déterminant la plage dans laquelle les valeurs attributaires sont considérées comme égales. Ce paramètre s'applique uniquement aux champs numériques. | Value Table |
omit_field [omit_field,...] (Facultatif) | Le ou les champs à omettre lors de la comparaison. Les définitions et valeurs tabulaires de ces champs seront ignorées. | String |
continue_compare (Facultatif) | Indique s'il faut comparer toutes les propriétés dès lors qu'une première erreur de correspondance est rencontrée.
| Boolean |
out_compare_file (Facultatif) | Ce fichier contiendra toutes les similitudes et toutes les différences trouvées entre les entités de base en entrée et les entités test en entrée. Il s'agit d'un fichier texte délimité par des virgules qui peut être visualisé et utilisé comme une table dans ArcGIS. | File |
Exemple de code
Exemple d'utilisation de l'outil FeatureCompare (fenêtre Python)
Le script de fenêtre Python ci-dessous illustre l'utilisation de l'outil FeatureCompare en mode immédiat.
import arcpy
arcpy.FeatureCompare_management(r'C:/Workspace/baseroads.shp', r'C:/Workspace/newroads.shp', 'ROAD_ID', 'ALL', 'IGNORE_M;IGNORE_Z', '0.001 METERS', 0, 0, 'Shape_Length 0.001', '#', 'CONTINUE_COMPARE', r'C:/Workspace/roadcompare.txt')
Exemple d'utilisation de l'outil FeatureCompare (script autonome)
Exemple d'utilisation de l'outil FeatureCompare dans un script autonome.
# Name: FeatureCompare.py
# Description: Compare two feature classes and return comparison result.
# import system modules
import arcpy
try:
# Set local variables
base_features = "C:/Workspace/baseroads.shp"
test_features = "C:/Workspace/newroads.shp"
sort_field = "ROAD_ID"
compare_type = "ALL"
ignore_option = "IGNORE_M;IGNORE_Z"
xy_tolerance = "0.001 METERS"
m_tolerance = 0
z_tolerance = 0
attribute_tolerance = "Shape_Length 0.001"
omit_field = "#"
continue_compare = "CONTINUE_COMPARE"
compare_file = "C:/Workspace/roadcompare.txt"
# Process: FeatureCompare
compare_result = arcpy.FeatureCompare_management(base_features, test_features, sort_field, compare_type, ignore_option, xy_tolerance, m_tolerance, z_tolerance, attribute_tolerance, omit_field, continue_compare, compare_file)
print(compare_result.getOutput(1))
print(arcpy.GetMessages())
except Exception as err:
print(err.args[0])
Environnements
Cet outil n'utilise pas d'environnement de géotraitement.
Informations de licence
- ArcGIS Desktop Basic: Oui
- ArcGIS Desktop Standard: Oui
- ArcGIS Desktop Advanced: Oui