25
25
26
26
import os
27
27
from PyQt4 import QtGui
28
+ from osgeo import gdal
28
29
from qgis .core import *
29
30
30
31
from processing .core .GeoAlgorithm import GeoAlgorithm
@@ -45,6 +46,7 @@ class ClipByMask(GeoAlgorithm):
45
46
NO_DATA = "NO_DATA"
46
47
MASK = "MASK"
47
48
ALPHA_BAND = "ALPHA_BAND"
49
+ KEEP_RESOLUTION = "KEEP_RESOLUTION"
48
50
EXTRA = "EXTRA"
49
51
50
52
def getIcon (self ):
@@ -58,6 +60,7 @@ def defineCharacteristics(self):
58
60
self .addParameter (ParameterVector (self .MASK , "Mask layer" , [ParameterVector .VECTOR_TYPE_POLYGON ]))
59
61
self .addParameter (ParameterString (self .NO_DATA , "Nodata value, leave as none to take the nodata value from input" , "none" ))
60
62
self .addParameter (ParameterBoolean (self .ALPHA_BAND , "Create and output alpha band" , False ))
63
+ self .addParameter (ParameterBoolean (self .KEEP_RESOLUTION , "Keep resolution of output raster" , False ))
61
64
self .addParameter (ParameterString (self .EXTRA , "Additional creation parameters" , "" ))
62
65
self .addOutput (OutputRaster (self .OUTPUT , "Output layer" ))
63
66
@@ -66,6 +69,7 @@ def processAlgorithm(self, progress):
66
69
mask = self .getParameterValue (self .MASK )
67
70
noData = str (self .getParameterValue (self .NO_DATA ))
68
71
addAlphaBand = self .getParameterValue (self .ALPHA_BAND )
72
+ keepResolution = self .getParameterValue (self .KEEP_RESOLUTION )
69
73
extra = str (self .getParameterValue (self .EXTRA ))
70
74
71
75
arguments = []
@@ -75,6 +79,15 @@ def processAlgorithm(self, progress):
75
79
arguments .append ("-dstnodata" )
76
80
arguments .append (noData )
77
81
82
+ if keepResolution :
83
+ r = gdal .Open (self .getParameterValue (self .INPUT ))
84
+ geoTransform = r .GetGeoTransform ()
85
+ r = None
86
+ arguments .append ("-tr" )
87
+ arguments .append (str (geoTransform [1 ]))
88
+ arguments .append (str (geoTransform [5 ]))
89
+ arguments .append ("-tap" )
90
+
78
91
arguments .append ("-cutline" )
79
92
arguments .append (mask )
80
93
arguments .append ("-crop_to_cutline" )
0 commit comments