fix processing gdal_rasterize to allow write vector values in a existing raster layer

This commit is contained in:
Giovanni Manghi 2014-10-21 22:21:52 +01:00
parent 4bcde11753
commit ee8b74f5ca

View File

@ -31,6 +31,7 @@ from processing.core.parameters import ParameterVector
from processing.core.parameters import ParameterTableField from processing.core.parameters import ParameterTableField
from processing.core.parameters import ParameterSelection from processing.core.parameters import ParameterSelection
from processing.core.parameters import ParameterNumber from processing.core.parameters import ParameterNumber
from processing.core.parameters import ParameterBoolean
from processing.core.outputs import OutputRaster from processing.core.outputs import OutputRaster
from processing.algs.gdal.GdalUtils import GdalUtils from processing.algs.gdal.GdalUtils import GdalUtils
@ -42,6 +43,7 @@ class rasterize(GdalAlgorithm):
DIMENSIONS = 'DIMENSIONS' DIMENSIONS = 'DIMENSIONS'
WIDTH = 'WIDTH' WIDTH = 'WIDTH'
HEIGHT = 'HEIGHT' HEIGHT = 'HEIGHT'
WRITEOVER = 'WRITEOVER'
RTYPE = 'RTYPE' RTYPE = 'RTYPE'
OUTPUT = 'OUTPUT' OUTPUT = 'OUTPUT'
@ -56,8 +58,10 @@ class rasterize(GdalAlgorithm):
self.addParameter(ParameterVector(self.INPUT, 'Input layer')) self.addParameter(ParameterVector(self.INPUT, 'Input layer'))
self.addParameter(ParameterTableField(self.FIELD, 'Attribute field', self.addParameter(ParameterTableField(self.FIELD, 'Attribute field',
self.INPUT)) self.INPUT))
self.addParameter(ParameterBoolean(self.WRITEOVER,
'Write values inside an existing raster layer(*)', False))
self.addParameter(ParameterSelection(self.DIMENSIONS, self.addParameter(ParameterSelection(self.DIMENSIONS,
'Set output raster size', ['Output size in pixels', 'Set output raster size (ignored if above option is checked)', ['Output size in pixels',
'Output resolution in map units per pixel'], 1)) 'Output resolution in map units per pixel'], 1))
self.addParameter(ParameterNumber(self.WIDTH, 'Horizontal', 0.0, self.addParameter(ParameterNumber(self.WIDTH, 'Horizontal', 0.0,
99999999.999999, 100.0)) 99999999.999999, 100.0))
@ -69,13 +73,15 @@ class rasterize(GdalAlgorithm):
self.addOutput(OutputRaster(self.OUTPUT, 'Output layer')) self.addOutput(OutputRaster(self.OUTPUT, 'Output layer'))
def processAlgorithm(self, progress): def processAlgorithm(self, progress):
writeOver = self.getParameterValue(self.WRITEOVER)
arguments = [] arguments = []
arguments.append('-a') arguments.append('-a')
arguments.append(str(self.getParameterValue(self.FIELD))) arguments.append(str(self.getParameterValue(self.FIELD)))
if not writeOver:
arguments.append('-ot') arguments.append('-ot')
arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)]) arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)])
dimType = self.getParameterValue(self.DIMENSIONS) dimType = self.getParameterValue(self.DIMENSIONS)
if dimType == 0: if dimType == 0:
# size in pixels # size in pixels