Skip to content

Commit 67e4a9a

Browse files
author
Giovanni Manghi
committed
add missing file
1 parent ac5d284 commit 67e4a9a

File tree

1 file changed

+163
-0
lines changed

1 file changed

+163
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
# -*- coding: utf-8 -*-
2+
3+
"""
4+
***************************************************************************
5+
GdalRasterCalc.py
6+
---------------------
7+
Date : Janaury 2015
8+
Copyright : (C) 2015 by Giovanni Manghi
9+
Email : giovanni dot manghi at naturalgis dot pt
10+
***************************************************************************
11+
* *
12+
* This program is free software; you can redistribute it and/or modify *
13+
* it under the terms of the GNU General Public License as published by *
14+
* the Free Software Foundation; either version 2 of the License, or *
15+
* (at your option) any later version. *
16+
* *
17+
***************************************************************************
18+
"""
19+
20+
__author__ = 'Giovanni Manghi'
21+
__date__ = 'January 2015'
22+
__copyright__ = '(C) 2015, Giovanni Manghi'
23+
24+
# This will get replaced with a git SHA1 when you do a git archive
25+
26+
__revision__ = '$Format:%H$'
27+
28+
from processing.algs.gdal.GdalAlgorithm import GdalAlgorithm
29+
from processing.core.parameters import ParameterString
30+
from processing.core.parameters import ParameterRaster
31+
from processing.core.parameters import ParameterNumber
32+
from processing.core.parameters import ParameterBoolean
33+
from processing.core.parameters import ParameterSelection
34+
from processing.core.parameters import ParameterExtent
35+
from processing.core.parameters import ParameterCrs
36+
from processing.core.outputs import OutputRaster
37+
38+
from processing.tools.system import isWindows
39+
40+
from processing.algs.gdal.GdalUtils import GdalUtils
41+
42+
class GdalRasterCalc(GdalAlgorithm):
43+
44+
INPUT_A = 'INPUT_A'
45+
INPUT_B = 'INPUT_B'
46+
INPUT_C = 'INPUT_C'
47+
INPUT_D = 'INPUT_D'
48+
INPUT_E = 'INPUT_E'
49+
INPUT_F = 'INPUT_F'
50+
BAND_A = 'BAND_A'
51+
BAND_B = 'BAND_B'
52+
BAND_C = 'BAND_C'
53+
BAND_D = 'BAND_D'
54+
BAND_E = 'BAND_E'
55+
BAND_F = 'BAND_F'
56+
FORMULA = 'FORMULA'
57+
OUTPUT = 'OUTPUT'
58+
NO_DATA = 'NO_DATA'
59+
EXTRA = 'EXTRA'
60+
RTYPE = 'RTYPE'
61+
TYPE = ['Byte', 'Int16', 'UInt16', 'UInt32', 'Int32', 'Float32', 'Float64']
62+
#DEBUG = 'DEBUG'
63+
64+
def defineCharacteristics(self):
65+
self.name = 'GDAL Raster Calculator'
66+
self.group = '[GDAL] Miscellaneous'
67+
self.addParameter(ParameterRaster(self.INPUT_A, self.tr('Input layer A'),
68+
False))
69+
self.addParameter(ParameterString(self.BAND_A,
70+
self.tr('Number of raster band for raster A'), '1', optional=True))
71+
self.addParameter(ParameterRaster(self.INPUT_B, self.tr('Input layer B'),
72+
True))
73+
self.addParameter(ParameterString(self.BAND_B,
74+
self.tr('Number of raster band for raster B'), '1', optional=True))
75+
self.addParameter(ParameterRaster(self.INPUT_C, self.tr('Input layer C'),
76+
True))
77+
self.addParameter(ParameterString(self.BAND_C,
78+
self.tr('Number of raster band for raster C'), '1', optional=True))
79+
self.addParameter(ParameterRaster(self.INPUT_D, self.tr('Input layer D'),
80+
True))
81+
self.addParameter(ParameterString(self.BAND_D,
82+
self.tr('Number of raster band for raster D'), '1', optional=True))
83+
self.addParameter(ParameterRaster(self.INPUT_E, self.tr('Input layer E'),
84+
True))
85+
self.addParameter(ParameterString(self.BAND_E,
86+
self.tr('Number of raster band for raster E'), '1', optional=True))
87+
self.addParameter(ParameterRaster(self.INPUT_F, self.tr('Input layer F'),
88+
True))
89+
self.addParameter(ParameterString(self.BAND_F,
90+
self.tr('Number of raster band for raster F'), '1', optional=True))
91+
self.addParameter(ParameterString(self.FORMULA,
92+
self.tr('Calculation in gdalnumeric syntax using +-/* or any numpy array functions (i.e. logical_and())'), 'A*2', optional=False))
93+
self.addParameter(ParameterString(self.NO_DATA,
94+
self.tr("Set output nodata value"),
95+
'-9999'))
96+
self.addParameter(ParameterSelection(self.RTYPE,
97+
self.tr('Output raster type'), self.TYPE, 5))
98+
#self.addParameter(ParameterBoolean(self.DEBUG,
99+
#self.tr('Print debugging information'),
100+
#False))
101+
self.addParameter(ParameterString(self.EXTRA,
102+
self.tr('Additional creation parameters'), '', optional=True))
103+
self.addOutput(OutputRaster(self.OUTPUT, self.tr('Output layer')))
104+
105+
def processAlgorithm(self, progress):
106+
out = self.getOutputValue(self.OUTPUT)
107+
extra = str(self.getParameterValue(self.EXTRA))
108+
#debug = self.getParameterValue(self.DEBUG)
109+
formula = self.getParameterValue(self.FORMULA)
110+
noData = str(self.getParameterValue(self.NO_DATA))
111+
112+
arguments = []
113+
arguments.append('--calc')
114+
arguments.append('"'+formula+'"')
115+
arguments.append('--format')
116+
arguments.append(GdalUtils.getFormatShortNameFromFilename(out))
117+
arguments.append('--type')
118+
arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)])
119+
if len(noData) > 0:
120+
arguments.append('--NoDataValue')
121+
arguments.append(noData)
122+
if len(extra) > 0:
123+
arguments.append(extra)
124+
#if debug is True:
125+
#arguments.append('--debug')
126+
arguments.append('-A')
127+
arguments.append(self.getParameterValue(self.INPUT_A))
128+
if self.getParameterValue(self.BAND_A):
129+
arguments.append('--A_band '+self.getParameterValue(self.BAND_A))
130+
if self.getParameterValue(self.INPUT_B):
131+
arguments.append('-B')
132+
arguments.append(self.getParameterValue(self.INPUT_B))
133+
if self.getParameterValue(self.BAND_B):
134+
arguments.append('--B_band '+self.getParameterValue(self.BAND_B))
135+
if self.getParameterValue(self.INPUT_C):
136+
arguments.append('-C')
137+
arguments.append(self.getParameterValue(self.INPUT_C))
138+
if self.getParameterValue(self.BAND_C):
139+
arguments.append('--C_band '+self.getParameterValue(self.BAND_C))
140+
if self.getParameterValue(self.INPUT_D):
141+
arguments.append('-D')
142+
arguments.append(self.getParameterValue(self.INPUT_D))
143+
if self.getParameterValue(self.BAND_D):
144+
arguments.append('--D_band '+self.getParameterValue(self.BAND_D))
145+
if self.getParameterValue(self.INPUT_E):
146+
arguments.append('-E')
147+
arguments.append(self.getParameterValue(self.INPUT_E))
148+
if self.getParameterValue(self.BAND_E):
149+
arguments.append('--E_band '+self.getParameterValue(self.BAND_E))
150+
if self.getParameterValue(self.INPUT_F):
151+
arguments.append('-F')
152+
arguments.append(self.getParameterValue(self.INPUT_F))
153+
if self.getParameterValue(self.BAND_F):
154+
arguments.append('--F_band '+self.getParameterValue(self.BAND_F))
155+
arguments.append('--outfile')
156+
arguments.append(out)
157+
158+
if isWindows():
159+
GdalUtils.runGdal(['gdal_calc',
160+
GdalUtils.escapeAndJoin(arguments)], progress)
161+
else:
162+
GdalUtils.runGdal(['gdal_calc.py',
163+
GdalUtils.escapeAndJoin(arguments)], progress)

0 commit comments

Comments
 (0)