Instrução

localizar o número de sequência ausente de um campo no ArcGIS Pro utilizando ArcPy

Last Published: May 6, 2024

Resumo

No ArcGIS Pro, alguns dados podem conter números sequenciais para manter a integridade dos dados, garantir a qualidade dos dados e oferecer suporte à análise espacial. Em alguns casos, há números de sequência ausentes nos dados, o que pode causar erros que podem levar a inconsistências ou imprecisões na análise, conforme mostrado na imagem abaixo.

Números sequenciais ausentes

Este artigo descreve o fluxo de trabalho para localizar o número de sequência ausente de um campo no ArcGIS Pro utilizando ArcPy.

Procedimento

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. No ArcGIS Pro, abra o mapa que contém a camada de feição com os números sequenciais.
  2. Abra a janela Python. Consulte ArcGIS Pro: Janela Python para obter mais informações.
  3. Execute o script a seguir.
    1. Inicialize uma lista para armazenar os números de sequência existentes.
import arcpy

def find_missing_sequence(fc, field_name):
    sequence_numbers = []
  1. Crie um cursor de pesquisa para iterar pela classe de feição e converter o valor do campo em um inteiro.
    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. Encontre os números de sequência mínimo e máximo.
    min_seq = min(sequence_numbers)
    max_seq = max(sequence_numbers)
  1. Crie uma lista de todos os números de sequência esperados.
    expected_sequence = list(range(min_seq, max_seq + 1))
  1. Encontre os números de sequência ausentes.
    missing_sequence = [num for num in expected_sequence if num not in sequence_numbers]

    return missing_sequence
  1. Defina a classe de feição e o nome do campo. Substitua <featureClassName> pelo nome da classe de feição. Substitua <fieldName> pelo nome do campo.
if __name__ == "__main__":
    fc = "<featureClassName>"
    field_name = "<fieldName>"
  1. Chame a função para localizar e imprimir os números de sequência ausentes.
    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.")

O bloco de código abaixo demonstra o funcionamento completo do script.

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

A imagem abaixo mostra o número de sequência ausente no campo usando ArcPy.

O número de sequência ausente em um campo

ID do Artigo: 000032437

Obtenha suporte com IA

Resolva seu problema rapidamente com o chatbot de IA de suporte da Esri.

Comece a conversar agora

Informações Relacionadas

Descubra mais sobre este tema

Obtenha ajuda de especialistas do ArcGIS

Entre em contato com Suporte Técnico

Comece a conversar agora

Ir para as opções de download