Geometrie überprüfen (Datenmanagement)

Zusammenfassung

Generiert einen Bericht über Geometrieprobleme in einer Feature-Class.

Weitere Informationen zu Geometrieproblemen, ihren Auswirkungen auf die Software und möglichen Quellen finden Sie im Abschnitt Werkzeuge zum Überprüfen und Reparieren von Geometrien.

Verwendung

  • Gültige Eingabeformate sind Shapefiles und Feature-Classes, die in einer File-Geodatabase, Enterprise-Datenbank, Enterprise-Geodatabase, einem GeoPackage oder einer SpatiaLite-Datenbank gespeichert sind. Für Feature-Classes, die in einer Enterprise-Datenbank oder 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
    • SAP HANA: ST_Geometry

    Lizenz:

    Mit einer Desktop Basic-Lizenz können Sie dieses Werkzeug nur auf Shapefiles und Feature-Classes, die in einer File-Geodatabase, einem GeoPackage oder einer SpatiaLite-Datenbank gespeichert sind, anwenden. Mit einer Desktop Standard- oder Desktop Advanced-Lizenz können Sie dieses Werkzeug auch auf Feature-Classes anwenden, die in einer Enterprise-Datenbank oder Enterprise-Geodatabase gespeichert sind.

  • Feature-Classes, die in einer Enterprise-Geodatabase gespeichert und als versioniert registriert sind, werden nicht unterstützt.

  • Der Parameterwert für Ausgabetabelle enthält einen Datensatz für jedes erkannte Geometrieproblem. Wenn keine Probleme gefunden werden, ist die Tabelle leer.

  • Der Inhalt des Parameterwertes Ausgabetabelle, darunter auch die PROBLEM-Feldcodes, ist in Englisch.

  • Bei Punkt-Features treten möglicherweise nur Probleme mit NULL-Geometrie auf.

  • Zur Überprüfung der Features, für die Geometrieprobleme gemeldet werden, können Sie den Parameterwert von Eingabe-Features mit dem Parameterwert von Ausgabetabelle verbinden, indem Sie das Werkzeug Verbindung hinzufügen zusammen mit dem Feld OBJECTID oder FID der Eingabe und dem Feld FEATURE_ID der Ausgabetabelle verwenden. Wenn einer der Parameterwerte für Eingabe-Features in einer Enterprise-Datenbank oder -Geodatabase, in einem GeoPackage oder einer SpatiaLite-Datenbank gespeichert sind, enthält die Ausgabetabelle ebenfalls das Feld TEXT_ID. Es wird für OBJECTID-Spalten verwendet, die nicht auf ganzzahligen Werten basieren.

  • Die Validierungsoption von Esri stellt mithilfe der Vereinfachungsmethode von Esri sicher, dass die Geometrie topologisch korrekt 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 erneut aus, um zu ermitteln, ob neue Geometrieprobleme vorliegen. Führen Sie ggf. das Werkzeug Geometrie reparieren aus.

  • Die mit der Option OGC validierte oder reparierte Geometrie ist für die Option Esri gültig. Weitere Informationen zu beiden Methoden finden Sie unter What is a simple polygon.

  • Die von diesem Werkzeug erkannten Probleme können wie folgt behoben werden:

    • Bearbeiten und korrigieren Sie das Feature mit den Geometrieproblemen. Einige der Probleme können nicht durch Bearbeitung behoben werden.
    • Verwenden Sie das Werkzeug Geometrie reparieren. Einige Probleme in Verbindung mit Daten, die in einer Enterprise-Datenbank oder -Geodatabase, einem GeoPackage und einer SpatiaLite-Datenbank gespeichert sind, können möglicherweise nicht mit ArcGIS-Werkzeugen repariert werden.
  • Der Parameterwert für Ausgabetabelle enthält die folgenden Felder:

    • CLASS: Der vollständige Pfad und Name der Feature-Class, in der das Problem aufgetreten ist.
    • FEATURE_ID: Die Feature-ID (FID) oder Objekt-ID (OID) des Features mit dem Geometrieproblem.
    • TEXT_ID: Dieses Feld ist nur vorhanden, wenn die Werte für Eingabe-Features in einer Enterprise-Datenbank oder -Geodatabase, einem GeoPackage oder einer SpatiaLite-Datenbank gespeichert sind.
    • PROBLEM: Eine kurze Beschreibung des Problems.
  • Das Feld PROBLEM enthält einen der folgenden Codes:

    • Short segment: Einige Segmente sind kürzer, als es aufgrund der Systemeinheiten des mit der Geometrie verknüpften Raumbezugs zulässig ist.
    • Null geometry: Das Feature besitzt keine Geometrie bzw. das Feld SHAPE ist leer.
    • Incorrect ring ordering: Das Polygon ist topologisch einfach, aber die Ringe sind nicht korrekt ausgerichtet (äußere Ringe im Uhrzeigersinn, innere Ringe gegen den Uhrzeigersinn).
    • Incorrect segment orientation: Einzelne Segmente sind nicht einheitlich ausgerichtet. Der Bis-Punkt des Segments i muss mit dem Von-Punkt des Segments i+1 übereinstimmen.
    • Self intersections: Ein Polygon darf sich nicht selbst schneiden.
    • Unclosed rings: Der Bis-Punkt des letzten Segments in einem Ring muss mit dem Von-Punkt des ersten Segments übereinstimmen.
    • Empty parts: Die Geometrie besteht aus mehreren Teilen, von denen eines leer ist (über keine Geometrie verfügt).
    • Duplicate vertex: Die Geometrie hat zwei oder mehr fortlaufende Stützpunkte mit identischen Koordinaten.
    • Mismatched attributes: Die Z- oder die M-Koordinate des Endpunktes eines Liniensegments stimmt nicht mit der Z- oder der M-Koordinate des lagegleichen Endpunktes auf dem nächsten Segment überein.
    • Discontinuous parts: Einer der Teile der Geometrie besteht aus getrennten oder diskontinuierlichen Abschnitten.
    • Empty Z values: Die Geometrie weist einen oder mehrere Stützpunkte mit leerem Z-Wert auf (z. B. NaN).
    • Bad envelope: Der Envelope stimmt nicht mit der Koordinatenausdehnung der Geometrie überein.
    • Bad dataset extent: Die Ausdehnungseigenschaft des Datasets enthält nicht alle Features im Dataset. Bei diesem Problem ist der Wert FEATURE_ID gleich -1.

    Für Daten in Enterprise-Geodatabases enthält das Feld PROBLEM nur einen der folgenden Codes:

    • NEEDS_REORDERING: Das Shape muss neu angeordnet oder doppelte Punkte müssen entfernt werden.
    • SE_INVALID_ENTITY_TYPE: Der Entitätstyp ist ungültig.
    • SE_SHAPE_INTEGRITY_ERROR: Es ist ein Fehler bei der Shape-Integrität aufgetreten.
    • SE_INVALID_SHAPE_OBJECT: Der Shape-Objekt-Handle ist ungültig.
    • SE_COORD_OUT_OF_BOUNDS: Die angegebene Koordinate überschreitet den gültigen Koordinatenbereich.
    • SE_POLY_SHELLS_OVERLAP: Zwei Kreisringe oder zwei äußere Hüllen überlappen sich.
    • SE_TOO_FEW_POINTS: Die Anzahl der Punkte ist geringer, als für das Feature erforderlich.
    • SE_INVALID_PART_SEPARATOR: Ein Teil-Trennzeichen befindet sich in falscher Position.
    • SE_INVALID_POLYGON_CLOSURE: Ein Polygon schließt nicht richtig.
    • SE_INVALID_OUTER_SHELL: Die äußere Hülle eines Polygons umschließt nicht alle Kreisringe für das Teil vollständig.
    • SE_ZERO_AREA_POLYGON: Eine Polygonhülle hat keine Fläche.
    • SE_POLYGON_HAS_VERTICAL_LINE: Eine Polygonhülle enthält eine vertikale Linie.
    • SE_OUTER_SHELLS_OVERLAP: Eine Multipart-Fläche weist überlappende Teile auf.
    • SE_SELF_INTERSECTING: Ein Polygonzug oder eine Polygrenze schneidet sich selbst.

