|
33 | 33 | from processing.tools.system import isWindows
|
34 | 34 | from ..Grass7Utils import Grass7Utils
|
35 | 35 | from os import path
|
| 36 | +from copy import deepcopy |
36 | 37 |
|
37 | 38 |
|
38 | 39 | def multipleOutputDir(alg, field, basename=None):
|
@@ -112,58 +113,44 @@ def regroupRasters(alg, parameters, field, groupField, subgroupField=None, extFi
|
112 | 113 | :param parameters:
|
113 | 114 | """
|
114 | 115 | # List of rasters names
|
| 116 | + |
| 117 | + new_parameters = deepcopy(parameters) |
| 118 | + |
115 | 119 | rasters = alg.getParameterFromName(field)
|
116 | 120 | rastersList = rasters.value.split(';')
|
117 |
| - alg.parameters.remove(rasters) |
| 121 | + del new_parameters[field] |
118 | 122 |
|
119 | 123 | # Insert a i.group command
|
120 | 124 | group = getParameterFromString("ParameterString|{}|group of rasters|None|False|False".format(groupField))
|
121 |
| - group.value = alg.getTempFilename() |
122 |
| - alg.addParameter(group) |
| 125 | + new_parameters[group.name()] = alg.getTempFilename() |
123 | 126 |
|
124 | 127 | if subgroupField:
|
125 | 128 | subgroup = getParameterFromString("ParameterString|{}|subgroup of rasters|None|False|False".format(subgroupField))
|
126 |
| - subgroup.value = alg.getTempFilename() |
127 |
| - alg.addParameter(subgroup) |
| 129 | + new_parameters[subgroup.name()] = alg.getTempFilename() |
128 | 130 |
|
129 | 131 | command = 'i.group group={}{} input={}'.format(
|
130 |
| - group.value, |
131 |
| - ' subgroup={}'.format(subgroup.value) if subgroupField else '', |
| 132 | + new_parameters[group.name()], |
| 133 | + ' subgroup={}'.format(new_parameters[subgroup.name()]) if subgroupField else '', |
132 | 134 | ','.join([alg.exportedLayers[f] for f in rastersList])
|
133 | 135 | )
|
134 | 136 | alg.commands.append(command)
|
135 | 137 |
|
136 | 138 | # Handle external files
|
137 |
| - origExtParams = {} |
138 | 139 | if subgroupField and extFile:
|
139 | 140 | for ext in list(extFile.keys()):
|
140 |
| - extFileName = alg.getParameterValue(ext) |
| 141 | + extFileName = new_parameters[ext] |
141 | 142 | if extFileName:
|
142 | 143 | shortFileName = path.basename(extFileName)
|
143 | 144 | destPath = path.join(Grass7Utils.grassMapsetFolder(),
|
144 | 145 | 'PERMANENT',
|
145 |
| - 'group', group.value, |
146 |
| - 'subgroup', subgroup.value, |
| 146 | + 'group', new_parameters[group.name()], |
| 147 | + 'subgroup', new_parameters[subgroup.name()], |
147 | 148 | extFile[ext], shortFileName)
|
148 | 149 | copyFile(alg, extFileName, destPath)
|
149 |
| - origExtParams[ext] = extFileName |
150 |
| - alg.setParameterValue(ext, shortFileName) |
| 150 | + new_parameters[ext] = shortFileName |
151 | 151 |
|
152 | 152 | # modify parameters values
|
153 |
| - alg.processCommand() |
154 |
| - |
155 |
| - # Re-add input rasters |
156 |
| - alg.addParameter(rasters) |
157 |
| - |
158 |
| - # replace external files value with original value |
159 |
| - for param in list(origExtParams.keys()): |
160 |
| - alg.setParameterValue(param, origExtParams[param]) |
161 |
| - |
162 |
| - # Delete group: |
163 |
| - alg.parameters.remove(group) |
164 |
| - if subgroupField: |
165 |
| - alg.parameters.remove(subgroup) |
166 |
| - return group.value, subgroup.value |
| 153 | + alg.processCommand(new_parameters) |
167 | 154 |
|
168 | 155 | return group.value
|
169 | 156 |
|
|
0 commit comments