Skip to content

Commit 93efeef

Browse files
author
Giovanni Manghi
committed
Add raster data type output option to some Processing/GDAL tools otherewise output is always Float64
1 parent ba8a60f commit 93efeef

File tree

8 files changed

+69
-18
lines changed

8 files changed

+69
-18
lines changed

python/plugins/processing/algs/gdal/GridAverage.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
from processing.core.parameters import ParameterVector
3333
from processing.core.parameters import ParameterTableField
3434
from processing.core.parameters import ParameterNumber
35+
from processing.core.parameters import ParameterSelection
3536
from processing.core.outputs import OutputRaster
3637
from processing.algs.gdal.GdalUtils import GdalUtils
3738
from processing.tools.system import *
@@ -47,6 +48,9 @@ class GridAverage(GdalAlgorithm):
4748
ANGLE = 'ANGLE'
4849
NODATA = 'NODATA'
4950
OUTPUT = 'OUTPUT'
51+
RTYPE = 'RTYPE'
52+
53+
TYPE = ['Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']
5054

5155
def commandLineName(self):
5256
return "gdalogr:gridaverage"
@@ -69,7 +73,8 @@ def defineCharacteristics(self):
6973
0.0, 359.0, 0.0))
7074
self.addParameter(ParameterNumber(self.NODATA, 'Nodata',
7175
0.0, 99999999.999999, 0.0))
72-
76+
self.addParameter(ParameterSelection(self.RTYPE, 'Output raster type',
77+
self.TYPE, 5))
7378
self.addOutput(OutputRaster(self.OUTPUT, 'Output file'))
7479

7580
def processAlgorithm(self, progress):
@@ -92,7 +97,8 @@ def processAlgorithm(self, progress):
9297

9398
arguments.append('-a')
9499
arguments.append(params)
95-
100+
arguments.append('-ot')
101+
arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)])
96102
arguments.append(unicode(self.getParameterValue(self.INPUT)))
97103
arguments.append(unicode(self.getOutputValue(self.OUTPUT)))
98104

python/plugins/processing/algs/gdal/GridDataMetrics.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,10 @@ class GridDataMetrics(GdalAlgorithm):
4949
ANGLE = 'ANGLE'
5050
NODATA = 'NODATA'
5151
OUTPUT = 'OUTPUT'
52-
52+
RTYPE = 'RTYPE'
53+
54+
TYPE = ['Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']
55+
5356
DATA_METRICS = ['Minimum', 'Maximum', 'Range', 'Count', 'Average distance',
5457
'Average distance between points']
5558

@@ -76,7 +79,8 @@ def defineCharacteristics(self):
7679
0.0, 359.0, 0.0))
7780
self.addParameter(ParameterNumber(self.NODATA, 'Nodata',
7881
0.0, 99999999.999999, 0.0))
79-
82+
self.addParameter(ParameterSelection(self.RTYPE, 'Output raster type',
83+
self.TYPE, 5))
8084
self.addOutput(OutputRaster(self.OUTPUT, 'Output file'))
8185

8286
def processAlgorithm(self, progress):
@@ -112,7 +116,8 @@ def processAlgorithm(self, progress):
112116

113117
arguments.append('-a')
114118
arguments.append(params)
115-
119+
arguments.append('-ot')
120+
arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)])
116121
arguments.append(unicode(self.getParameterValue(self.INPUT)))
117122
arguments.append(unicode(self.getOutputValue(self.OUTPUT)))
118123

python/plugins/processing/algs/gdal/GridInvDist.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
from processing.core.parameters import ParameterVector
3333
from processing.core.parameters import ParameterTableField
3434
from processing.core.parameters import ParameterNumber
35+
from processing.core.parameters import ParameterSelection
3536
from processing.core.outputs import OutputRaster
3637
from processing.algs.gdal.GdalUtils import GdalUtils
3738
from processing.tools.system import *
@@ -50,7 +51,10 @@ class GridInvDist(GdalAlgorithm):
5051
ANGLE = 'ANGLE'
5152
NODATA = 'NODATA'
5253
OUTPUT = 'OUTPUT'
53-
54+
RTYPE = 'RTYPE'
55+
56+
TYPE = ['Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']
57+
5458
def commandLineName(self):
5559
return "gdalogr:gridinvdist"
5660

