En una frase, ¿Cómo se comprueba en Arcpy si una clase de característica tiene registros seleccionados o no? ? Más información a continuación para explicarlo:
Estoy haciendo un proceso por lotes en el que se utiliza una capa de muestreo (cuadrículas de 10km) para seleccionar registros de polígonos (de los que hay unos 100.000 en total). Mi script devuelve la lista de IDs de polígonos que intersectan cada cuadrícula de 10km. A continuación, realizo un procesamiento/resumen adicional utilizando esa lista de ID de polígonos.
En los casos en que hay polígonos dentro de la plaza de la muestra, ArcGIS realiza una selección en los polígonos, y es relativamente fácil de iterar a través de esos registros utilizando un searchcursor. Tenga en cuenta que estoy usando v10.0.
Pero en los casos en los que no hay registros seleccionados (es decir, no hay polígonos que intersecten mi cuadrado de muestra de 10 km), el searchcursor devolvería TODOS los registros de la base de datos. Entonces, ¿cuál es la forma más robusta de comprobar programáticamente si una clase de característica tiene una selección o no?
Sé que puedes usar arcpy.GetCount_management para devolver un número que te diga cuántos registros están seleccionados, y si ese número = el número de registros en toda la capa entonces puedes inferir que o bien ninguno, o bien todos están seleccionados.
Pero eso no es lo mismo que determinar si hay una selección o no. ¿Cuál es la mejor manera de hacerlo en Arcpy?
2 votos
No entiendo cómo se procede. Si tu selección no devuelve ningún registro, entonces estará vacía, no incluirá todos los registros. Entonces usar GetCount no es ambiguo. ¿Puedes mostrar tu código?
0 votos
Pero ese es el punto, no hay selección, por lo tanto getcount devuelve todos los registros en lugar de cero. No existe una selección que no devuelva ningún registro, sino que es una consulta (ya sea por atributo o por ubicación) que no devuelve ninguna selección. Por tanto, getcount devuelve todos los registros. En cualquier caso tengo una solución que publicaré en un segundo...