4 votos

Crear una matriz a partir de valores de campo en ArcPy

Tengo una clase de característica que tiene un campo de números de identificación únicos. Me gustaría crear una matriz de estos números para poder hacer un bucle sobre ellos en ArcPy. ¿Alguna idea?

14voto

Andrew Shepherd Puntos 339

Si tienes Arc 10.1 o superior, yo usaría un cursor arcpy.da . Especifique también sólo el/los campo/s que desee.

myLayer = 'YourLayer'
myField = 'YourField'

myList = [row[0] for row in arcpy.da.SearchCursor(myLayer, myField)]

0 votos

+1 La comprensión de una lista aumentará aún más la eficiencia del da Cursor de búsqueda.

0 votos

+1 también. Las comprensiones son una gran herramienta de python con la que todos los que usan arcpy deberían estar familiarizados.

4voto

Stephen Puntos 1

Utiliza el cursor para añadir a una lista. El uso de la lista para lo que sea.

myList = []
rows = arcpy.SearchCursor(YOURLAYER)
for row in rows:
  if row.YOURFIELD not in myList:
    myList.append(row.YOURFIELD)
del rows
del row

0 votos

Supongo que vale la pena señalar que se puede acceder a sus valores de manera diferente a la row.YOURFIELD método que estoy utilizando. Puede utilizar un row.getValue("YOURFIELD") para lograr lo mismo. Además, he visto posts aquí diciendo que la respuesta de recurvata de usar el da El cursor puede ser más rápido. Simplemente me gusta evitar lidiar con los índices de las filas si puedo.

1 votos

Son esos índices los que mejoran el rendimiento. Las búsquedas de Getter por nombre tienen un impacto temible en el rendimiento, especialmente con un gran número de columnas, por lo que la API 1.4 de FGDB ahora tiene búsquedas de índices.

1 votos

Buen punto. Yo prefiero utilizar las búsquedas (dejando de lado el rendimiento). La razón principal es que escribo el código y se lo doy a otros para que lo modifiquen y lo utilicen. Lamentablemente, ninguno de ellos tiene realmente una idea de lo que es un índice o cómo aplicarlo. Es más fácil decirles que cambien los nombres de los campos en lugar de averiguar un índice. Si se trata de un conjunto de datos más grande, definitivamente vale la pena el tiempo de aprender el da cursores.

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