@@ -77,7 +81,8 @@ def defineCharacteristics(self):
7781
0.0, 359.0, 0.0))
7882
self.addParameter(ParameterNumber(self.NODATA, 'Nodata',
7983
-99999999.999999, 99999999.999999, 0.0))
80-
84+
self.addParameter(ParameterSelection(self.RTYPE, 'Output raster type',
85+
self.TYPE, 5))
8186
self.addOutput(OutputRaster(self.OUTPUT, 'Output file'))
8287

8388
def processAlgorithm(self, progress):
@@ -103,7 +108,8 @@ def processAlgorithm(self, progress):
103108

104109
arguments.append('-a')
105110
arguments.append(params)
106-
111+
arguments.append('-ot')
112+
arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)])
107113
arguments.append(unicode(self.getParameterValue(self.INPUT)))
108114
arguments.append(unicode(self.getOutputValue(self.OUTPUT)))
109115

python/plugins/processing/algs/gdal/GridNearest.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
from processing.core.parameters import ParameterVector
3333
from processing.core.parameters import ParameterTableField
3434
from processing.core.parameters import ParameterNumber
35+
from processing.core.parameters import ParameterSelection
3536
from processing.core.outputs import OutputRaster
3637
from processing.algs.gdal.GdalUtils import GdalUtils
3738
from processing.tools.system import *
@@ -46,7 +47,10 @@ class GridNearest(GdalAlgorithm):
4647
ANGLE = 'ANGLE'
4748
NODATA = 'NODATA'
4849
OUTPUT = 'OUTPUT'
49-
50+
RTYPE = 'RTYPE'
51+
52+
TYPE = ['Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']
53+
5054
def commandLineName(self):
5155
return "gdalogr:gridnearestneighbor"
5256

@@ -66,7 +70,8 @@ def defineCharacteristics(self):
6670
0.0, 359.0, 0.0))
6771
self.addParameter(ParameterNumber(self.NODATA, 'Nodata',
6872
0.0, 99999999.999999, 0.0))
69-
73+
self.addParameter(ParameterSelection(self.RTYPE, 'Output raster type',
74+
self.TYPE, 5))
7075
self.addOutput(OutputRaster(self.OUTPUT, 'Output file'))
7176

7277
def processAlgorithm(self, progress):
@@ -88,7 +93,8 @@ def processAlgorithm(self, progress):
8893

8994
arguments.append('-a')
9095
arguments.append(params)
91-
96+
arguments.append('-ot')
97+
arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)])
9298
arguments.append(unicode(self.getParameterValue(self.INPUT)))
9399
arguments.append(unicode(self.getOutputValue(self.OUTPUT)))
94100

python/plugins/processing/algs/gdal/merge.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from processing.core.outputs import OutputRaster
3131
from processing.core.parameters import ParameterBoolean
3232
from processing.core.parameters import ParameterMultipleInput
33+
from processing.core.parameters import ParameterSelection
3334
from processing.tools.system import *
3435
from processing.algs.gdal.GdalUtils import GdalUtils
3536

@@ -40,7 +41,10 @@ class merge(GdalAlgorithm):
4041
OUTPUT = 'OUTPUT'
4142
PCT = 'PCT'
4243
SEPARATE = 'SEPARATE'
43-
44+
RTYPE = 'RTYPE'
45+
46+
TYPE = ['Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']
47+
4448
def defineCharacteristics(self):
4549
self.name = 'Merge'
4650
self.group = '[GDAL] Miscellaneous'
@@ -50,10 +54,14 @@ def defineCharacteristics(self):
5054
'Grab pseudocolor table from first layer', False))
5155
self.addParameter(ParameterBoolean(merge.SEPARATE, 'Layer stack',
5256
False))
57+
self.addParameter(ParameterSelection(self.RTYPE, 'Output raster type',
58+
self.TYPE, 5))
5359
self.addOutput(OutputRaster(merge.OUTPUT, 'Output layer'))
5460

5561
def processAlgorithm(self, progress):
5662
arguments = []
63+
arguments.append('-ot')
64+
arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)])
5765
if self.getParameterValue(merge.SEPARATE):
5866
arguments.append('-separate')
5967
if self.getParameterValue(merge.PCT):
@@ -72,4 +80,4 @@ def processAlgorithm(self, progress):
7280
else:
7381
commands = ['gdal_merge.py', GdalUtils.escapeAndJoin(arguments)]
7482

75-
GdalUtils.runGdal(commands, progress)
83+
GdalUtils.runGdal(commands, progress)

python/plugins/processing/algs/gdal/proximity.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ class proximity(GdalAlgorithm):
4444
NODATA = 'NODATA'
4545
BUF_VAL = 'BUF_VAL'
4646
OUTPUT = 'OUTPUT'
47+
RTYPE = 'RTYPE'
48+
49+
TYPE = ['Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']
4750

