CÓMO

Buscar el número de secuencia que falta de un campo en ArcGIS Pro con ArcPy

Last Published: May 6, 2024

Resumen

En ArcGIS Pro, algunos datos pueden contener números secuenciales para mantener la integridad de los datos, garantizar la calidad de los datos y apoyar el análisis espacial. En algunos casos, faltan números de secuencia en los datos, lo que puede causar errores que pueden conducir a incoherencias o inexactitudes en el análisis, como se muestra en la imagen a continuación.

Faltan números secuenciales

En este artículo se describe el flujo de trabajo de búsqueda del número de secuencia que falta en un campo en ArcGIS Pro mediante ArcPy.

Procedimiento

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. En ArcGIS Pro, abra el mapa que contiene la capa de entidades con los números secuenciales.
  2. Abra la ventana de Python. Consulte ArcGIS Pro: ventana de Python para obtener más información.
  3. Ejecute la siguiente secuencia de comandos.
    1. Inicialice una lista para almacenar los números de secuencia existentes.
import arcpy

def find_missing_sequence(fc, field_name):
    sequence_numbers = []
  1. Cree un cursor de búsqueda para recorrer en iteración la clase de entidad y convertir el valor del campo en un número entero.
    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. Encuentre los números de secuencia mínimo y máximo.
    min_seq = min(sequence_numbers)
    max_seq = max(sequence_numbers)
  1. Cree una lista de todos los números de secuencia esperados.
    expected_sequence = list(range(min_seq, max_seq + 1))
  1. Encuentre los números de secuencia que faltan.
    missing_sequence = [num for num in expected_sequence if num not in sequence_numbers]

    return missing_sequence
  1. Establezca la clase de entidad y el nombre del campo. Reemplace <featureClassName> por el nombre de la clase de entidad. Reemplace <fieldName> por el nombre del campo.
if __name__ == "__main__":
    fc = "<featureClassName>"
    field_name = "<fieldName>"
  1. Llame a la función para buscar e imprimir los números de secuencia que faltan.
    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.")

El siguiente bloque de código muestra el script completo.

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.")

La siguiente imagen muestra el número de secuencia que falta en el campo utilizando ArcPy.

Número de secuencia que falta en un campo

Id. de artículo: 000032437

Obtenga soporte con IA

Resuelva su problema rápidamente con el chatbot de inteligencia artificial de soporte de Esri.

Empieza a chatear ahora

Información relacionada

Descubrir más sobre este tema

Obtener ayuda de expertos en ArcGIS

Contactar con el soporte técnico

Empieza a chatear ahora

Ir a opciones de descarga