HOW TO

Entfernen ungültiger Punkte mit ArcPy in ArcGIS Pro

Last Published: April 26, 2024

Zusammenfassung

In ArcGIS Pro sind Punkt-Features mit Datumsfeldern wichtig, um Muster im Zeitverlauf zu verfolgen. Es kommt vor, dass diese Punkte eine bestimmte Dauer für die Gültigkeit des Datums aufweisen und nicht mehr gültig sind. Sie werden dann nicht mehr auf der Karte angezeigt. Dies ist wichtig, um Verwirrung zu vermeiden und die Übersichtlichkeit der Daten zu verbessern, da ungültige Punkte zu Verwirrung führen und eine Fehlinterpretation der Daten zur Folge haben können.

In diesem Artikel wird der Workflow zum Entfernen ungültiger Punkte mithilfe von ArcPy in ArcGIS Pro beschrieben.

Vorgehensweise

Note:
This workflow requires a full script to run in the ArcGIS Pro Python window. All the indents are to be kept as portrayed in the code block.
  1. Öffnen Sie in ArcGIS Pro die Karte mit dem Punkt-Feature-Layer.
  2. Öffnen Sie das Python-Fenster. Weitere Informationen finden Sie unter ArcGIS Pro: Python-Fenster.
  3. Führen Sie das folgende Skript aus:
    1. Importieren Sie die erforderlichen Module.
import arcpy
import datetime
  1. Richten Sie den Workspace und die Point-Feature-Class ein. Ersetzen Sie "<pathToPointFc>" durch den Pfad der Point-Feature-Class. Ersetzen Sie "<featureClassName>" durch den Namen der Point-Feature-Class.
arcpy.env.workspace = r"<pathToPointFc>"
feature_class = "<featureClassName>"
  1. Legen Sie das Datumsfeld fest, das für die Überprüfung verwendet werden soll. Ersetzen Sie "<dateFieldName>" durch den Namen des Datumsfeldes.
date_field = "<dateFieldName>"
  1. Legen Sie den Schwellenwert des Datums fest, der für das Entfernen der ungültigen Punkte verwendet werden soll.
#If using the Date field type
threshold_date = datetime.datetime(YYYY, MM, DD)

#If using the Date Only field type
threshold_date = datetime.date(YYYY, MM, DD)
  1. Starten Sie die Editiersitzung und den Editiervorgang.
try:
    edit = arcpy.da.Editor(arcpy.env.workspace)
    edit.startEditing(False, True)

   edit.startOperation()
  1. Erstellen Sie einen Cursor, um die Features zu durchlaufen.
    with arcpy.da.UpdateCursor(feature_class, ["OID@", date_field]) as cursor:
        for row in cursor:
            date_value = row[1]
            # Check if date is not None and if it's expired
            if date_value:
                if date_value < threshold_date:
                    print(f"Deleting feature with OID {row[0]} and date {date_value}")
                    cursor.deleteRow()
            else:
                print(f"Skipping feature with OID {row[0]} because date field is None")
  1. Beenden Sie die Editiersitzung und den Editiervorgang.
    edit.stopOperation()

    edit.stopEditing(True)
  1. Geben Sie eine Meldung aus, wenn die Punkte erfolgreich ausgeblendet wurden.
    print("Points removed successfully.")
  1. Geben Sie eine Fehlermeldung aus, und machen Sie alle während der Editiersitzung vorgenommenen Änderungen rückgängig, um Datenbeschädigungen zu verhindern.
except Exception as e:
  print(e)
    edit.stopEditing(False)

Im folgenden Code-Block finden Sie das vollständige Skript.

import arcpy
import datetime

arcpy.env.workspace = r"C:\Users\Documents\ArcGIS\Projects\MyProject40\MyProject40.gdb"
feature_class = "Pointsss"

date_field = "Date"

threshold_date = datetime.datetime(2023, 1, 1)

try:
    edit = arcpy.da.Editor(arcpy.env.workspace)
  edit.startEditing(False, True)

  edit.startOperation()

    with arcpy.da.UpdateCursor(feature_class, ["OID@", date_field]) as cursor:
        for row in cursor:
          date_value = row[1]
            if date_value:
                if date_value < threshold_date:
                    print(f"Deleting feature with OID {row[0]} and date {date_value}")
                    cursor.deleteRow()
            else:
                print(f"Skipping feature with OID {row[0]} because date field is None")

    edit.stopOperation()

    edit.stopEditing(True)

    print("Points removed successfully.")

except Exception as e:
  print(e)
    edit.stopEditing(False)

Die folgende Abbildung zeigt die abgelaufenen Punkte, die mit ArcPy entfernt wurden. Aktualisieren Sie die Karte, um die Änderungen zu übernehmen.

Die abgelaufenen Punkte wurden in ArcGIS Pro entfernt

Artikel-ID: 000032387

Holen Sie sich Unterstützung mit KI

Lösen Sie Ihr Problem schnell mit dem Esri Support AI Chatbot.

Beginnen Sie jetzt mit dem Chatten

Zugehörige Informationen

Weitere Informationen zu diesem Thema erkunden

Unterstützung durch ArcGIS-Experten anfordern

An den technischen Support wenden

Beginnen Sie jetzt mit dem Chatten

Zu Download-Optionen wechseln