Réparer les géométries (Gestion des données)

Synthèse

Inspecte les entités afin de déceler les problèmes de géométrie éventuels et de les réparer. Si un problème est découvert, une réparation est effectuée et une description d’une ligne identifie l’entité ainsi que le problème de géométrie réparé.

Cet outil utilise la même logique que l’outil Vérifier les géométries pour résoudre les problèmes de géométrie.

Pour en savoir plus sur la vérification et la réparation des géométries

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.

  • 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.

  • Le bouton à bascule Activer l’annulation n’est pas valide pour les entrées issues d’une géodatabase d’entreprise.

  • Vous trouverez ci-dessous la liste des problèmes de géométrie et la réparation correspondante que l'outil appliquera :

    • Null geometry : l'enregistrement sera supprimé de la classe d'entités. Pour conserver les enregistrements avec une géométrie nulle, désélectionnez le paramètre Supprimer les entités de géométrie nulle.
    • Short segment : le segment court de la géométrie sera supprimé.
    • Incorrect ring ordering : la géométrie sera mise à jour conformément à l’ordre correct des boucles.
    • Incorrect segment orientation : la géométrie sera mise à jour conformément à la bonne orientation des segments.
    • Self intersections : les surfaces superposées dans un polygone seront fusionnées.
    • Unclosed rings : les boucles non fermées seront fermées en connectant les extrémités des boucles.
    • Empty parts : les parties dont la valeur est Null ou qui sont vides seront supprimées.
    • Duplicate vertex : un des sommets sera supprimé.
    • Mismatched attributes : la coordonnée z ou m sera mise à jour pour être appariée.
    • Discontinuous parts : plusieurs parties seront créées à partir de la partie discontinue existante.
    • Empty Z values : la valeur z sera définie sur 0.
    • Bad envelope : l'enveloppe de l'entité sera rectifiée.
    • Bad dataset extent : l’étendue de la classe d’entités sera rectifiée.

    Vous trouverez ci-dessous la liste des problèmes de géométrie liés aux données stockées dans une géodatabase d’entreprise et la réparation correspondante que l’outil applique :

    • NEEDS_REORDERING : la forme est réorganisée et les points dupliqués sont supprimés.
    • SE_INVALID_ENTITY_TYPE : le type d’entité n’est pas réparable (l’entité doit être supprimée).
    • SE_SHAPE_INTEGRITY_ERROR— : il est possible que la forme soit non réparable.
    • SE_INVALID_SHAPE_OBJECT : il est possible que l’objet forme soit non réparable.
    • SE_COORD_OUT_OF_BOUNDS : les coordonnées sont non réparables.
    • SE_POLY_SHELLS_OVERLAP : les enveloppes superposées sont fusionnées.
    • SE_TOO_FEW_POINTS : les points sont non réparables.
    • SE_INVALID_PART_SEPARATOR : il est possible que le séparateur de pièce soit non réparable.
    • SE_INVALID_POLYGON_CLOSURE : les enveloppes non fermées sont ignorées (le polygone final risque d’être vide).
    • SE_INVALID_OUTER_SHELL : une tentative de réparer les enveloppes extérieures de l’entité est réalisée ; les enveloppes peuvent être ignorées durant le traitement.
    • SE_ZERO_AREA_POLYGON : le polygone est converti en forme vide.
    • SE_POLYGON_HAS_VERTICAL_LINE : la ligne verticale est supprimée (la forme peut être convertie en 2D).
    • SE_OUTER_SHELLS_OVERLAP : les parties superposées sont fusionnées.
    • SE_SELF_INTERSECTING : les points d’intersection sont ajoutés au besoin.

    Remarque :

    Il est possible que certains problèmes associés aux données stockées dans une base de données d'entreprise ne puissent pas être résolus avec les outils ArcGIS.

  • Après avoir effectué une réparation, l'outil réévalue la géométrie qui en résulte et si un autre problème est découvert, une réparation appropriée est appliquée au problème. Par exemple, la réparation d’une géométrie qui présente le problème Incorrect ring ordering peut engendrer une géométrie qui présente le problème Null geometry.

  • 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 l’outil Vérifier les géométries pour rechercher d’éventuels nouveaux problèmes de géométrie. Si nécessaire, exécutez à nouveau 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.

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
Supprimer les entités de géométrie nulle
(Facultatif)

Détermine si les entités de géométrie nulle seront supprimées.

  • Activé : les entités de géométrie nulle seront supprimées de l’entrée. Il s’agit de l’option par défaut.
  • Désactivé : les entités de géométrie nulle ne seront pas supprimées de l’entrée.

Remarque :
La suppression des valeurs nulles n’est pas disponible pour les données stockées dans une base de données ou une géodatabase d’entreprise, GeoPackage ou dans une base de données SpatiaLite.

Boolean
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
Entités en entrée réparées

Entités en entrée mises à jour.

Feature Layer

arcpy.management.RepairGeometry(in_features, {delete_null}, {validation_method})
NomExplicationType de données
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
delete_null
(Facultatif)

Détermine si les entités de géométrie nulle seront supprimées.

  • DELETE_NULLLes entités de géométrie nulle seront supprimées de l’entrée. Il s’agit de l’option par défaut.
  • KEEP_NULLLes entités de géométrie nulle ne seront pas supprimées de l’entrée.

Remarque :
Seule l’option KEEP_NULL est valide pour les entrées provenant d’une base de données ou d’une géodatabase d’entreprise, de GeoPackage ou d’une base de données SpatiaLite.

Boolean
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
out_feature_class

Entités en entrée mises à jour.

Feature Layer

Exemple de code

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

Le script de fenêtre Python ci-dessous illustre l’utilisation de la fonction RepairGeometry en mode immédiat sur un fichier de formes :

import arcpy
arcpy.management.RepairGeometry("c:/data/sketchy.shp")
Exemple 2 d'utilisation de l'outil RepairGeometry (script autonome)

Le script autonome suivant est un exemple d'application de la fonction RepairGeometry dans l'écriture de scripts.

# Description: 
#   Goes through the table generated by the Check Geometry tool and does 
#   the following
#   1) backs-up all features which will be 'fixed' to a "_bad_geom" feature class
#   2) runs repairGeometry on all feature classes listed in the table 

import arcpy
import os
 
# Table that was produced by Check Geometry tool
table = r"c:\temp\data.gdb\cg_sample1"
 
# Create local variables
fcs = []
 
# Loop through the table and get the list of fcs
for row in arcpy.da.SearchCursor(table, ("CLASS")):
    # Get the class (feature class) from the cursor
    if not row[0] in fcs:
        fcs.append(row[0])
 
# Now loop through the fcs list, backup the bad geometries into fc + "_bad_geom"
# then repair the fc
print("> Processing {0} feature classes".format(len(fcs)))
for fc in fcs:
    print("Processing " + fc)
    lyr = 'temporary_layer'
    if arcpy.Exists(lyr):
        arcpy.Delete_management(lyr)
    
    tv = "cg_table_view"
    if arcpy.Exists(tv):
        arcpy.Delete_management(tv)

    arcpy.MakeTableView_management(table, tv, ("\"CLASS\" = '%s'" % fc))
    arcpy.MakeFeatureLayer_management(fc, lyr)
    arcpy.AddJoin_management(lyr, arcpy.Describe(lyr).OIDFieldName, tv, "FEATURE_ID")
    arcpy.CopyFeatures_management(lyr, fc + "_bad_geom")
    arcpy.RemoveJoin_management(lyr, os.path.basename(table))
    arcpy.RepairGeometry_management(lyr)

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é.

Rubriques connexes