Réparer les géométries (Gestion des données)
Récapitulatif
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 si une géométrie a un problème.
-
Vous trouverez ci-dessous la liste des problèmes de géométrie et la solution correspondante qui sera appliquée par l'outil :
- Géométrie nulle : 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 dans la boîte de dialogue de l'outil ou, dans l'écriture de script, définissez le paramètre delete_null sur KEEP_NULL.
- Segment court : le segment court de la géométrie sera supprimé.
- Organisation des boucles incorrecte : la géométrie sera mise à jour pour que l'organisation des boucles soit correcte.
- Orientation des segments incorrecte : la géométrie sera mise à jour pour avoir une orientation de segment correcte.
- Auto-intersections : les surfaces de superposition dans un polygone seront fusionnées.
- Boucles non fermées : les boucles non fermées seront fermées en connectant les extrémités de la boucle.
- Parties vides : les parties qui sont nulles ou vides seront supprimées.
- Sommet dupliqué : l'un des sommets sera supprimé.
- Disparité entre les attributs : la coordonnée Z ou M sera mise à jour pour appariement.
- Composantes discontinues : plusieurs parties seront créées à partir de la partie discontinue existante.
- Valeurs Z vides : la valeur Z sera définie sur 0.
-
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.
-
Après avoir appliqué l'une des réparations 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.
A partir de la version 10.0, une géométrie de ligne n'est plus considérée comme en "auto-intersection" si elle se croise elle-même. Ces types de géométrie ne présentaient pas d'effet négatif, par conséquent l'outil Vérifier les géométries n'indiquera plus l'entité en tant que problème et l'outil Réparer les géométries n'effectuera plus de "réparation" sur la géométrie de l'entité. Avant la version 10.0, l'outil Réparer les géométries ajoutait des sommets au point d'intersection des lignes en "auto-intersection". Si vous souhaitez ajouter des sommets lorsque les entités linéaires se croisent elles-mêmes, utilisez l'outil Intégrer.
Cet outil modifie les données en entrée. Reportez-vous à la rubrique Outils sans sortie pour obtenir plus d'informations, ainsi que des stratégies pour éviter les mouvements de données indésirables.
Syntaxe
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
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")
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
# Author: ESRI
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)