Skip to content

Commit c39e2b8

Browse files
authoredDec 4, 2018
Merge pull request #8445 from NaturalGIS/add_te_paramater_in_gdal_clip_by_mask
add the -te and -te_srs and -multi parameters to the gdalwarp tool used to clip rasters by mask layers
2 parents d4c62d1 + 3165382 commit c39e2b8

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
 

‎python/plugins/processing/algs/gdal/ClipRasterByMask.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,12 @@
3434
QgsProcessingException,
3535
QgsProcessingParameterDefinition,
3636
QgsProcessingParameterFeatureSource,
37+
QgsProcessingParameterCrs,
3738
QgsProcessingParameterRasterLayer,
3839
QgsProcessingParameterEnum,
3940
QgsProcessingParameterString,
4041
QgsProcessingParameterNumber,
42+
QgsProcessingParameterExtent,
4143
QgsProcessingParameterBoolean,
4244
QgsProcessingParameterRasterDestination)
4345
from processing.algs.gdal.GdalAlgorithm import GdalAlgorithm
@@ -56,6 +58,9 @@ class ClipRasterByMask(GdalAlgorithm):
5658
KEEP_RESOLUTION = 'KEEP_RESOLUTION'
5759
OPTIONS = 'OPTIONS'
5860
DATA_TYPE = 'DATA_TYPE'
61+
TARGET_EXTENT = 'TARGET_EXTENT'
62+
TARGET_EXTENT_CRS = 'TARGET_EXTENT_CRS'
63+
MULTITHREADING = 'MULTITHREADING'
5964
OUTPUT = 'OUTPUT'
6065

6166
TYPES = ['Use input layer data type', 'Byte', 'Int16', 'UInt16', 'UInt32', 'Int32', 'Float32', 'Float64', 'CInt16', 'CInt32', 'CFloat32', 'CFloat64']
@@ -84,6 +89,24 @@ def initAlgorithm(self, config=None):
8489
self.tr('Keep resolution of output raster'),
8590
defaultValue=False))
8691

92+
target_extent_param = QgsProcessingParameterExtent(self.TARGET_EXTENT,
93+
self.tr('Georeferenced extents of output file to be created'),
94+
optional=True)
95+
target_extent_param.setFlags(target_extent_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
96+
self.addParameter(target_extent_param)
97+
98+
target_extent_crs_param = QgsProcessingParameterCrs(self.TARGET_EXTENT_CRS,
99+
self.tr('CRS of the target raster extent'),
100+
optional=True)
101+
target_extent_crs_param.setFlags(target_extent_crs_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
102+
self.addParameter(target_extent_crs_param)
103+
104+
multithreading_param = QgsProcessingParameterBoolean(self.MULTITHREADING,
105+
self.tr('Use multithreaded warping implementation'),
106+
defaultValue=False)
107+
multithreading_param.setFlags(multithreading_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
108+
self.addParameter(multithreading_param)
109+
87110
options_param = QgsProcessingParameterString(self.OPTIONS,
88111
self.tr('Additional creation options'),
89112
defaultValue='',
@@ -164,6 +187,22 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
164187
if nodata is not None:
165188
arguments.append('-dstnodata {}'.format(nodata))
166189

190+
extent = self.parameterAsExtent(parameters, self.TARGET_EXTENT, context)
191+
if not extent.isNull():
192+
arguments.append('-te')
193+
arguments.append(extent.xMinimum())
194+
arguments.append(extent.yMinimum())
195+
arguments.append(extent.xMaximum())
196+
arguments.append(extent.yMaximum())
197+
198+
extentCrs = self.parameterAsCrs(parameters, self.TARGET_EXTENT_CRS, context)
199+
if extentCrs:
200+
arguments.append('-te_srs')
201+
arguments.append(extentCrs.authid())
202+
203+
if self.parameterAsBool(parameters, self.MULTITHREADING, context):
204+
arguments.append('-multi')
205+
167206
if options:
168207
arguments.extend(GdalUtils.parseCreationOptions(options))
169208

0 commit comments

Comments
 (0)
Please sign in to comment.