Español

Cómo: Seleccionar cada "n" filas en una tabla en ArcMap

Resumen

En algunos casos, los usuarios pueden querer seleccionar cada "n" filas en una tabla para editar las entidades seleccionadas sin tener que seleccionar y completar las filas una por una. En este artículo se describe cómo seleccionar cada "n" filas mediante un script de Python. En este ejemplo, el valor de intervalo se ha establecido en 3. Se ha creado una nueva capa con entidades seleccionadas y no seleccionadas como salida resultante. En la tabla de atributos de la nueva capa, se han seleccionado tres filas y se han omitido las siguientes tres, y se repite el mismo proceso hasta el final de todas las filas.

El resultado de este proceso es que la mitad de las filas están seleccionadas en la tabla original, pero estas selecciones se han especificado como cada tres filas. La siguiente imagen muestra la salida esperada:

An image of the new layer with selected attributes created after running the Python script.
 

Procedimiento

El siguiente script de Python recorre en iteración los ObjectID y selecciona cada "n" filas de acuerdo con el valor de intervalo definido mediante la herramienta Seleccionar capa por atributo y la herramienta Crear capa de entidades. Al cambiar el valor de intervalo del script, se modifica el número de filas seleccionadas y omitidas. Siga estas instrucciones para ejecutar el script en la ventana de Python.

  1. En el menú principal de ArcMap, haga clic en Geoprocesamiento > Python para abrir la ventana de Python.
  2. Copie y pegue el script en la ventana de Python.
import arcpy

##Reemplazar la ruta de datos## 
fc = r'C:\EsriTraining\SpatialProb\CraterLake.gdb\Roads'

##Definir el intervalo deseado. interval = 1 selecciona una fila sí, otra no, interval = 2 selecciona 2, omite 2,##
##interval = 3 selecciona 3, omite 3, etc.## 
interval = 3
selected_oid = []
ready_to_add = False
interval = abs(interval)

##Reemplace layer_name si lo desea##
fc = arcpy.MakeFeatureLayer_management(fc, "layer_name")

with arcpy.da.SearchCursor(fc, 'OID@') as cur:
     for i, row in enumerate(cur):
         if i % interval ==0:
             ready_to_add = not ready_to_add
         if ready_to_add:
             selected_oid.append(unicode(row[0]))

where = 'OBJECTID in ({})'.format(', '.join(selected_oid))
selected_fc = arcpy.SelectLayerByAttribute_management(fc, "NEW_SELECTION", where)
  1. Reemplace la ruta de origen de la capa de entidades y el nombre de la nueva capa.
  2. Pulse Intro.

Información relacionada