Résumé
Examine chaque entités d'une classe d'entités à la recherche de problèmes de géométrie. Si un problème de géométrie est découvert, une solution pertinente est appliquée et une description d'une ligne est imprimée, identifiant l'entité ainsi que le problème rencontré.
Les entrées valides sont des fichiers de formes et des classes d'entités de géodatabase fichier et personnelle.
En savoir plus sur la vérification et la réparation des géométries
Utilisation
Cet outil utilise la même logique que l'outil Vérifier les géométries pour évaluer les problèmes de la géométrie de l'entité.
Vous trouverez ci-dessous la liste des problèmes de géométrie et la solution correspondante qui sera appliquée par l'outil :
- Null geometry : l'enregistrement sera supprimé de la classe d'entités. Pour conserver des enregistrements avec une géométrie nulle, désactivez l'option Supprimer les entités de géométrie nulle (utilisez l'option KEEP_NULL du paramètre delete_null dans Python).
- Short segment : le segment court de la géométrie sera supprimé.
- Incorrect ring ordering : la géométrie est mise à jour de façon que l'organisation des boucles soit correcte.
- Incorrect segment orientation : la géométrie est mise à jour de façon que l'orientation des segments soit correcte.
- Self intersections : les surfaces de superposition dans un polygone seront fusionnées.
- Unclosed rings : les boucles non fermées seront fermées en connectant les extrémités de la boucle.
- Empty parts : les parties qui sont nulles ou vides seront supprimées.
- Duplicate vertex : un des sommets sera supprimé.
- Mismatched attributes : la coordonnée Z ou M sera mise à jour pour appariement.
- 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é est mise à jour pour être correcte.
Après avoir appliqué un des correctifs répertoriés ci-dessus, l'outil réévalue la géométrie qui en résulte et si un autre problème est découvert, la solution pertinente est appliquée. Par exemple, la correction d'une géométrie avec le problème Incorrect ring ordering peut produire une géométrie présentant le problème Null geometry.
L'outil Réparer les géométries ne propose aucun correctif pour le problème bad dataset extent. Pour résoudre ce problème, exécutez l'outil Ajouter un index spatial sur le jeu de données.
Les géodatabases SDE vérifient automatiquement et répare les géométries d'entité lorsque les entités sont téléchargées dans la base de données ; par conséquent, l'utilisation des outils Vérifier les géométries et Réparer les géométries avec les classes d'entités SDE est inutile.
Syntaxe
RepairGeometry_management (in_features, {delete_null})
Paramètre | Explication | Type de données |
in_features | Classe ou couche d'entités à réparer. Les entités en entrée valides sont des fichiers de formes et des classes d'entités de géodatabase fichier et personnelle. | Feature Layer |
delete_null (Facultatif) | Spécifie quelle action entreprendre sur des géométries nulles.
| Boolean |
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.
import arcpy
arcpy.RepairGeometry_management ("c:/data/sketchy.shp")
Exemple 2 d'utilisation de l'outil RepairGeometry (script autonome)
Le script autonome ci-dessous est un exemple d'application de la fonction RepairGeometry pour 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
- ArcGIS Desktop Basic: Oui
- ArcGIS Desktop Standard: Oui
- ArcGIS Desktop Advanced: Oui