Parameter

BeschriftungErläuterungDatentyp
Eingabe-Features

Die zu verarbeitende Feature-Class bzw. der zu bearbeitende Feature-Layer.

Lizenz:

Bei einer Desktop Basic-Lizenz sind nur Shapefiles und Feature-Classes, die in einer File-Geodatabase, einem GeoPackage oder einer SpatiaLite-Datenbank gespeichert sind, gültige Formate für Eingabe-Features. Mit einer Desktop Standard- oder Desktop Advanced-Lizenz können auch Feature-Classes, die in einer Enterprise-Datenbank oder Enterprise-Geodatabase gespeichert sind, als gültige Formate für Eingabe-Features verwendet werden.

Feature Layer
Ausgabetabelle
(optional)

Der Bericht (in Tabellenform) zu den erkannten Problemen.

Table
Überprüfungsmethode
(optional)

Legt fest, welche Geometrievalidierungsmethode zum Identifizieren von Geometrieproblemen verwendet wird.

  • EsriEs wird die Geometrievalidierungsmethode von Esri verwendet. Dies ist die Standardeinstellung.
  • OGCEs wird die Geometrievalidierungsmethode des OGC verwendet.
String

Abgeleitete Ausgabe

BeschriftungErläuterungDatentyp
Enthält Geometriefehler

