Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from qgis.core import QgsProcessing
- from qgis.core import QgsProcessingAlgorithm
- from qgis.core import QgsProcessingMultiStepFeedback
- from qgis.core import QgsProcessingParameterBand
- from qgis.core import QgsProcessingParameterRasterLayer
- from qgis.core import QgsProcessingParameterNumber
- from qgis.core import QgsProcessingParameterRasterDestination
- import processing
- class RasterCalculator(QgsProcessingAlgorithm):
- def initAlgorithm(self, config=None):
- self.addParameter(QgsProcessingParameterBand('band', 'band', parentLayerParameterName='rasterlayer', allowMultiple=False, defaultValue=None))
- self.addParameter(QgsProcessingParameterRasterLayer('rasterlayer', 'layer', defaultValue=None))
- self.addParameter(QgsProcessingParameterNumber('refadd', 'refadd', type=QgsProcessingParameterNumber.Double, defaultValue=-0.1))
- self.addParameter(QgsProcessingParameterNumber('refmult', 'refmult', type=QgsProcessingParameterNumber.Double, defaultValue=2E-5))
- self.addParameter(QgsProcessingParameterNumber('sunel', 'sunel', type=QgsProcessingParameterNumber.Double, defaultValue=60))
- self.addParameter(QgsProcessingParameterRasterDestination('Reflectance', 'reflectance', createByDefault=True, defaultValue=None))
- def processAlgorithm(self, parameters, context, model_feedback):
- # Use a multi-step feedback, so that individual child algorithm progress reports are adjusted for the
- # overall progress through the model
- feedback = QgsProcessingMultiStepFeedback(1, model_feedback)
- results = {}
- outputs = {}
- # Raster calculator
- alg_params = {
- 'BAND_A': 1,
- 'BAND_B': None,
- 'BAND_C': None,
- 'BAND_D': None,
- 'BAND_E': None,
- 'BAND_F': None,
- 'FORMULA': '(A* refmult +(refadd) ) /( sin(sunel * 3.14159/180 ) )',
- 'INPUT_A': parameters['rasterlayer'],
- 'INPUT_B': None,
- 'INPUT_C': None,
- 'INPUT_D': None,
- 'INPUT_E': None,
- 'INPUT_F': None,
- 'NO_DATA': None,
- 'OPTIONS': '',
- 'RTYPE': 5,
- 'OUTPUT': parameters['Reflectance']
- }
- outputs['RasterCalculator'] = processing.run('gdal:rastercalculator', alg_params, context=context, feedback=feedback, is_child_algorithm=True)
- results['Reflectance'] = outputs['RasterCalculator']['OUTPUT']
- return results
- def name(self):
- return 'raster calculator'
- def displayName(self):
- return 'raster calculator'
- def group(self):
- return 'remote sensing'
- def groupId(self):
- return 'remote sensing'
- def createInstance(self):
- return RasterCalculator()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement