|
60 | 60 | from processing.algs.gdal.fillnodata import fillnodata |
61 | 61 | from processing.algs.gdal.rearrange_bands import rearrange_bands |
62 | 62 | from processing.algs.gdal.gdaladdo import gdaladdo |
| 63 | +from processing.algs.gdal.sieve import sieve |
63 | 64 |
|
64 | 65 | from processing.tools.system import isWindows |
65 | 66 |
|
@@ -2448,6 +2449,71 @@ def testGdalAddo(self): |
2448 | 2449 | ['gdaladdo', |
2449 | 2450 | source + ' ' + '-r nearest 2 4 8 16']) |
2450 | 2451 |
|
| 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 | + |
2451 | 2517 |
|
2452 | 2518 | class TestGdalOgrToPostGis(unittest.TestCase): |
2453 | 2519 |
|
|
0 commit comments