Zusammenfassung
Überprüft jedes Feature in einer Feature-Class auf Geometrieprobleme. Bei Feststellung eines Geometrieproblems wird eine Problemlösung angewendet und eine einzeilige Beschreibung identifiziert das Feature und das behobene Geometrieproblem.
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
Gültige Eingabeformate sind in einer File- oder Enterprise-Geodatabase gespeicherte Shapefiles und Feature-Classes. Für Feature-Classes, die in einer Enterprise-Geodatabase gespeichert sind, werden die folgenden räumlichen Datentypen unterstützt:
- Microsoft SQL Server Geometry und Geography
- PostgreSQL PostGIS Geometry und Geography
- Oracle SDO Geometry
Die Umschaltfläche Rückgängig aktivieren kann nicht auf Eingaben aus einer Enterprise-Geodatabase angewendet werden.
Nachfolgend finden Sie eine Liste mit Geometrieproblemen und der entsprechenden Korrektur, die mit dem Werkzeug durchgeführt wird:
- Null geometry: Der Datensatz wird aus der Feature-Class gelöscht. Um Datensätze mit NULL-Geometrie beizubehalten, deaktivieren Sie die Option Features mit NULL-Geometrie löschen (verwenden Sie die Option KEEP_NULL im Parameter delete_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.
Nachfolgend werden Geometrieprobleme aufgrund der Speicherung von Daten in einer Enterprise-Geodatabase sowie die entsprechende vom Werkzeug durchgeführte Korrektur aufgeführt:
- NEEDS_REORDERING: Das Shape wird neu angeordnet, und doppelte Punkte werden entfernt.
- SE_INVALID_ENTITY_TYPE: Eine Reparatur ist nicht möglich (das Feature muss gelöscht werden).
- SE_SHAPE_INTEGRITY_ERROR: Eine Reparatur ist nicht immer möglich.
- SE_INVALID_SHAPE_OBJECT: Eine Reparatur ist nicht immer möglich.
- SE_COORD_OUT_OF_BOUNDS: Eine Reparatur ist nicht möglich.
- SE_POLY_SHELLS_OVERLAP: Überlappende Hüllen werden zusammengeführt.
- SE_TOO_FEW_POINTS: Eine Reparatur ist nicht möglich.
- SE_INVALID_PART_SEPARATOR: Eine Reparatur ist nicht immer möglich.
- SE_INVALID_POLYGON_CLOSURE: Nicht geschlossene Hüllen werden verworfen (das resultierende Polygon kann leer bleiben).
- SE_INVALID_OUTER_SHELL: Es wird versucht, die äußeren Hüllen des Features zu reparieren. Dabei werden möglicherweise Hüllen verworfen.
- SE_ZERO_AREA_POLYGON: Konvertierung in ein leeres Shape.
- SE_POLYGON_HAS_VERTICAL_LINE: Die vertikale Linie wird entfernt (das Shape wird möglicherweise in 2D konvertiert).
- SE_OUTER_SHELLS_OVERLAP: Überlappende Teile werden zusammengeführt.
- SE_SELF_INTERSECTING: Gegebenenfalls werden Schnittpunkte hinzugefügt.
Hinweis:
Einige Probleme in Verbindung mit Daten, die in einer Enterprise-Datenbank gespeichert werden, können möglicherweise mit ArcGIS-Werkzeugen repariert werden.
Nachdem eine Korrekturmaßnahme durchgeführt wurde, wertet das Werkzeug die resultierende Geometrie erneut aus. Treten erneut Probleme auf, werden auch diese behoben. Das Ergebnis der Behebung 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 Geometrie reparieren nicht behoben werden. Führen Sie das Werkzeug Feature-Class-Ausdehnung neu berechnen für das Dataset aus, um dieses Problem zu lösen.
Die Validierungsmethode von Esri stellt mithilfe der Vereinfachungsmethode von Esri sicher, dass die Geometrie topologisch zulässig ist. Für Daten, die in einer Enterprise-Geodatabase gespeichert sind, ist nur die Esri-Validierung verfügbar.
Mit der Validierungsmethode des Open Geospatial Consortium (OGC) wird sichergestellt, dass die Geometrie der unter OpenGIS Implementation Standard for Geographic information - Simple feature access - Part 1: Common architecture definierten OGC-Spezifikation entspricht.
Nachdem die Geometrie eines Features mit der Option OGC repariert wurde, können nachfolgende Bearbeitungen oder Änderungen dazu führen, dass die Geometrie der OGC-Spezifikation nicht mehr entspricht. Führen Sie nach der Änderung des Features das Werkzeug Geometrie überprüfen aus, um zu ermitteln, ob neue Geometrieprobleme vorliegen. Führen Sie das Werkzeug Geometrie reparieren ggf. erneut aus.
Die OGC-Vereinfachung unterstützt keine nicht linearen Segmente wie Bézier-Kurven, Kreisbögen und elliptische Bögen. Diese Segmenttypen müssen mit dem Werkzeug Verdichten im Eingabe-Dataset verdichtet werden, bevor Geometrie reparieren ausgeführt wird. Um bei der Ausführung des Werkzeugs Verdichten irreversible Änderungen an nicht linearen Segmenten zu vermeiden, erstellen Sie zunächst eine Kopie der Daten. Wenden Sie dann Geometrie reparieren auf die Kopie an. Um zu ermitteln, ob Ihre Daten nicht lineare Segmente aufweisen, verwenden Sie das Werkzeug Geometrieattribute hinzufügen.
Vorsicht:
Mit diesem Werkzeug werden die Eingabedaten geändert. Weitere Informationen und Strategien zur Vermeidung unerwünschter Datenänderungen finden Sie unter Werkzeuge, die Eingabedaten ändern oder aktualisieren.
Syntax
arcpy.management.RepairGeometry(in_features, {delete_null}, {validation_method})
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.
Hinweis:Für Eingaben aus einer Enterprise-Geodatabase ist nur KEEP_NULL gültig. | Boolean |
validation_method (optional) | Legt fest, welche Geometrievalidierungsmethode zum Identifizieren von Geometrieproblemen verwendet wird.
| String |
Abgeleitete Ausgabe
Name | Erklärung | Datentyp |
out_feature_class | Die aktualisierten Eingabe-Features. | Feature-Layer |
Codebeispiel
Das folgende Skript für das Python-Fenster veranschaulicht, wie die Funktion RepairGeometry im unmittelbaren Modus für ein Shapefile 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 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