4851
DISTUNITS = ['GEO', 'PIXEL']
4952

@@ -64,13 +67,16 @@ def defineCharacteristics(self):
6467
self.addParameter(ParameterNumber(self.BUF_VAL,
6568
'Fixed buf val (negative value to ignore)', -1,
6669
9999, -1))
67-
70+
self.addParameter(ParameterSelection(self.RTYPE, 'Output raster type',
71+
self.TYPE, 5))
6872
self.addOutput(OutputRaster(self.OUTPUT, 'Output layer'))
6973

7074
def processAlgorithm(self, progress):
7175
output = self.getOutputValue(self.OUTPUT)
7276

7377
arguments = []
78+
arguments.append('-ot')
79+
arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)])
7480
arguments.append(self.getParameterValue(self.INPUT))
7581
arguments.append(output)
7682

@@ -108,4 +114,4 @@ def processAlgorithm(self, progress):
108114
commands = ['gdal_proximity.py',
109115
GdalUtils.escapeAndJoin(arguments)]
110116

111-
GdalUtils.runGdal(commands, progress)
117+
GdalUtils.runGdal(commands, progress)

python/plugins/processing/algs/gdal/translate.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ class translate(GdalAlgorithm):
5151
SRS = 'SRS'
5252
SDS = 'SDS'
5353
EXTRA = 'EXTRA'
54+
RTYPE = 'RTYPE'
55+
56+
TYPE = ['Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']
5457

5558
def commandLineName(self):
5659
return "gdalogr:translate"
@@ -79,6 +82,8 @@ def defineCharacteristics(self):
7982
False))
8083
self.addParameter(ParameterString(self.EXTRA,
8184
'Additional creation parameters', '', optional=True))
85+
self.addParameter(ParameterSelection(self.RTYPE, 'Output raster type',
86+
self.TYPE, 5))
8287
self.addOutput(OutputRaster(self.OUTPUT, 'Output layer'))
8388

8489
def processAlgorithm(self, progress):
@@ -96,6 +101,8 @@ def processAlgorithm(self, progress):
96101
arguments = []
97102
arguments.append('-of')
98103
arguments.append(GdalUtils.getFormatShortNameFromFilename(out))
104+
arguments.append('-ot')
105+
arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)])
99106
if outsizePerc == 'True':
100107
arguments.append('-outsize')
101108
arguments.append(outsize + '%')
@@ -126,4 +133,4 @@ def processAlgorithm(self, progress):
126133
arguments.append(out)
127134

128135
GdalUtils.runGdal(['gdal_translate',
129-
GdalUtils.escapeAndJoin(arguments)], progress)
136+
GdalUtils.escapeAndJoin(arguments)], progress)

python/plugins/processing/algs/gdal/warp.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,10 @@ class warp(GdalAlgorithm):
4646
METHOD_OPTIONS = ['near', 'bilinear', 'cubic', 'cubicspline', 'lanczos']
4747
TR = 'TR'
4848
EXTRA = 'EXTRA'
49-
49+
RTYPE = 'RTYPE'
50+
51+
TYPE = ['Byte','Int16','UInt16','UInt32','Int32','Float32','Float64','CInt16','CInt32','CFloat32','CFloat64']
52+
5053
def defineCharacteristics(self):
5154
self.name = 'Warp (reproject)'
5255
self.group = '[GDAL] Projections'
@@ -62,10 +65,14 @@ def defineCharacteristics(self):
6265
self.METHOD_OPTIONS))
6366
self.addParameter(ParameterString(self.EXTRA,
6467
'Additional creation parameters', '', optional=True))
68+
self.addParameter(ParameterSelection(self.RTYPE, 'Output raster type',
69+
self.TYPE, 5))
6570
self.addOutput(OutputRaster(self.OUTPUT, 'Output layer'))
6671

6772
def processAlgorithm(self, progress):
6873
arguments = []
74+
arguments.append('-ot')
75+
arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)])
6976
arguments.append('-s_srs')
7077
arguments.append(str(self.getParameterValue(self.SOURCE_SRS)))
7178
arguments.append('-t_srs')
@@ -89,4 +96,4 @@ def processAlgorithm(self, progress):
8996
arguments.append(out)
9097

9198
GdalUtils.runGdal(['gdalwarp', GdalUtils.escapeAndJoin(arguments)],
92-
progress)
99+
progress)

0 commit comments

Comments
 (0)