Vérifier les géométries (Gestion des données)

Synthèse

Génère un rapport des problèmes de géométrie dans une classe d'entités.

Pour des informations supplémentaires sur les problèmes de géométrie, leur impact sur le logiciel et les sources potentielles, reportez-vous à la rubrique Outils de vérification et de réparation des géométries.

Utilisation

  • Les formats en entrée valides sont les shapefiles ainsi que les classes d’entités stockées dans une géodatabase fichier, une base de données ou une géodatabase d’entreprise, un GeoPackage ou une base de données SpatiaLite. Les types spatiaux suivants sont pris en charge pour les classes d’entités stockées dans une base de données ou une géodatabase d’entreprise :

    • Microsoft SQL Server : géométrie et géographie
    • PostgreSQL : PostGIS, géométrie et géographie
    • Oracle : SDO_Geometry
    • SAP HANA : ST_Geometry

    Licence :

    Avec une licence Desktop Basic, vous pouvez appliquer cet outil uniquement aux shapefiles et aux classes d’entités stockées dans une géodatabase fichier, un GeoPackage ou une base de données SpatiaLite. Avec une licence Desktop Standard ou Desktop Advanced, vous pouvez également appliquer cet outil aux classes d’entités stockées dans une base de données ou une géodatabase d’entreprise.

  • Les classes d’entités stockées dans une géodatabase d’entreprise et inscrites comme versionnées ne sont pas prises en charge.

  • La valeur du paramètre Table en sortie contient un enregistrement pour chaque problème de géométrie découvert. Si aucun problème n'est détecté, la table est vide.

  • Le contenu de la valeur du paramètre Table en sortie, y compris les codes du champ PROBLEM, est écrit en anglais.

  • Pour les entités ponctuelles, seul le problème de géométrie nulle est possible.

  • Pour réviser des entités identifiées comme ayant des problèmes de géométrie, vous pouvez joindre la valeur du paramètre Entités en entrée à la valeur du paramètre Table en sortie à l’aide de l’outil Ajouter une jointure, ainsi que le champ OBJECTID ou FID de l’entrée et le champ FEATURE_ID de la table en sortie. Si l’une des valeurs du paramètre Entités en entrée est stockée dans une base de données d’entreprise, une géodatabase d’entreprise, un GeoPackage ou une base de données SpatiaLite, la table en sortie comprend également un champ TEXT_ID utilisé pour les colonnes OBJECTID à base de nombres non entiers.

  • L’option de validation Esri permet de s’assurer que la géométrie est topologiquement correcte à l’aide de la méthode Simplifier d’Esri. La méthode de validation d’Esri est la seule disponible pour les données stockées dans une géodatabase d’entreprise.

  • La méthode de validation de l’Open Geospatial Consortium (OGC) permet de s’assurer que la géométrie est conforme à la spécification de l’OGC telle que définie dans OpenGIS Implementation Standard for Geographic information – simple feature access – Part 1: common architecture.

  • Lorsque la géométrie d’une entité est réparée à l’aide de l’option OGC, les mises à jour ou modifications ultérieures peuvent entraîner la non-conformité de la géométrie avec la spécification de l’OGC.

    Lorsqu’une entité est modifiée, exécutez à nouveau l’outil Vérifier les géométries pour rechercher d’éventuels nouveaux problèmes de géométrie. Si nécessaire, exécutez l’outil Réparer les géométries.

  • Les géométries validées ou réparées à l’aide de l’option OGC sont valides pour l’option Esri. Pour en savoir plus sur ces deux méthodes, reportez-vous à la rubrique Description d’un polygone simple.

  • Les problèmes identifiés par cet outil peuvent être résolus des façons suivantes :

    • Mettez à jour et réparez manuellement l'entité comportant les problèmes de géométrie. Certains problèmes ne peuvent pas être résolus via une mise à jour.
    • Utilisez l’outil Réparer les géométries. Il est possible que certains problèmes associés aux données stockées dans une base de données d’entreprise, une géodatabase d’entreprise, un GeoPackage ou une base de données SpatiaLite ne puissent pas être résolus avec les outils ArcGIS.
  • La valeur du paramètre Table en sortie contient les champs suivants :

    • CLASS : Chemin complet et nom de la classe d'entités dans laquelle le problème a été détecté.
    • FEATURE_ID: identifiant de l'entité (FID) ou identifiant d'objet (OID) de l'entité avec le problème de géométrie.
    • TEXT_ID : ce champ n’existe que lorsque les valeurs Entités en entrée sont stockées dans une base de données d’entreprise, une géodatabase d’entreprise, un GeoPackage ou une base de données SpatiaLite.
    • PROBLEM : Courte description du problème.
  • Le champ PROBLEM contient l’un des codes suivants :

    • Short segment : certains segments sont d'une longueur inférieure à celle autorisée par les unités système de la référence spatiale associée à la géométrie.
    • Null geometry : l’entité n’a pas de géométrie ou le champ SHAPE est vide.
    • Incorrect ring ordering : le polygone est simple d'un point de vue topologique, mais ses boucles peuvent ne pas être orientées correctement (boucles externes dans le sens horaire, boucles internes dans le sens anti-horaire).
    • Incorrect segment orientation : des segments particuliers ne sont pas orientés de manière cohérente. Le point d'arrivée du segment i doit correspondre au point de départ du segment i+1.
    • Self intersections : un polygone ne doit pas être auto-sécant.
    • Unclosed rings : le point d'arrivée du dernier segment dans une boucle doit correspondre au point de départ du premier segment.
    • Empty parts : la géométrie comporte plusieurs parties et l’une d’elles est vide (n’a aucune géométrie).
    • Duplicate vertex : la géométrie comporte deux sommets séquentiels ou plus ayant des coordonnées identiques.
    • Mismatched attributes : la coordonnée Z ou M de l’extrémité d’un segment de ligne ne correspond pas à la coordonnée Z ou M de l’extrémité coïncidente sur le segment suivant.
    • Discontinuous parts : une des parties de la géométrie est composée de parties déconnectées ou discontinues.
    • Empty Z values : la géométrie présente un ou plusieurs sommets incluant une valeur Z vide (NaN, par exemple).
    • Bad envelope : l'enveloppe ne correspond pas à l'étendue des coordonnées de la géométrie.
    • Bad dataset extent : la propriété d'étendue du jeu de données ne contient pas toutes les entités du jeu de données. Ce problème est indiqué par une valeur FEATURE_ID de -1.

    Pour les données stockées dans des géodatabases d’entreprise, le champ PROBLEM contiendra l’un des codes suivants :

    • NEEDS_REORDERING : la forme doit être réorganisée ou des points doubles être supprimés.
    • SE_INVALID_ENTITY_TYPE : le type d’entité n’est pas valide.
    • SE_SHAPE_INTEGRITY_ERROR : une erreur d’intégrité de forme s’est produite.
    • SE_INVALID_SHAPE_OBJECT : la poignée de l'objet de forme n'est pas valide.
    • SE_COORD_OUT_OF_BOUNDS : la coordonnée spécifiée dépasse la plage de coordonnées valide.
    • SE_POLY_SHELLS_OVERLAP : deux anneaux ou deux enveloppes externes sont superposé(e)s.
    • SE_TOO_FEW_POINTS : le nombre de points est inférieur à celui requis pour l'entité.
    • SE_INVALID_PART_SEPARATOR : un séparateur de pièce est dans la mauvaise position.
    • SE_INVALID_POLYGON_CLOSURE : un polygone ne se ferme pas correctement.
    • SE_INVALID_OUTER_SHELL : une enveloppe externe de polygone n'enferme pas tous les anneaux pour la pièce.
    • SE_ZERO_AREA_POLYGON : une enveloppe de polygone n'a pas de surface.
    • SE_POLYGON_HAS_VERTICAL_LINE : une enveloppe de polygone contient une ligne verticale.
    • SE_OUTER_SHELLS_OVERLAP : certaines pièces d’une zone multipièces sont superposées.
    • SE_SELF_INTERSECTING : une chaîne de lignes ou une limite poly s’intersecte elle-même.

