Zusammenfassung
Überprüft jedes Feature in einer Feature-Class auf Geometrieprobleme. Wenn ein Problem gefunden wird, wird es repariert, und in einer einzeiligen Beschreibung werden das Feature und das reparierte Geometrieproblem identifiziert.
Dieses Werkzeug verwendet zum Reparieren von Geometrieproblemen die gleiche Logik wie das Werkzeug "Geometrie überprüfen".
Weitere Informationen zum Überprüfen und Reparieren von Geometrien
Verwendung
Das Werkzeug repariert die folgenden Geometrieprobleme:
- Null geometry: Der Datensatz wird aus der Feature-Class gelöscht. Um Datensätze mit NULL-Geometrie beizubehalten, deaktivieren Sie den Parameter Features mit NULL-Geometrie löschen (delete_null = "KEEP_NULL" in Python).
- Short segment: Das kurze Segment der Geometrie wird gelöscht.
- Incorrect ring ordering: Die Geometrie wird mit der richtigen Ringanordnung aktualisiert.
- Incorrect segment orientation: Die Geometrie wird mit einer richtigen Segmentausrichtung aktualisiert.
- Self intersections: Die Überlappungsflächen in einem Polygon werden zusammengeführt.
- Unclosed rings: Offene Ringe werden durch Verbindung ihrer Endpunkte geschlossen.
- Empty parts: Teile ohne Wert oder mit NULL-Wert werden gelöscht.
- Duplicate vertex: Einer der Stützpunkte wird gelöscht.
- Mismatched attributes: Die Z- oder M-Koordinate wird aktualisiert, damit sie übereinstimmt.
- Discontinuous parts: Aus einem diskontinuierlichen Abschnitt werden mehrere Abschnitte gebildet.
- Empty Z values: Der Z-Wert wird auf 0 festgelegt.
- Bad envelope: Der Envelope des Features wird zwecks Korrektur aktualisiert.
Nach der Reparatur wertet das Werkzeug die resultierende Geometrie erneut aus. Treten erneut Probleme auf, werden auch diese repariert. Das Ergebnis der Reparatur einer Geometrie mit dem Problem Incorrect ring ordering kann zu einer Geometrie mit dem Problem Null geometry führen.
Das Problem Bad dataset extent kann mit diesem Werkzeug nicht repariert werden. Führen Sie das Werkzeug Feature-Class-Ausdehnung neu berechnen für das Dataset aus, um dieses Problem zu lösen.
Feature-Geometrien werden durch Enterprise-Geodatabases regelmäßig überprüft und repariert, wenn die Features in die Datenbank hochgeladen werden. Daher ist die Verwendung der Werkzeuge Geometrie überprüfen und Geometrie reparieren bei Enterprise-Feature-Classes nicht erforderlich.
Syntax
arcpy.management.RepairGeometry(in_features, {delete_null})
Parameter | Erklärung | Datentyp |
in_features | Die zu verarbeitende Feature-Class bzw. der zu bearbeitende Feature-Layer. | Feature Layer |
delete_null (optional) | Legt fest, ob Features mit NULL-Geometrie gelöscht werden.
| Boolean |
Abgeleitete Ausgabe
Name | Erklärung | Datentyp |
out_feature_class | Die aktualisierten Eingabe-Features. | Feature Layer |
Codebeispiel
RepairGeometry: Beispiel 1 (Python-Fenster)
Das folgende Skript für das Python-Fenster veranschaulicht, wie die Funktion RepairGeometry im unmittelbaren Modus verwendet wird.
import arcpy
arcpy.RepairGeometry_management("c:/data/sketchy.shp")
RepairGeometry: Beispiel 2 (eigenständiges Skript)
Das folgende eigenständige Skript ist ein Beispiel für die Anwendung der Funktion RepairGeometry in einer Skriptumgebung.
# 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)
Umgebungen
Lizenzinformationen
- Basic: Ja
- Standard: Ja
- Advanced: Ja