2 votos

Ordenar columna y numerar en secuencia columna separada

Estoy tratando de ordenar (alfabéticamente por Ciudad) una columna y numerar secuencialmente una columna separada con el propósito de etiquetar y crear una clave de mapa.

¿Cuál es la mejor manera de hacer esto?

2voto

overstay_info Puntos 11

La mejor manera depende de demasiadas cosas que no has mencionado. ¿Se debe hacer esto solo una vez o cada vez que actualices el FC/tabla? ¿El orden debe reflejarse por el ObjectID o es suficiente si el orden solo sucede en memoria y se refleja en el orden de numeración de una columna separada?

De todas maneras, la herramienta de Ordenar es la forma más fácil de crear un nuevo FC/tabla con los registros ordenados y luego el ObjectID se ordenará de forma secuencial. Sin embargo, esto es solo una solución temporal y debe repetirse si agregas filas.

Un script de Python con un cursor puede actualizar la columna separada si los registros no tienen que estar realmente almacenados con los ObjectIDs en orden. Pero tienes que ser más específico sobre lo que necesitas antes de que sugiera algún código específico.

1voto

pyasi Puntos 320

La versión antigua del cursor de actualización hará lo que quieres bastante fácilmente. ¿Supongo que estás trabajando en ArcGIS? Si es así, esto es lo que debes hacer. Abre ArcMap, agrega tu capa de la ciudad en tu mxd, y crea un campo para el orden de clasificación, si aún no existe. (Y tal vez comienza una sesión de edición en caso de que algo salga mal y quieras deshacerlo.)

Debes ejecutar el siguiente código desde la ventana de python, no desde la calculadora de campos. Para acceder a eso, ve a "Geoprocesamiento" en el menú en la parte superior de tu pantalla y haz clic en "Python". Aparecerá una ventana de python vacía. El código a continuación es lo que debes escribir. En el ejemplo siguiente, tengo una clase de entidad llamada "Ciudades". "NOMBRE" es el campo por el que quiero ordenar, y "SortFld" es el campo en el que quiero mantener mis nuevos números secuenciales, así que debes reemplazar esos valores con el nombre de tu clase de entidad y el nombre de tus campos.

counter = 1
rows = arcpy.UpdateCursor("Ciudades","","","NOMBRE; SortFld", "NOMBRE")
for row in rows:
  row.SortFld = counter
  counter = counter + 1
  rows.updateRow(row)

Luego solo presiona enter. Si esto funciona para ti, puedes hacer clic derecho en la ventana de python y hacer clic en "Guardar como" y guardar ese pequeño fragmento de código. Luego haces clic derecho en la ventana y eliges "Cargar" para traerlo de vuelta y ejecutarlo nuevamente en el futuro.

Puedes obtener más información sobre el cursor de actualización aquí.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X