¿Clase de entidad de clasificación para calcular el campo de ID secuencial usando ArcGIS Field Calculator?

8

Estoy en ArcMap y quiero ordenar los registros en función de un campo y luego hacer un Campo de cálculo con un valor de incremento automático con la ordenación en el lugar. ¿Algunas ideas?

Parece que podría obtener un cursor de actualización en la clase de entidad y luego hacer un incremento automático, pero todavía me gustaría ver si hay una manera de hacerlo en la Calculadora de campo en ArcMap.

Justin
fuente

Respuestas:

5

Utilicé ModelBuilder e hice una clasificación de campo seguido de calcular el campo usando el código de clasificación a continuación y funcionó muy bien.

Anteriormente, había intentado estos dos pasos fuera de ModelBuilder y falló.

Expresión:

autoIncrement()

Tipo de expresión: PYTHON_9.3

Bloque 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
fuente
11

Intente usar Ordenar (Gestión de datos) seguido de Calcular campo (Gestión de datos) utilizando el ejemplo de incremento automático en la página de ayuda de ejemplos de Calcular campo .

Si necesita ordenar los datos y actualizarlos en el lugar (sin conjunto de datos intermedio), creo que tendría que usar un cursor de actualización que también puede ordenar por un campo.

blah238
fuente
Excelente sugerencia. Y si necesita hacer esto de forma recurrente, considere vincular estas herramientas en ModelBuilder.
RyanKDalton
1
La muestra de ESRI para la numeración secuencial se basa en el FID (ID de fila original). Quiero que la numeración se base en la clasificación actual. ¿Se puede hacer esto? En el código de ESRI, ¿qué es "global" rec? Gracias.
GeorgeC
Espero que mi respuesta ya responda a su primera pregunta de dos maneras: 1) use Sort (Gestión de datos) o 2) use un cursor de actualización con el argumento de los campos de clasificación. No creo que pueda acceder al estado de clasificación de la vista de tabla actual a través de arcpy, aunque puede ser posible a través de ArcObjects. En cuanto a su segunda pregunta, globalhace que la variable persista entre los cálculos (un cálculo por fila) para que pueda almacenar la cuenta corriente utilizada en cada cálculo.
blah238
En lugar de usar el ejemplo de incremento basado en variables globales, podría usar el itertools.count generador .
usuario2856