|
62 | 62 | from processing.algs.gdal.gdal2xyz import gdal2xyz
|
63 | 63 | from processing.algs.gdal.polygonize import polygonize
|
64 | 64 | from processing.algs.gdal.pansharp import pansharp
|
| 65 | +from processing.algs.gdal.merge import merge |
65 | 66 |
|
66 | 67 | from processing.tools.system import isWindows
|
67 | 68 |
|
@@ -2680,6 +2681,61 @@ def testWarp(self):
|
2680 | 2681 | source + ' ' +
|
2681 | 2682 | outdir + '/check.jpg'])
|
2682 | 2683 |
|
| 2684 | + def testMerge(self): |
| 2685 | + context = QgsProcessingContext() |
| 2686 | + feedback = QgsProcessingFeedback() |
| 2687 | + source = [os.path.join(testDataPath, 'dem1.tif'), os.path.join(testDataPath, 'dem1.tif')] |
| 2688 | + alg = merge() |
| 2689 | + alg.initAlgorithm() |
| 2690 | + |
| 2691 | + with tempfile.TemporaryDirectory() as outdir: |
| 2692 | + # this algorithm creates temporary text file with input layers |
| 2693 | + # so we strip its path, leaving only filename |
| 2694 | + cmd = alg.getConsoleCommands({'INPUT': source, |
| 2695 | + 'OUTPUT': outdir + '/check.tif'}, context, feedback) |
| 2696 | + t = cmd[1] |
| 2697 | + cmd[1] = t[:t.find('--optfile') + 10] + t[t.find('mergeInputFiles.txt'):] |
| 2698 | + self.assertEqual(cmd, |
| 2699 | + ['gdal_merge.py', |
| 2700 | + '-ot Float32 -of GTiff ' + |
| 2701 | + '-o ' + outdir + '/check.tif ' + |
| 2702 | + '--optfile mergeInputFiles.txt']) |
| 2703 | + # separate |
| 2704 | + cmd = alg.getConsoleCommands({'INPUT': source, |
| 2705 | + 'SEPARATE': True, |
| 2706 | + 'OUTPUT': outdir + '/check.tif'}, context, feedback) |
| 2707 | + t = cmd[1] |
| 2708 | + cmd[1] = t[:t.find('--optfile') + 10] + t[t.find('mergeInputFiles.txt'):] |
| 2709 | + self.assertEqual(cmd, |
| 2710 | + ['gdal_merge.py', |
| 2711 | + '-separate -ot Float32 -of GTiff ' + |
| 2712 | + '-o ' + outdir + '/check.tif ' + |
| 2713 | + '--optfile mergeInputFiles.txt']) |
| 2714 | + |
| 2715 | + # assign nodata |
| 2716 | + cmd = alg.getConsoleCommands({'INPUT': source, |
| 2717 | + 'EXTRA': '-tap -ps 0.1 0.1', |
| 2718 | + 'OUTPUT': outdir + '/check.tif'}, context, feedback) |
| 2719 | + t = cmd[1] |
| 2720 | + cmd[1] = t[:t.find('--optfile') + 10] + t[t.find('mergeInputFiles.txt'):] |
| 2721 | + self.assertEqual(cmd, |
| 2722 | + ['gdal_merge.py', |
| 2723 | + '-ot Float32 -of GTiff -tap -ps 0.1 0.1 ' + |
| 2724 | + '-o ' + outdir + '/check.tif ' + |
| 2725 | + '--optfile mergeInputFiles.txt']) |
| 2726 | + |
| 2727 | + # additional parameters |
| 2728 | + cmd = alg.getConsoleCommands({'INPUT': source, |
| 2729 | + 'NODATA_OUTPUT': -9999, |
| 2730 | + 'OUTPUT': outdir + '/check.tif'}, context, feedback) |
| 2731 | + t = cmd[1] |
| 2732 | + cmd[1] = t[:t.find('--optfile') + 10] + t[t.find('mergeInputFiles.txt'):] |
| 2733 | + self.assertEqual(cmd, |
| 2734 | + ['gdal_merge.py', |
| 2735 | + '-a_nodata -9999 -ot Float32 -of GTiff ' + |
| 2736 | + '-o ' + outdir + '/check.tif ' + |
| 2737 | + '--optfile mergeInputFiles.txt']) |
| 2738 | + |
2683 | 2739 | def testRearrangeBands(self):
|
2684 | 2740 | context = QgsProcessingContext()
|
2685 | 2741 | feedback = QgsProcessingFeedback()
|
|
0 commit comments