2 votos

¿Cómo determinar si una trama tiene atributos de fila?

Tengo un archivo raster que es el resultado de la herramienta de geoprocesamiento Extraer por máscara. Si no tiene filas, lo considero como que no hay solapamiento entre el raster de entrada y el shapefile. La siguiente es la forma en que estoy leyendo para determinar si una fila existe o no. Pero me da cero respuesta, incluso si existe una fila. Por favor, ayúdeme a controlar mejor este proceso.

    a = 0
    grid1 = arcpy.sa.ExtractByMask("iras",fc)
    grid1.save(optfolder + '/oras')
    arcpy.BuildRasterAttributeTable_management(optfolder + '/oras',"Overwrite")
    grid2 = arcpy.SearchCursor(optfolder + '/oras',"","","Count","")
    rows = grid2.next()
    if rows == None:
        count = 0
        a = a + count
    else:
        count = rows.getValue("Count")
        a = a + count

    del rows

2voto

Örjan Jämte Puntos 3127

Yo estructuraría el código así:

  a = 0
  grid1 = arcpy.sa.ExtractByMask("iras",fc)
  grid1.save(optfolder + '/oras')
  arcpy.BuildRasterAttributeTable_management(optfolder + '/oras',"Overwrite")
  rows = arcpy.SearchCursor(optfolder + '/oras',"","","Count","")
  for row in rows:
    if row is None:
        count = 0
        a += count
    else:
        count = row.getValue("Count")
        a += count

  del rows

Si utiliza ArcMap 10.1 o superior, el código siguiente utiliza la función más rápida módulo de acceso a datos para cursores :

with arcpy.da.SearchCursor(optfolder + '/oras', "Count") as rows:
  for row in rows:
    if row[0] is None:
        count = 0
        a += count
    else:
        count = row[0]
        a += count

Para quien esté interesado en leer sobre x == None vs x is None , ici es un enlace SO que enlaza con un gran blogpost ici .

Implementando la gran sugerencia de @NathanW a continuación:

with arcpy.da.SearchCursor(optfolder + '/oras', "Count") as rows:
      for row in rows:
        a += row[0] or 0

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