Skip to content

Commit 7628c8f

Browse files
committed
[processing] add option to keep resolution when clipping raster
1 parent c9de713 commit 7628c8f

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

python/plugins/processing/gdal/ClipByMask.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import os
2727
from PyQt4 import QtGui
28+
from osgeo import gdal
2829
from qgis.core import *
2930

3031
from processing.core.GeoAlgorithm import GeoAlgorithm
@@ -45,6 +46,7 @@ class ClipByMask(GeoAlgorithm):
4546
NO_DATA = "NO_DATA"
4647
MASK = "MASK"
4748
ALPHA_BAND = "ALPHA_BAND"
49+
KEEP_RESOLUTION = "KEEP_RESOLUTION"
4850
EXTRA = "EXTRA"
4951

5052
def getIcon(self):
@@ -58,6 +60,7 @@ def defineCharacteristics(self):
5860
self.addParameter(ParameterVector(self.MASK, "Mask layer", [ParameterVector.VECTOR_TYPE_POLYGON]))
5961
self.addParameter(ParameterString(self.NO_DATA, "Nodata value, leave as none to take the nodata value from input", "none"))
6062
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))
6164
self.addParameter(ParameterString(self.EXTRA, "Additional creation parameters", ""))
6265
self.addOutput(OutputRaster(self.OUTPUT, "Output layer"))
6366

@@ -66,6 +69,7 @@ def processAlgorithm(self, progress):
6669
mask = self.getParameterValue(self.MASK)
6770
noData = str(self.getParameterValue(self.NO_DATA))
6871
addAlphaBand = self.getParameterValue(self.ALPHA_BAND)
72+
keepResolution = self.getParameterValue(self.KEEP_RESOLUTION)
6973
extra = str(self.getParameterValue(self.EXTRA))
7074

7175
arguments = []
@@ -75,6 +79,15 @@ def processAlgorithm(self, progress):
7579
arguments.append("-dstnodata")
7680
arguments.append(noData)
7781

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+
7891
arguments.append("-cutline")
7992
arguments.append(mask)
8093
arguments.append("-crop_to_cutline")

0 commit comments

Comments
 (0)