Skip to content

Commit

Permalink
restore columns and rows parameters for the extremely rare case if
Browse files Browse the repository at this point in the history
someone have used native interpolation algs in scripts/models

(cherry picked from commit e86ca50)
  • Loading branch information
alexbruy committed Jan 1, 2019
1 parent 9a524e1 commit 5167b29
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 6 deletions.
27 changes: 24 additions & 3 deletions python/plugins/processing/algs/qgis/IdwInterpolation.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
QgsProcessingUtils,
QgsProcessingParameterNumber,
QgsProcessingParameterExtent,
QgsProcessingParameterDefinition,
QgsProcessingParameterRasterDestination,
QgsProcessingException)
from qgis.analysis import (QgsInterpolator,
Expand All @@ -50,6 +51,8 @@ class IdwInterpolation(QgisAlgorithm):
INTERPOLATION_DATA = 'INTERPOLATION_DATA'
DISTANCE_COEFFICIENT = 'DISTANCE_COEFFICIENT'
PIXEL_SIZE = 'PIXEL_SIZE'
COLUMNS = 'COLUMNS'
ROWS = 'ROWS'
EXTENT = 'EXTENT'
OUTPUT = 'OUTPUT'

Expand Down Expand Up @@ -83,6 +86,20 @@ def initAlgorithm(self, config=None):
default=0.1)
self.addParameter(pixel_size_param)

cols_param = QgsProcessingParameterNumber(self.COLUMNS,
self.tr('Number of columns'),
optional=True,
minValue=0, maxValue=10000000)
cols_param.setFlags(cols_param.flags() | QgsProcessingParameterDefinition.FlagHidden)
self.addParameter(cols_param)

rows_param = QgsProcessingParameterNumber(self.ROWS,
self.tr('Number of rows'),
optional=True,
minValue=0, maxValue=10000000)
rows_param.setFlags(rows_param.flags() | QgsProcessingParameterDefinition.FlagHidden)
self.addParameter(rows_param)

self.addParameter(QgsProcessingParameterRasterDestination(self.OUTPUT,
self.tr('Interpolated')))

Expand All @@ -99,6 +116,13 @@ def processAlgorithm(self, parameters, context, feedback):
pixel_size = self.parameterAsDouble(parameters, self.PIXEL_SIZE, context)
output = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)

columns = self.parameterAsInt(parameters, self.COLUMNS, context)
rows = self.parameterAsInt(parameters, self.ROWS, context)
if columns == 0:
columns = max(round(bbox.width() / pixel_size) + 1, 1)
if rows == 0:
rows = max(round(bbox.height() / pixel_size) + 1, 1)

if interpolationData is None:
raise QgsProcessingException(
self.tr('You need to specify at least one input layer.'))
Expand Down Expand Up @@ -127,9 +151,6 @@ def processAlgorithm(self, parameters, context, feedback):
interpolator = QgsIDWInterpolator(layerData)
interpolator.setDistanceCoefficient(coefficient)

rows = max(round(bbox.height() / pixel_size) + 1, 1)
columns = max(round(bbox.width() / pixel_size) + 1, 1)

writer = QgsGridFileWriter(interpolator,
output,
bbox,
Expand Down
27 changes: 24 additions & 3 deletions python/plugins/processing/algs/qgis/TinInterpolation.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
QgsProcessingParameterEnum,
QgsProcessingParameterNumber,
QgsProcessingParameterExtent,
QgsProcessingParameterDefinition,
QgsProcessingParameterRasterDestination,
QgsWkbTypes,
QgsProcessingParameterFeatureSink,
Expand All @@ -53,6 +54,8 @@ class TinInterpolation(QgisAlgorithm):
INTERPOLATION_DATA = 'INTERPOLATION_DATA'
METHOD = 'METHOD'
PIXEL_SIZE = 'PIXEL_SIZE'
COLUMNS = 'COLUMNS'
ROWS = 'ROWS'
EXTENT = 'EXTENT'
OUTPUT = 'OUTPUT'
TRIANGULATION = 'TRIANGULATION'
Expand Down Expand Up @@ -91,6 +94,20 @@ def initAlgorithm(self, config=None):
default=0.1)
self.addParameter(pixel_size_param)

cols_param = QgsProcessingParameterNumber(self.COLUMNS,
self.tr('Number of columns'),
optional=True,
minValue=0, maxValue=10000000)
cols_param.setFlags(cols_param.flags() | QgsProcessingParameterDefinition.FlagHidden)
self.addParameter(cols_param)

rows_param = QgsProcessingParameterNumber(self.ROWS,
self.tr('Number of rows'),
optional=True,
minValue=0, maxValue=10000000)
rows_param.setFlags(rows_param.flags() | QgsProcessingParameterDefinition.FlagHidden)
self.addParameter(rows_param)

self.addParameter(QgsProcessingParameterRasterDestination(self.OUTPUT,
self.tr('Interpolated')))

Expand All @@ -114,6 +131,13 @@ def processAlgorithm(self, parameters, context, feedback):
pixel_size = self.parameterAsDouble(parameters, self.PIXEL_SIZE, context)
output = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)

columns = self.parameterAsInt(parameters, self.COLUMNS, context)
rows = self.parameterAsInt(parameters, self.ROWS, context)
if columns == 0:
columns = max(round(bbox.width() / pixel_size) + 1, 1)
if rows == 0:
rows = max(round(bbox.height() / pixel_size) + 1, 1)

if interpolationData is None:
raise QgsProcessingException(
self.tr('You need to specify at least one input layer.'))
Expand Down Expand Up @@ -154,9 +178,6 @@ def processAlgorithm(self, parameters, context, feedback):
if triangulation_sink is not None:
interpolator.setTriangulationSink(triangulation_sink)

rows = max(round(bbox.height() / pixel_size) + 1, 1)
columns = max(round(bbox.width() / pixel_size) + 1, 1)

writer = QgsGridFileWriter(interpolator,
output,
bbox,
Expand Down

0 comments on commit 5167b29

Please sign in to comment.