Résumé
Inspecte chaque entité dans une classe d'entités à la recherche de problèmes géométriques. Si un problème est découvert, il est réparé 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
L’outil répare les problèmes de géométrie suivants :
- 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 (delete_null = "KEEP_NULL" dans Python).
- 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.
Une fois la réparation effectuée, l’outil réévalue la géométrie résultante et si un autre problème est découvert, la 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.
Le problème Bad dataset extent ne peut pas être réparé à l’aide de cet outil. Pour résoudre ce problème, exécutez l'outil Recalculer l'étendue de la classe d'entités sur le jeu de données.
Comme les géodatabases d’entreprise vérifient et réparent automatiquement les géométries des entités lorsque ces dernières sont chargées dans la base de données, il n’est pas nécessaire d’utiliser les outils Vérifier les géométries et Réparer les géométries avec des classes d’entités d’entreprise.
Syntaxe
arcpy.management.RepairGeometry(in_features, {delete_null})
Paramètre | Explication | Type de données |
in_features | La classe d'entités ou la couche à traiter. | Feature Layer |
delete_null (Facultatif) | Détermine si les entités de géométrie nulle seront supprimées.
| Boolean |
Sortie dérivée
Nom | Explication | Type 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 ci-dessous pour la fenêtre Python illustre l’utilisation de la fonction RepairGeometry en mode immédiat.
import arcpy
arcpy.RepairGeometry_management("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
Informations de licence
- Basic: Oui
- Standard: Oui
- Advanced: Oui