Skip to content

Commit a5365e2

Browse files
committedJan 1, 2019
[processing] fix handling of the mask layer in the gdal_sieve algorithm
(fix #20713)
1 parent 1233a21 commit a5365e2

File tree

3 files changed

+67
-19
lines changed

3 files changed

+67
-19
lines changed
 

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
104104
if self.parameterAsBool(parameters, self.NO_MASK, context):
105105
arguments.append('-nomask')
106106

107-
mask = self.parameterAsRasterLayer(parameters, self.INPUT, context)
107+
mask = self.parameterAsRasterLayer(parameters, self.MASK_LAYER, context)
108108
if mask:
109109
arguments.append('-mask {}'.format(mask.source()))
110110

‎python/plugins/processing/tests/GdalAlgorithmsTest.py

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
from processing.algs.gdal.fillnodata import fillnodata
6161
from processing.algs.gdal.rearrange_bands import rearrange_bands
6262
from processing.algs.gdal.gdaladdo import gdaladdo
63+
from processing.algs.gdal.sieve import sieve
6364

6465
from processing.tools.system import isWindows
6566

@@ -2448,6 +2449,71 @@ def testGdalAddo(self):
24482449
['gdaladdo',
24492450
source + ' ' + '-r nearest 2 4 8 16'])
24502451

2452+
def testSieve(self):
2453+
context = QgsProcessingContext()
2454+
feedback = QgsProcessingFeedback()
2455+
source = os.path.join(testDataPath, 'dem.tif')
2456+
mask = os.path.join(testDataPath, 'raster.tif')
2457+
2458+
with tempfile.TemporaryDirectory() as outdir:
2459+
outsource = outdir + '/check.tif'
2460+
alg = sieve()
2461+
alg.initAlgorithm()
2462+
2463+
# defaults
2464+
self.assertEqual(
2465+
alg.getConsoleCommands({'INPUT': source,
2466+
'THRESHOLD': 10,
2467+
'EIGHT_CONNECTEDNESS': False,
2468+
'NO_MASK': False,
2469+
'MASK_LAYER': None,
2470+
'OUTPUT': outsource}, context, feedback),
2471+
['gdal_sieve.py',
2472+
'-st 10 -4 -of GTiff ' +
2473+
source + ' ' +
2474+
outsource])
2475+
2476+
# Eight connectedness and custom threshold
2477+
self.assertEqual(
2478+
alg.getConsoleCommands({'INPUT': source,
2479+
'THRESHOLD': 16,
2480+
'EIGHT_CONNECTEDNESS': True,
2481+
'NO_MASK': False,
2482+
'MASK_LAYER': None,
2483+
'OUTPUT': outsource}, context, feedback),
2484+
['gdal_sieve.py',
2485+
'-st 16 -8 -of GTiff ' +
2486+
source + ' ' +
2487+
outsource])
2488+
2489+
# without default mask layer
2490+
self.assertEqual(
2491+
alg.getConsoleCommands({'INPUT': source,
2492+
'THRESHOLD': 10,
2493+
'EIGHT_CONNECTEDNESS': False,
2494+
'NO_MASK': True,
2495+
'MASK_LAYER': None,
2496+
'OUTPUT': outsource}, context, feedback),
2497+
['gdal_sieve.py',
2498+
'-st 10 -4 -nomask -of GTiff ' +
2499+
source + ' ' +
2500+
outsource])
2501+
2502+
# defaults with external validity mask
2503+
self.assertEqual(
2504+
alg.getConsoleCommands({'INPUT': source,
2505+
'THRESHOLD': 10,
2506+
'EIGHT_CONNECTEDNESS': False,
2507+
'NO_MASK': False,
2508+
'MASK_LAYER': mask,
2509+
'OUTPUT': outsource}, context, feedback),
2510+
['gdal_sieve.py',
2511+
'-st 10 -4 -mask ' +
2512+
mask +
2513+
' -of GTiff ' +
2514+
source + ' ' +
2515+
outsource])
2516+
24512517

24522518
class TestGdalOgrToPostGis(unittest.TestCase):
24532519

‎python/plugins/processing/tests/testdata/gdal_algorithm_tests.yaml

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -420,24 +420,6 @@ tests:
420420
hash: ee2b317e022da1001378fac60c9b613a74d3566b9870f9d121e6e322
421421
type: rasterhash
422422

423-
# Disabled as gdal_sieve is not available on Travis
424-
# - algorithm: gdal:sieve
425-
# name: Sieve
426-
# params:
427-
# EIGHT_CONNECTEDNESS: false
428-
# INPUT:
429-
# name: dem.tif
430-
# type: raster
431-
# MASK_LAYER:
432-
# name: dem.tif
433-
# type: raster
434-
# NO_MASK: false
435-
# THRESHOLD: 10
436-
# results:
437-
# OUTPUT:
438-
# hash: 1ea6a8c838add299dc3f6f9f529eb5945664f68bae97be9ca80b1754
439-
# type: rasterhash
440-
441423
- algorithm: gdal:slope
442424
name: Slope
443425
params:

0 commit comments

Comments
 (0)
Please sign in to comment.