Zeigt an, ob das Werkzeug Geometrieprobleme festgestellt hat.

Boolean

arcpy.management.CheckGeometry(in_features, {out_table}, {validation_method})
NameErläuterungDatentyp
in_features
[in_features,...]

Die zu verarbeitende Feature-Class bzw. der zu bearbeitende Feature-Layer.

Lizenz:

Bei einer Desktop Basic-Lizenz sind nur Shapefiles und Feature-Classes, die in einer File-Geodatabase, einem GeoPackage oder einer SpatiaLite-Datenbank gespeichert sind, gültige Formate für Eingabe-Features. Mit einer Desktop Standard- oder Desktop Advanced-Lizenz können auch Feature-Classes, die in einer Enterprise-Datenbank oder Enterprise-Geodatabase gespeichert sind, als gültige Formate für Eingabe-Features verwendet werden.

Feature Layer
out_table
(optional)

Der Bericht (in Tabellenform) zu den erkannten Problemen.

Table
validation_method
(optional)

Legt fest, welche Geometrievalidierungsmethode zum Identifizieren von Geometrieproblemen verwendet wird.

  • ESRIEs wird die Geometrievalidierungsmethode von Esri verwendet. Dies ist die Standardeinstellung.
  • OGCEs wird die Geometrievalidierungsmethode des OGC verwendet.
String

Abgeleitete Ausgabe

NameErläuterungDatentyp
problems_found

Zeigt an, ob das Werkzeug Geometrieprobleme festgestellt hat.

Boolean

Codebeispiel

CheckGeometry: Beispiel 1 (Python-Fenster)

Das folgende Skript für das Python-Fenster veranschaulicht, wie die Funktion CheckGeometry im unmittelbaren Modus in einer File-Geodatabase verwendet wird:


import arcpy
arcpy.env.workspace = "c:/data/data.gdb"
arcpy.management.CheckGeometry(["contours", "roads", "vegetation"], "CheckGeom_Result")
CheckGeometry: Beispiel 2 (eigenständiges Skript)

Das folgende eigenständige Skript verwendet die Funktion CheckGeometry, wobei es alle Feature-Classes in einer File-Geodatabase durchläuft.

# BatchCheckGeometry.py
# Description: Loop through all the feature classes in a geodatabase, and 
#              generate a report of the problems encountered with feature 
#              geometry.

# Import modules
import arcpy
import os

# The geodatabase in which the feature classes will be checked
arcpy.env.workspace = "C:\\data\\St_Lucia.gdb"
out_table = "checkGeometryResult"
 
# A variable that will hold the list of all the feature classes 
# in the geodatabase
fc_list = []

# Identify all feature classes in the geodatabase
for path, dirnames, fcs in arcpy.da.Walk(arcpy.env.workspace, 
                                         datatype='FeatureClass'):
    for fc in fcs:
        fc_list.append(os.path.join(path, fc))
        
print("Running the check geometry tool on {} feature classes".format(
    len(fc_list)))
arcpy.management.CheckGeometry(fc_list, out_table)

print("{} geometry problems found, see {} for details.".format(
    arcpy.management.GetCount(out_table)[0], out_table))
CheckGeometry: Beispiel 3 (eigenständiges Skript)

Das folgende Skript verwendet die Funktion CheckGeometry und überprüft die abgeleitete Ausgabe, um festzustellen, ob Probleme gefunden wurden


import arcpy

result = arcpy.management.CheckGeometry('c:/data/data.gdb/badgeometryfc')
if result[1] == 'true':
    # Geometry problems found, print the tool messages.
    print(result.getMessages())

else:
    # No problems found
    print("No problems Found")

Umgebungen

Sonderfälle

Faktor für parallele Verarbeitung

Wenn die Umgebung nicht festgelegt ist (Standardeinstellung) oder auf 0 festgelegt ist, ist die parallele Verarbeitung deaktiviert. Wenn sie auf 100 festgelegt ist, versucht das Werkzeug, die Arbeitslast auf alle logischen Kerne des Computers zu verteilen. Wenn ein Faktor zwischen 1 und 99 festgelegt wird, identifiziert das Werkzeug den Prozentsatz der zu verwendenden logischen Kerne, indem die Formel (Faktor für parallele Verarbeitung / 100 * logische Kerne) auf die nächste ganze Zahl aufgerundet angewendet wird. Wenn das Ergebnis dieser Formel 0 oder 1 ist, wird die parallele Verarbeitung nicht aktiviert.