Commit c3b57a8d authored by PIERSON Julie's avatar PIERSON Julie
Browse files

alg now ok to be launched from toolbox history

parent 2d725296
......@@ -31,7 +31,9 @@ from qgis.PyQt.QtWidgets import (QTreeWidgetItem,
QInputDialog,
)
from qgis.core import (QgsApplication,
QgsProject,
QgsMapLayer,
QgsRasterLayer,
QgsMapLayerProxyModel)
from processing.gui.wrappers import WidgetWrapper
from osgeo import gdal
......@@ -59,7 +61,7 @@ class BandTableWidget(BASE, WIDGET):
self._removeBandData()
# get raster layer
layer = self.cmbLayers.currentLayer()
#QMessageBox.information(None, self.tr('tralala'), self.tr(str(layer)))
#QMessageBox.information(None, self.tr('tralala'), self.tr(str(layer.name())))
input_raster = gdal.Open(layer.source())
# get number of bands in raster
nbands = input_raster.RasterCount
......@@ -151,20 +153,37 @@ class BandTableWidget(BASE, WIDGET):
def setValue(self, value):
self.bandClassTree.clear()
rows = value.split(';')
param = value.split(';')
# setting input layer
layer_name = param[0]
layer = QgsProject.instance().mapLayersByName(layer_name)[0]
self.cmbLayers.setLayer(layer)
# setting table values
rows = param[2:]
for r in rows:
v = r.split(',')
item = QTreeWidgetItem()
item.setText(0, v[0])
item.setText(1, v[1])
item.setText(2, v[2])
self.bandClassTree.addTopLevelItem(item)
# return a list where 1st element is input raster path
# and then each element for a table row
def value(self):
allValues = self.cmbLayers.currentLayer().source()
# adding input layer names to values (useful to select again this layer when using toolbox history)
allValues = self.cmbLayers.currentLayer().name()
allValues += ';'
# adding input layer path to values
allValues += self.cmbLayers.currentLayer().source()
# allValues = [self.cmbLayers.currentLayer().source()]
# allValues += self.bandNames()
allValues += ';'
# adding table content to values
for b in self.bandNames():
allValues += '{0},{1},{2};'.format(b[0], b[1], b[2])
return allValues[:-1]
#return allValues
class BandTableWidgetWrapper(WidgetWrapper):
......
......@@ -33,9 +33,8 @@ __revision__ = '$Format:%H$'
from qgis.PyQt.QtCore import QCoreApplication
from qgis.core import (QgsProcessing,
QgsProcessingAlgorithm,
QgsProcessingParameterRasterLayer,
QgsRasterLayer,
QgsProcessingParameterDefinition,
QgsProcessingParameterString,
QgsProcessingParameterRasterDestination)
from osgeo import gdal
......@@ -54,8 +53,9 @@ class ParameterBandTable(QgsProcessingParameterDefinition):
return ParameterBandTable(self.name(), self.description(), self.parent, self.flags())
# getting output values as a list, 1st element for layer then one element for each row :
# ['/path/to/layer.tif', 'band 1, old name 1, new name 1', 'band 2, old name 2, new name 2']
# getting output values as a list, 1st element for layer name, 2nd for layer path,
# then one element for each row :
# ['mylayer', '/path/to/mylayer.tif', 'band 1, old name 1, new name 1', 'band 2, old name 2, new name 2']
# (see BandTableWidget.py to change this)
@staticmethod
def tableValuesAsList(value):
......@@ -117,8 +117,8 @@ class MergeAndRenameAlgorithm(QgsProcessingAlgorithm):
# GETTING USEFUL PARAMETERS
input_raster_path = input_param[0]
band_data = input_param[1:]
input_raster_path = input_param[1]
band_data = input_param[2:]
# number of rows in table
nb_row = len(band_data)
......@@ -133,18 +133,14 @@ class MergeAndRenameAlgorithm(QgsProcessingAlgorithm):
# [['band 1', 1], ['band 2', 2], ['band 3', 3]]
band_table = [i.split(',') for i in band_data]
# REORDERING BANDS
# get order of bands as a list, i.e. [3,2,1]
band_order = [i[index_bandorder] for i in band_table]
# reordering bands using gdal_translate
kwargs = {
'bandList': band_order
}
kwargs = {'bandList': band_order}
output_raster = gdal.Translate(output_raster_path, input_raster_path, **kwargs)
# RENAMING BANDS
# iterate over each band to set its description using table input
......@@ -156,7 +152,6 @@ class MergeAndRenameAlgorithm(QgsProcessingAlgorithm):
new_name = band_table[band_number][index_oldname]
band.SetDescription(new_name)
# RETURNING RESULTS
# Return the results of the algorithm as a dictionary
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment