additional parameters support in gdalinfo algorithm

This commit is contained in:
Alexander Bruy 2019-06-24 15:06:41 +03:00
parent 5b27b72191
commit 1e7704ab60
2 changed files with 25 additions and 1 deletions

View File

@ -25,6 +25,8 @@ import os
from qgis.PyQt.QtGui import QIcon
from qgis.core import (QgsProcessingException,
QgsProcessingParameterDefinition,
QgsProcessingParameterString,
QgsProcessingParameterRasterLayer,
QgsProcessingParameterBoolean,
QgsProcessingParameterFileDestination)
@ -41,6 +43,7 @@ class gdalinfo(GdalAlgorithm):
STATS = 'STATS'
NO_GCP = 'NOGCP'
NO_METADATA = 'NO_METADATA'
EXTRA = 'EXTRA'
OUTPUT = 'OUTPUT'
def __init__(self):
@ -62,6 +65,13 @@ class gdalinfo(GdalAlgorithm):
self.tr('Suppress metadata info'),
defaultValue=False))
extra_param = QgsProcessingParameterString(self.EXTRA,
self.tr('Additional command-line parameters'),
defaultValue=None,
optional=True)
extra_param.setFlags(extra_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
self.addParameter(extra_param)
self.addParameter(QgsProcessingParameterFileDestination(self.OUTPUT,
self.tr('Layer information'),
self.tr('HTML files (*.html)')))
@ -94,10 +104,14 @@ class gdalinfo(GdalAlgorithm):
arguments.append('-nogcp')
if self.parameterAsBoolean(parameters, self.NO_METADATA, context):
arguments.append('-nomd')
if self.EXTRA in parameters and parameters[self.EXTRA] not in (None, ''):
extra = self.parameterAsString(parameters, self.EXTRA, context)
arguments.append(extra)
raster = self.parameterAsRasterLayer(parameters, self.INPUT, context)
if raster is None:
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
arguments.append(raster.source())
return [self.commandName(), GdalUtils.escapeAndJoin(arguments)]

View File

@ -1290,6 +1290,16 @@ class TestGdalAlgorithms(unittest.TestCase, AlgorithmsTestBase.AlgorithmsTest):
['gdalinfo',
'-stats "' + source + '"'])
self.assertEqual(
alg.getConsoleCommands({'INPUT': source,
'MIN_MAX': False,
'NOGCP': False,
'NO_METADATA': False,
'STATS': False,
'EXTRA': '-proj4 -listmdd -checksum'}, context, feedback),
['gdalinfo',
'-proj4 -listmdd -checksum "' + source + '"'])
def testGdalTindex(self):
context = QgsProcessingContext()
feedback = QgsProcessingFeedback()