Skip to content

Commit ba03f1a

Browse files
committed
Move minimum layer extent calculation to c++
1 parent 189f804 commit ba03f1a

17 files changed

Lines changed: 113 additions & 46 deletions

python/core/processing/qgsprocessingutils.sip

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,12 @@ class QgsProcessingUtils
152152
available in Python bindings as createFeatureSink()
153153
%End
154154

155+
static QgsRectangle combineLayerExtents( const QList< QgsMapLayer *> layers, const QgsCoordinateReferenceSystem &crs = QgsCoordinateReferenceSystem() );
156+
%Docstring
157+
Combines the extent of several map ``layers``. If specified, the target ``crs``
158+
will be used to transform the layer's extent to the desired output reference system.
159+
:rtype: QgsRectangle
160+
%End
155161

156162
};
157163

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ def getConsoleCommands(self, parameters):
8888
noData = self.getParameterValue(self.NO_DATA)
8989
opts = self.getParameterValue(self.OPTIONS)
9090
projwin = self.getParameterValue(self.PROJWIN)
91+
layer = self.getParameterValue(self.INPUT)
92+
if not projwin:
93+
projwin = QgsProcessingUtils.combineLayerExtents([layer])
9194

9295
if noData is not None:
9396
noData = str(noData)

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ def getConsoleCommands(self, parameters):
6969
inLayer = self.getParameterValue(self.INPUT_LAYER)
7070
ogrLayer = ogrConnectionString(inLayer)[1:-1]
7171
clipExtent = self.getParameterValue(self.CLIP_EXTENT)
72+
if not clipExtent:
73+
clipExtent = QgsProcessingUtils.combineLayerExtents([inLayer])
7274

7375
output = self.getOutputFromName(self.OUTPUT_LAYER)
7476
outFile = output.value

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,8 @@ def getConsoleCommands(self, parameters):
203203
simplify = str(self.getParameterValue(self.SIMPLIFY))
204204
segmentize = str(self.getParameterValue(self.SEGMENTIZE))
205205
spat = self.getParameterValue(self.SPAT)
206+
if not spat:
207+
spat = QgsProcessingUtils.combineLayerExtents([inLayer])
206208
clip = self.getParameterValue(self.CLIP)
207209
where = str(self.getParameterValue(self.WHERE))
208210
wherestring = '-where "' + where + '"'

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,8 @@ def getConsoleCommands(self, parameters):
205205
simplify = self.getParameterValue(self.SIMPLIFY)
206206
segmentize = self.getParameterValue(self.SEGMENTIZE)
207207
spat = self.getParameterValue(self.SPAT)
208+
if not spat:
209+
spat = QgsProcessingUtils.combineLayerExtents([inLayer])
208210
clip = self.getParameterValue(self.CLIP)
209211
where = self.getParameterValue(self.WHERE)
210212
gt = self.getParameterValue(self.GT)

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ def getConsoleCommands(self, parameters):
106106
inLayer = self.getParameterValue(self.INPUT)
107107
noData = self.getParameterValue(self.NO_DATA)
108108
rastext = str(self.getParameterValue(self.RAST_EXT))
109+
if not rastext:
110+
rastext = QgsProcessingUtils.combineLayerExtents([inLayer])
109111
opts = self.getParameterValue(self.OPTIONS)
110112
out = self.getOutputValue(self.OUTPUT)
111113

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,15 @@ def group(self):
104104
return self.tr('Raster conversion')
105105

106106
def getConsoleCommands(self, parameters):
107+
inLayer = self.getParameterValue(self.INPUT)
107108
out = self.getOutputValue(translate.OUTPUT)
108109
outsize = str(self.getParameterValue(self.OUTSIZE))
109110
outsizePerc = str(self.getParameterValue(self.OUTSIZE_PERC))
110111
noData = self.getParameterValue(self.NO_DATA)
111112
expand = self.getParameterFromName(self.EXPAND).options[self.getParameterValue(self.EXPAND)][1]
112113
projwin = str(self.getParameterValue(self.PROJWIN))
114+
if not projwin:
115+
projwin = QgsProcessingUtils.combineLayerExtents([inLayer])
113116
crsId = self.getParameterValue(self.SRS)
114117
sds = self.getParameterValue(self.SDS)
115118
opts = self.getParameterValue(self.OPTIONS)

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,13 @@ def group(self):
122122
return self.tr('Raster projections')
123123

124124
def getConsoleCommands(self, parameters):
125+
inLayer = self.getParameterValue(self.INPUT)
125126
srccrs = self.getParameterValue(self.SOURCE_SRS)
126127
dstcrs = self.getParameterValue(self.DEST_SRS)
127128
useRasterExtent = self.getParameterValue(self.USE_RASTER_EXTENT)
128129
rasterExtent = self.getParameterValue(self.RASTER_EXTENT)
130+
if not rasterExtent:
131+
rasterExtent = QgsProcessingUtils.combineLayerExtents([inLayer])
129132
extentCrs = self.getParameterValue(self.EXTENT_CRS)
130133
opts = self.getParameterValue(self.OPTIONS)
131134
noData = self.getParameterValue(self.NO_DATA)

python/plugins/processing/algs/grass7/Grass7Algorithm.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,9 @@ def processInputs(self):
371371

372372
region = \
373373
str(self.getParameterValue(self.GRASS_REGION_EXTENT_PARAMETER))
374+
if not region:
375+
region = QgsProcessingUtils.combineLayerExtents(layers)
376+
374377
regionCoords = region.split(',')
375378
command = 'g.region'
376379
command += ' n=' + str(regionCoords[3])

python/plugins/processing/algs/grass7/nviz7.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,9 @@ def processAlgorithm(self, parameters, context, feedback):
102102

103103
region = \
104104
str(self.getParameterValue(self.GRASS_REGION_EXTENT_PARAMETER))
105+
if not region:
106+
region = QgsProcessingUtils.combineLayerExtents(layers)
107+
105108
regionCoords = region.split(',')
106109
command = 'g.region '
107110
command += 'n=' + str(regionCoords[3])

0 commit comments

Comments
 (0)