Paramètres

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

Classe d’entités ou couche à traiter.

Licence :

Avec une licence Desktop Basic, vous pouvez uniquement utiliser des shapefiles et des classes d’entités stockées dans une géodatabase fichier, un GeoPackage ou une base de données SpatiaLite en tant que formats d’entités en entrée valides. Avec une licence Desktop Standard ou Desktop Advanced, vous pouvez également utiliser des classes d’entités stockées dans une base de données ou une géodatabase d’entreprise en tant que formats d’entités en entrée valides.

Feature Layer
Table en sortie
(Facultatif)

Le rapport (sous forme de table) des problèmes découverts.

Table
Méthode de validation
(Facultatif)

Indique la méthode de validation de la géométrie utilisée pour identifier les problèmes de géométrie.

  • EsriLa méthode de validation de la géométrie d’Esri est utilisée. Il s’agit de l’option par défaut.
  • OGCLa méthode de validation de la géométrie de l’OGC est utilisée.
String

Sortie obtenue

ÉtiquetteExplicationType de données
Contient des erreurs de géométrie

Indique si l’outil a identifié tout problème de géométrie.

Boolean

arcpy.management.CheckGeometry(in_features, {out_table}, {validation_method})
NomExplicationType de données
in_features
[in_features,...]

Classe d’entités ou couche à traiter.

