1 votos

Utilizar los resultados del bucle para otro cálculo raster

He estado buscando mucho para encontrar una solución para lo que creo que es un ejercicio muy sencillo.

En general, me gustaría saber cómo puedo extraer una variable de un bucle en Python y luego utilizarla en otra parte del script. Tengo conocimientos limitados de Python, sin embargo sé por R que esto debería ser bastante sencillo. Más concretamente, mi caso se explica a continuación.

Tengo dos bucles, ambos multiplicando rasters. Necesito extraer variables de cada uno de los bucles y luego sumarlas.

import arcpy, os
from arcpy import env
from arcpy.sa import *

arcpy.CheckOutExtension("spatial")
arcpy.env.overwriteOutput = True
env.workspace = "D:/Join"
#
outputFolder = env.workspace
#
# A list of two different rasters
wheat = ["a_wheat", "b_wheat"]
for w in wheat:
    r_w=Times("landuse_w",w) # landuse is a raster
    r_w.save(os.path.join(outputFolder, "r_" + w ))
# This will generate r_a_wheat, r_b_wheat

barl = ["a_barl", "b_barl"]
for b in barl:
    r_b=Times("landuse_b",b)# landuse is a raster
    r_b.save(os.path.join(outputFolder, "r_" + b))
# This will generate r_a_barl, r_b_barl
# 
# Add rasters
add_a = r_a_wheat + r_a_barl
add_b = r_b_wheat + r_b_barl

El problema con los bucles de este tipo es que tengo que guardar todo y luego sumar. Preferiría extraer de r_w los dos raster ( r_a_wheat, r_b_wheat ), haga lo mismo para r_b y luego sumar sin tener que guardar archivos. ¿Es posible?

1voto

John Kramlich Puntos 286

Ahora que has descrito tu problema con un poco más de detalle, ¿por qué no recorres las listas utilizando su número de índice del 0 al 9 sacando los nombres, ya que parece que los estás emparejando?

Pseudocódigo:

wheat = ["a_wheat", "b_wheat","c_wheat"]
barl = ["a_barl", "b_barl","c_barl"]
for i in range(0,3,1):
    ras1 = wheat[i]
    ras2 = barl[i]
    print "processing " + ras1 + " & " + ras2
    r_w=Times("landuse_w",ras1)
    r_b=Times("landuse_b",ras2)
    add = r_w + r_b
    add.save("yourrastername")

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