3 votos

¿Aplicando la Calculadora Raster de QGIS sobre dos Rasters diferentes?

Quiero aplicar algunos cálculos sobre rasters, para lo cual se utiliza el siguiente código.

  import time
  from qgis.analysis import QgsRasterCalculator, QgsRasterCalculatorEntry
  rasterpath='inputfile1'
  bohLayer = QgsRasterLayer(rasterpath,"temp")
  QgsMapLayerRegistry.instance().addMapLayer(bohLayer )
  entries = []
  # Define band1
  boh1 = QgsRasterCalculatorEntry()
  boh1.ref = 'boh@1'
  boh1.raster = bohLayer
  boh1.bandNumber = 1
  entries.append( boh1 )

  rasterpath='inputfile2'
  bohLayer1 = QgsRasterLayer(rasterpath,"temp1")
  QgsMapLayerRegistry.instance().addMapLayer(bohLayer1)

  # Define band2
  boh2 = QgsRasterCalculatorEntry()
  boh2.ref = 'boh1@1'
  boh2.raster = bohLayer1
  boh2.bandNumber = 1
  entries.append( boh2 )

  # Process calculation with input extent and resolution
  calc =QgsRasterCalculator('Float(boh1@1-boh@1)/Float(boh1@1+boh@1)','outputfile','GTiff', bohLayer.extent(), bohLayer.width(), bohLayer.height(), entries )
  calc.processCalculation()

Pero da 4 como error de análisis en lugar de 0 (como éxito) ¿cuál es el error en el código?

1voto

Mue Puntos 2469

Debe incluir un espacio cuando utilice operadores matemáticos con referencias a rásters en su fórmula. Pruebe a cambiar

Float(boh1@1-boh@1)/Float(boh1@1+boh@1)

a

Float(boh1@1 - boh@1)/Float(boh1@1 + boh@1)

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