¿Hay alguna manera de calcular un campo ordenado con números secuenciales? ¿He visto la clase de entidad de clasificación para calcular el campo de ID secuencial usando ArcGIS Field Calculator? que describe cómo calcular números secuenciales, pero esto siempre se calcula en orden FID, no en orden ordenado.
#Pre-logic Script Code:
rec=0
def autoIncrement():
global rec
pStart = 1
pInterval = 1
if (rec == 0):
rec = pStart
else:
rec += pInterval
return rec
#Expression:
autoIncrement()
Un ejemplo de lo que estoy tratando de hacer. He usado una ordenación avanzada para ordenar por año, mes, día y ahora quiero tener números secuenciales en el Seq
campo. Verás que mi OBJECTID
campo no está en orden, por lo que el código anterior no funcionará.
¿Se puede hacer esto en la Calculadora de campo o usando un cursor de actualización en arcpy?
Respuestas:
"Solución" con 2 campos ordenados (ascendente):
--------------------------------------
VERSIÓN ACTUALIZADA:
-----------------------
Toma 1.5 segundos completar la tarea en 10000 registros. El original tarda un poco más de 2 minutos
fuente
Este es un proceso de dos pasos y, como resultado, la Calculadora de campo no es adecuada para ello. Es mejor ejecutar esto en un script independiente. Sin embargo, se puede hacer en la calculadora de campo, siempre que use un truco. Debe usar un cursor para cargar todos los valores en un diccionario global de una lista ordenada, pero solo durante el cálculo del primer registro. Para todos los demás registros, debe omitir la creación del diccionario para evitar volver a leer constantemente la tabla completa para cada fila.
Los tres valores de campo deben colocarse en una tupla para actuar como una clave que se clasificará correctamente. Asumiré que todos los valores de combinación de 3 campos son únicos en la tabla SamplePoint, pero agregué el ObjectID para asegurar que sea único. Debe proporcionar la ruta y el nombre del archivo de forma en la línea 8 (o podría usar la técnica que FelixIP usa cuando se usa la primera capa en el mapa actual). Si desea utilizar diferentes campos para una clave, debe cambiar la lista de campos en la línea 10 y hacerlos coincidir con los campos de entrada en la línea 3 y la línea 15.
Tampoco recomendaría usar los nombres de campo de Año, Mes y Día, ya que solo funcionan en archivos shape y no están permitidos en geodatabases. Una geodatabase cambiará los nombres a Año_1, Mes_1, Día_1 si intenta agregarlos a la lista de campos en las propiedades de la tabla.
Si el propósito de esta tabla es relacionarla con otra tabla / clase de entidad en una clave de campo múltiple, considere usar la herramienta que creé en mi blog llamada Herramienta de clave de campo múltiple a clave de campo único - Relacionar dos capas en base a más de una Campo
fuente
Tenía la misma pregunta pero para un problema más simple, basado en tener solo un campo para ordenar. Tuve éxito con el siguiente script:
fuente