HOW TO

Suchen der fehlenden Sequenznummer eines Felds in ArcGIS Pro mit ArcPy

Last Published: May 6, 2024

Zusammenfassung

In ArcGIS Pro können einige Daten zum Sicherstellen der Datenintegrität und der Datenqualität und zur Unterstützung der räumlichen Analyse Sequenznummern enthalten. In einigen Fällen fehlen Sequenznummern in den Daten. Dies kann zu Fehlern führen, die möglicherweise Inkonsistenzen oder Ungenauigkeiten in der Analyse zur Folge haben, wie in der Abbildung unten dargestellt.

Fehlende Sequenznummern

In diesem Artikel wird der Workflow zum Suchen der fehlenden Sequenznummer eines Felds in ArcGIS Pro mithilfe von ArcPy beschrieben.

Vorgehensweise

Note:
This workflow requires a full script to run in the ArcGIS Pro Python window. All the indents must be retained as portrayed in the code block.
  1. Öffnen Sie in ArcGIS Pro die Karte, die den Feature-Layer mit den fortlaufenden Nummern enthält.
  2. Öffnen des Python-Fensters Weitere Informationen finden Sie unter ArcGIS Pro: Python-Fenster.
  3. Führen Sie das folgende Skript aus.
    1. Initialisieren Sie eine Liste, um die vorhandenen Sequenznummern zu speichern.
import arcpy

def find_missing_sequence(fc, field_name):
    sequence_numbers = []
  1. Erstellen Sie einen Such-Cursor, um die Feature-Class zu durchlaufen und den Feldwert in eine Ganzzahl umzuwandeln.
    with arcpy.da.SearchCursor(fc, [field_name]) as cursor:
        for row in cursor:
            # Convert the field value to an integer (assuming it's a float)
            sequence_numbers.append(int(row[0]))
  1. Suchen Sie die kleinste und größte Sequenznummer.
    min_seq = min(sequence_numbers)
    max_seq = max(sequence_numbers)
  1. Erstellen Sie eine Liste aller erwarteten Sequenznummern.
    expected_sequence = list(range(min_seq, max_seq + 1))
  1. Suchen Sie die fehlenden Sequenznummern.
    missing_sequence = [num for num in expected_sequence if num not in sequence_numbers]

    return missing_sequence
  1. Legen Sie die Feature-Class und den Feldnamen fest. Ersetzen Sie "<featureClassName>" durch den Namen der Feature-Class. Ersetzen Sie "<fieldName>" durch den Namen des Felds.
if __name__ == "__main__":
    fc = "<featureClassName>"
    field_name = "<fieldName>"
  1. Rufen Sie die Funktion auf, um die fehlenden Sequenznummern zu suchen und auszugeben.
    missing_sequence = find_missing_sequence(fc, field_name)

    if missing_sequence:
        print("Missing sequence number(s):", missing_sequence)
    else:
        print("No missing sequence numbers found.")

Mit dem folgenden Code-Block wird das voll funktionsfähige Skript demonstriert.

import arcpy

def find_missing_sequence(fc, field_name):
    sequence_numbers = []

    with arcpy.da.SearchCursor(fc, [field_name]) as cursor:
        for row in cursor:
            sequence_numbers.append(int(row[0]))

    min_seq = min(sequence_numbers)
    max_seq = max(sequence_numbers)

    expected_sequence = list(range(min_seq, max_seq + 1))

    missing_sequence = [num for num in expected_sequence if num not in sequence_numbers]

    return missing_sequence

if __name__ == "__main__":
    fc = "Point1"
    field_name = "Sequence"

    missing_sequence = find_missing_sequence(fc, field_name)

    if missing_sequence:
        print("Missing sequence number(s):", missing_sequence)
    else:
        print("No missing sequence numbers found.")

Die folgende Abbildung zeigt die fehlende Sequenznummer im Feld unter Verwendung von ArcPy.

Die fehlende Sequenznummer in einem Feld

Artikel-ID: 000032437

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