Licence :

Avec une licence Desktop Basic, vous pouvez uniquement utiliser des shapefiles et des classes d’entités stockées dans une géodatabase fichier, un GeoPackage ou une base de données SpatiaLite en tant que formats d’entités en entrée valides. Avec une licence Desktop Standard ou Desktop Advanced, vous pouvez également utiliser des classes d’entités stockées dans une base de données ou une géodatabase d’entreprise en tant que formats d’entités en entrée valides.

Feature Layer
out_table
(Facultatif)

Le rapport (sous forme de table) des problèmes découverts.

Table
validation_method
(Facultatif)

Indique la méthode de validation de la géométrie utilisée pour identifier les problèmes de géométrie.

  • ESRILa méthode de validation de la géométrie d’Esri est utilisée. Il s’agit de l’option par défaut.
  • OGCLa méthode de validation de la géométrie de l’OGC est utilisée.
String

Sortie obtenue

NomExplicationType de données
problems_found

Indique si l’outil a identifié tout problème de géométrie.

Boolean

Exemple de code

Exemple 1 d'utilisation de l'outil CheckGeometry (fenêtre Python)

Le script de fenêtre Python suivant montre comment utiliser la fonction CheckGeometry en mode immédiat dans une géodatabase fichier.


import arcpy
arcpy.env.workspace = "c:/data/data.gdb"
arcpy.management.CheckGeometry(["contours", "roads", "vegetation"], "CheckGeom_Result")
Exemple 2 d'utilisation de l'outil CheckGeometry (script autonome)

Le script autonome suivant utilise la fonction CheckGeometry en faisant une boucle sur toutes les classes d'entités dans une géodatabase fichier.

# BatchCheckGeometry.py
# Description: Loop through all the feature classes in a geodatabase, and 
#              generate a report of the problems encountered with feature 
#              geometry.

# Import modules
import arcpy
import os

# The geodatabase in which the feature classes will be checked
arcpy.env.workspace = "C:\\data\\St_Lucia.gdb"
out_table = "checkGeometryResult"
 
# A variable that will hold the list of all the feature classes 
# in the geodatabase
fc_list = []

# Identify all feature classes in the geodatabase
for path, dirnames, fcs in arcpy.da.Walk(arcpy.env.workspace, 
                                         datatype='FeatureClass'):
    for fc in fcs:
        fc_list.append(os.path.join(path, fc))
        
print("Running the check geometry tool on {} feature classes".format(
    len(fc_list)))
arcpy.management.CheckGeometry(fc_list, out_table)

print("{} geometry problems found, see {} for details.".format(
    arcpy.management.GetCount(out_table)[0], out_table))
Exemple 3 d’utilisation de l’outil CheckGeometry (script autonome)

Le script suivant utilise la fonction CheckGeometry et vérifie la sortie dérivée pour déterminer si un problème a été détecté.


import arcpy

result = arcpy.management.CheckGeometry('c:/data/data.gdb/badgeometryfc')
if result[1] == 'true':
    # Geometry problems found, print the tool messages.
    print(result.getMessages())

else:
    # No problems found
    print("No problems Found")

Environnements

Cas particuliers

Facteur de traitement parallèle

Si l’environnement n’est pas défini (comportement par défaut) ou s’il est défini sur 0, le traitement parallèle est désactivé. S’il est défini sur 100, l’outil tente de répartir les tâches sur tous les cœurs logiques de la machine. Si vous spécifiez un facteur compris entre 1 et 99, l’outil identifie le pourcentage de cœurs logiques à utiliser en appliquant la formule (Facteur de traitement parallèle / 100 * Cœurs logiques) arrondie à l’entier supérieur le plus proche. Si le résultat de cette formule est 0 ou 1, le traitement parallèle n’est pas activé.