Geometrie reparieren (Data Management)
Zusammenfassung
Prüft alle Features einer Feature-Class auf Geometrieprobleme. Wird ein Geometrieproblem erkannt, wird eine Problemlösung angewendet, und eine einzeilige Beschreibung, aus der das Feature und das Problem hervorgehen, wird gedruckt.
Gültige Eingaben sind Shapefiles sowie Feature-Classes aus Personal- und File-Geodatabases.
Weitere Informationen zum Prüfen und Reparieren von Geometrien
Verwendung
-
Um Geometrieprobleme zu erkennen, wird bei diesem Werkzeug die gleiche Logik eingesetzt wie beim Werkzeug Geometrie überprüfen.
-
Unten sehen Sie eine Liste mit Geometrieproblemen und den mit dem Werkzeug vorgenommenen Reparaturmaßnahmen.
- Null-Geometrie: Der Datensatz wird aus der Feature-Class gelöscht. Sollen Datensätze mit Null-Geometrie behalten werden, deaktivieren Sie im Dialogfeld des Werkzeugs die Option Features mit Null-Geometrie löschen, oder setzen Sie bei der Skripterstellung den Parameter "delete_null" auf "KEEP_NULL".
- Kurzes Segment: Das kurze Segment der Geometrie wird gelöscht.
- Falsche Ringanordnung: Die Geometrie wird zwecks einer richtigen Ringanordnung aktualisiert.
- Falsche Segmentausrichtung: Die Geometrie wird zwecks einer richtigen Segmentausrichtung aktualisiert.
- Schnittpunkte mit sich selbst: Polygonflächen, die sich überschneiden, werden zusammengeführt.
- Offene Ringe: Offene Ringe werden durch Verbindung ihrer Endpunkte geschlossen.
- Leere Teile: Teile ohne Wert oder mit NULL-Wert werden gelöscht.
- Doppelter Stützpunkt: Einer der Stützpunkte wird gelöscht.
- Nicht übereinstimmende Attribute: Die Z- oder M-Koordinate wird zwecks einer Übereinstimmung aktualisiert.
- Diskontinuierliche Abschnitte: Aus einem diskontinuierlichen Abschnitt werden mehrere Abschnitte gebildet.
- Leere Z-Werte: Der Z-Wert wird auf 0 festgelegt.
-
Werden Features in SDE-Geodatabases hochgeladen, erfolgt automatisch eine Prüfung und Reparatur der Feature-Geometrien. Somit ist es im Zusammenhang mit SDE-Feature-Classes nicht notwendig, die Werkzeuge Geometrie überprüfen und Geometrie reparieren anzuwenden.
-
Nach Vornahme einer der oben genannten Reparaturmaßnahmen, wird die restliche Geometrie mithilfe des Werkzeugs erneut geprüft. Treten erneut Probleme auf, werden auch diese repariert.
Von der Version 10.0 an wird eine Liniengeometrie nicht mehr als "sich selbst schneidend" angesehen, wenn sie sich selbst kreuzt. Es gab keine negativen Auswirkungen auf diese Geometrietypen, daher meldet das Werkzeug Geometrie überprüfen das Feature nicht mehr als Problem, und das Werkzeug Geometrie reparieren führt keine Reparatur mehr an der Geometrie des Features aus. Vor der Version 10.0 fügte das Werkzeug Geometrie reparieren Stützpunkte am Schnittpunkt "sich selbst überschneidender" Linien hinzu. Falls Sie Stützpunkte hinzufügen möchten, wenn sich Linien-Features überschneiden, verwenden Sie das Werkzeug Integrieren.
Mit diesem Werkzeug werden die Eingabedaten geändert. Weitere Informationen und Strategien zur Vermeidung unerwünschter Datenänderungen finden Sie unter Werkzeuge ohne Ausgabe.
Syntax
Parameter | Erläuterung | Datentyp |
in_features |
Die zu reparierende Feature-Class bzw. der zu reparierende Layer. Gültige Eingabe-Features sind Shapefiles sowie Feature-Classes aus Personal- und File-Geodatabases. | Feature Layer |
delete_null (optional) |
Gibt an, was mit NULL-Geometrien geschehen soll.
| Boolean |
Codebeispiel
Mit dem folgenden Skript im Python-Fenster wird veranschaulicht, wie die Funktion "RepairGeometry" im unmittelbaren Modus verwendet wird.
import arcpy
arcpy.RepairGeometry_management ("c:/data/sketchy.shp")
Das folgende eigenständige Skript ist ein Beispiel für die Anwendung der Funktion "RepairGeometry" bei der Skripterstellung.
# 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)