Classificando a classe de recurso para calcular o campo de ID sequencial usando o ArcGIS Field Calculator?

8

Estou no ArcMap e quero classificar os registros com base em um campo e, em seguida, fazer um campo de cálculo com um valor de incremento automático com a classificação no local. Alguma ideia?

Parece que eu poderia obter um cursor de atualização na classe de recurso e fazer um incremento automático, mas ainda gostaria de ver se há uma maneira de fazer isso na Calculadora de Campo no ArcMap.

Justin
fonte

Respostas:

5

Usei o ModelBuilder e fiz uma classificação de campo seguida de campo de cálculo usando o código de classificação abaixo e funcionou muito bem.

Anteriormente, eu havia tentado essas duas etapas fora do ModelBuilder e ela falhou.

Expressão:

autoIncrement()

Tipo de expressão: PYTHON_9.3

Bloco de código:

rec=0
def autoIncrement():
    global rec
    pStart = 1 #adjust start value, if req'd 
    pInterval = 1 #adjust interval value, if req'd
    if (rec == 0): 
        rec = pStart 
    else: 
        rec = rec + pInterval 
    return rec
Steph
fonte
11

Tente usar Classificação (Gerenciamento de dados) seguido de Calcular campo (Gerenciamento de dados) usando o exemplo de incremento automático na página de ajuda Exemplos de cálculo de campos .

Se você precisar classificar os dados e atualizá-los no local (sem conjunto de dados intermediário), acho que você precisaria usar um UpdateCursor que também pode classificar por um campo.

blah238
fonte
Excelente sugestão. E se você precisar fazer isso de forma recorrente, considere vincular essas ferramentas no ModelBuilder.
precisa saber é o seguinte
1
A amostra ESRI para numeração seqüencial é baseada no FID (ID da linha original). Quero que a numeração seja baseada na classificação atual - isso pode ser feito? No código da ESRI, o que é "global" rec? Obrigado.
GeorgeC
Espero que minha resposta já responda à sua primeira pergunta de duas maneiras: 1) use Sort (Data Management) ou 2) use um UpdateCursor com o argumento de campos de classificação. Eu não acho que você possa acessar o estado de classificação da exibição da tabela atual através do arcpy, embora isso seja possível através do ArcObjects. Quanto à sua segunda pergunta, globala variável persiste entre os cálculos (um cálculo por linha), para que possa armazenar a contagem de rodadas usada em cada cálculo.
blah238
Em vez de usar o exemplo de incremento baseado em variável global, você pode usar o itertools.count gerador .
user2856