mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-15 00:04:00 -04:00
[processing][gdal] Better error messages when invalid parameters are passed
This commit is contained in:
parent
787dd3413e
commit
f4599f13f1
@ -29,7 +29,8 @@ import os
|
|||||||
|
|
||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
|
|
||||||
from qgis.core import (QgsProcessingParameterRasterLayer,
|
from qgis.core import (QgsProcessingException,
|
||||||
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterCrs,
|
QgsProcessingParameterCrs,
|
||||||
QgsProcessingOutputRasterLayer)
|
QgsProcessingOutputRasterLayer)
|
||||||
from processing.algs.gdal.GdalAlgorithm import GdalAlgorithm
|
from processing.algs.gdal.GdalAlgorithm import GdalAlgorithm
|
||||||
@ -78,6 +79,9 @@ class AssignProjection(GdalAlgorithm):
|
|||||||
|
|
||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
fileName = inLayer.source()
|
fileName = inLayer.source()
|
||||||
|
|
||||||
crs = self.parameterAsCrs(parameters, self.CRS, context).authid()
|
crs = self.parameterAsCrs(parameters, self.CRS, context).authid()
|
||||||
|
@ -30,6 +30,7 @@ import os
|
|||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
|
|
||||||
from qgis.core import (QgsRasterFileWriter,
|
from qgis.core import (QgsRasterFileWriter,
|
||||||
|
QgsProcessingException,
|
||||||
QgsProcessingParameterDefinition,
|
QgsProcessingParameterDefinition,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterEnum,
|
QgsProcessingParameterEnum,
|
||||||
@ -110,6 +111,9 @@ class ClipRasterByExtent(GdalAlgorithm):
|
|||||||
|
|
||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException('Invalid input layer {}'.format(parameters[self.INPUT] if self.INPUT in parameters else 'INPUT'))
|
||||||
|
|
||||||
bbox = self.parameterAsExtent(parameters, self.EXTENT, context, inLayer.crs())
|
bbox = self.parameterAsExtent(parameters, self.EXTENT, context, inLayer.crs())
|
||||||
if self.NODATA in parameters and parameters[self.NODATA] is not None:
|
if self.NODATA in parameters and parameters[self.NODATA] is not None:
|
||||||
nodata = self.parameterAsDouble(parameters, self.NODATA, context)
|
nodata = self.parameterAsDouble(parameters, self.NODATA, context)
|
||||||
|
@ -31,6 +31,7 @@ from qgis.PyQt.QtGui import QIcon
|
|||||||
|
|
||||||
from qgis.core import (QgsRasterFileWriter,
|
from qgis.core import (QgsRasterFileWriter,
|
||||||
QgsProcessing,
|
QgsProcessing,
|
||||||
|
QgsProcessingException,
|
||||||
QgsProcessingParameterDefinition,
|
QgsProcessingParameterDefinition,
|
||||||
QgsProcessingParameterFeatureSource,
|
QgsProcessingParameterFeatureSource,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
@ -124,6 +125,8 @@ class ClipRasterByMask(GdalAlgorithm):
|
|||||||
|
|
||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
maskLayer, maskLayerName = self.getOgrCompatibleSource(self.MASK, parameters, context, feedback, executing)
|
maskLayer, maskLayerName = self.getOgrCompatibleSource(self.MASK, parameters, context, feedback, executing)
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@ __revision__ = '$Format:%H$'
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
from qgis.core import (QgsRasterFileWriter,
|
from qgis.core import (QgsRasterFileWriter,
|
||||||
|
QgsProcessingException,
|
||||||
QgsProcessingParameterDefinition,
|
QgsProcessingParameterDefinition,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterBand,
|
QgsProcessingParameterBand,
|
||||||
@ -102,6 +103,9 @@ class ColorRelief(GdalAlgorithm):
|
|||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
arguments = ['color-relief']
|
arguments = ['color-relief']
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
arguments.append(inLayer.source())
|
arguments.append(inLayer.source())
|
||||||
arguments.append(self.parameterAsFile(parameters, self.COLOR_TABLE, context))
|
arguments.append(self.parameterAsFile(parameters, self.COLOR_TABLE, context))
|
||||||
|
|
||||||
|
@ -25,7 +25,8 @@ __copyright__ = '(C) 2012, Victor Olaya'
|
|||||||
|
|
||||||
__revision__ = '$Format:%H$'
|
__revision__ = '$Format:%H$'
|
||||||
|
|
||||||
from qgis.core import (QgsProcessingParameterFeatureSource,
|
from qgis.core import (QgsProcessingException,
|
||||||
|
QgsProcessingParameterFeatureSource,
|
||||||
QgsProcessingParameterString,
|
QgsProcessingParameterString,
|
||||||
QgsProcessingParameterEnum,
|
QgsProcessingParameterEnum,
|
||||||
QgsProcessingParameterCrs,
|
QgsProcessingParameterCrs,
|
||||||
@ -189,6 +190,9 @@ class OgrToPostGis(GdalAlgorithm):
|
|||||||
|
|
||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
ogrLayer, layername = self.getOgrCompatibleSource(self.INPUT, parameters, context, feedback, executing)
|
ogrLayer, layername = self.getOgrCompatibleSource(self.INPUT, parameters, context, feedback, executing)
|
||||||
|
if not layername:
|
||||||
|
raise QgsProcessingException(self.invalidSourceError(parameters, self.INPUT))
|
||||||
|
|
||||||
shapeEncoding = self.parameterAsString(parameters, self.SHAPE_ENCODING, context)
|
shapeEncoding = self.parameterAsString(parameters, self.SHAPE_ENCODING, context)
|
||||||
ssrs = self.parameterAsCrs(parameters, self.S_SRS, context).authid()
|
ssrs = self.parameterAsCrs(parameters, self.S_SRS, context).authid()
|
||||||
tsrs = self.parameterAsCrs(parameters, self.T_SRS, context).authid()
|
tsrs = self.parameterAsCrs(parameters, self.T_SRS, context).authid()
|
||||||
|
@ -27,7 +27,8 @@ __revision__ = '$Format:%H$'
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from qgis.core import (QgsRasterFileWriter,
|
from qgis.core import (QgsProcessingException,
|
||||||
|
QgsRasterFileWriter,
|
||||||
QgsProcessingParameterDefinition,
|
QgsProcessingParameterDefinition,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterBand,
|
QgsProcessingParameterBand,
|
||||||
@ -102,6 +103,8 @@ class aspect(GdalAlgorithm):
|
|||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
arguments = ['aspect']
|
arguments = ['aspect']
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
arguments.append(inLayer.source())
|
arguments.append(inLayer.source())
|
||||||
|
|
||||||
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
||||||
|
@ -30,6 +30,7 @@ import os
|
|||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
|
|
||||||
from qgis.core import (QgsProcessing,
|
from qgis.core import (QgsProcessing,
|
||||||
|
QgsProcessingException,
|
||||||
QgsProcessingParameterDefinition,
|
QgsProcessingParameterDefinition,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterBand,
|
QgsProcessingParameterBand,
|
||||||
@ -126,6 +127,9 @@ class contour(GdalAlgorithm):
|
|||||||
|
|
||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
fieldName = self.parameterAsString(parameters, self.FIELD_NAME, context)
|
fieldName = self.parameterAsString(parameters, self.FIELD_NAME, context)
|
||||||
if self.NODATA in parameters and parameters[self.NODATA] is not None:
|
if self.NODATA in parameters and parameters[self.NODATA] is not None:
|
||||||
nodata = self.parameterAsDouble(parameters, self.NODATA, context)
|
nodata = self.parameterAsDouble(parameters, self.NODATA, context)
|
||||||
|
@ -28,6 +28,7 @@ __revision__ = '$Format:%H$'
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from qgis.core import (QgsRasterFileWriter,
|
from qgis.core import (QgsRasterFileWriter,
|
||||||
|
QgsProcessingException,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterBand,
|
QgsProcessingParameterBand,
|
||||||
QgsProcessingParameterNumber,
|
QgsProcessingParameterNumber,
|
||||||
@ -116,7 +117,11 @@ class fillnodata(GdalAlgorithm):
|
|||||||
arguments.append('-of')
|
arguments.append('-of')
|
||||||
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))
|
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))
|
||||||
|
|
||||||
arguments.append(self.parameterAsRasterLayer(parameters, self.INPUT, context).source())
|
raster = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if raster is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
|
arguments.append(raster.source())
|
||||||
arguments.append(out)
|
arguments.append(out)
|
||||||
|
|
||||||
commands = []
|
commands = []
|
||||||
|
@ -26,7 +26,8 @@ __copyright__ = '(C) 2016, Médéric Ribreux'
|
|||||||
__revision__ = '$Format:%H$'
|
__revision__ = '$Format:%H$'
|
||||||
|
|
||||||
|
|
||||||
from qgis.core import (QgsProcessingParameterDefinition,
|
from qgis.core import (QgsProcessingException,
|
||||||
|
QgsProcessingParameterDefinition,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterCrs,
|
QgsProcessingParameterCrs,
|
||||||
QgsProcessingParameterEnum,
|
QgsProcessingParameterEnum,
|
||||||
@ -219,6 +220,9 @@ class gdal2tiles(GdalAlgorithm):
|
|||||||
arguments.append('-n')
|
arguments.append('-n')
|
||||||
|
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
arguments.append(inLayer.source())
|
arguments.append(inLayer.source())
|
||||||
arguments.append(self.parameterAsString(parameters, self.OUTPUT, context))
|
arguments.append(self.parameterAsString(parameters, self.OUTPUT, context))
|
||||||
|
|
||||||
|
@ -26,6 +26,7 @@ __copyright__ = '(C) 2013, Alexander Bruy'
|
|||||||
__revision__ = '$Format:%H$'
|
__revision__ = '$Format:%H$'
|
||||||
|
|
||||||
from qgis.core import (QgsProcessing,
|
from qgis.core import (QgsProcessing,
|
||||||
|
QgsProcessingException,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterBand,
|
QgsProcessingParameterBand,
|
||||||
QgsProcessingParameterBoolean,
|
QgsProcessingParameterBoolean,
|
||||||
@ -82,7 +83,11 @@ class gdal2xyz(GdalAlgorithm):
|
|||||||
if self.parameterAsBool(parameters, self.CSV, context):
|
if self.parameterAsBool(parameters, self.CSV, context):
|
||||||
arguments.append('-csv')
|
arguments.append('-csv')
|
||||||
|
|
||||||
arguments.append(self.parameterAsRasterLayer(parameters, self.INPUT, context).source())
|
raster = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if raster is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
|
arguments.append(raster.source())
|
||||||
arguments.append(self.parameterAsFileOutput(parameters, self.OUTPUT, context))
|
arguments.append(self.parameterAsFileOutput(parameters, self.OUTPUT, context))
|
||||||
|
|
||||||
commands = []
|
commands = []
|
||||||
|
@ -29,7 +29,8 @@ import os
|
|||||||
|
|
||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
|
|
||||||
from qgis.core import (QgsProcessingParameterRasterLayer,
|
from qgis.core import (QgsProcessingException,
|
||||||
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterEnum,
|
QgsProcessingParameterEnum,
|
||||||
QgsProcessingParameterString,
|
QgsProcessingParameterString,
|
||||||
QgsProcessingParameterBoolean,
|
QgsProcessingParameterBoolean,
|
||||||
@ -110,6 +111,9 @@ class gdaladdo(GdalAlgorithm):
|
|||||||
|
|
||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
fileName = inLayer.source()
|
fileName = inLayer.source()
|
||||||
|
|
||||||
arguments = []
|
arguments = []
|
||||||
|
@ -28,7 +28,8 @@ __revision__ = '$Format:%H$'
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
from qgis.core import (QgsProcessingParameterRasterLayer,
|
from qgis.core import (QgsProcessingException,
|
||||||
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterBoolean,
|
QgsProcessingParameterBoolean,
|
||||||
QgsProcessingParameterFileDestination)
|
QgsProcessingParameterFileDestination)
|
||||||
from processing.algs.gdal.GdalAlgorithm import GdalAlgorithm
|
from processing.algs.gdal.GdalAlgorithm import GdalAlgorithm
|
||||||
@ -97,7 +98,11 @@ class gdalinfo(GdalAlgorithm):
|
|||||||
arguments.append('-nogcp')
|
arguments.append('-nogcp')
|
||||||
if self.parameterAsBool(parameters, self.NO_METADATA, context):
|
if self.parameterAsBool(parameters, self.NO_METADATA, context):
|
||||||
arguments.append('-nomd')
|
arguments.append('-nomd')
|
||||||
arguments.append(self.parameterAsRasterLayer(parameters, self.INPUT, context).source())
|
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)]
|
return [self.commandName(), GdalUtils.escapeAndJoin(arguments)]
|
||||||
|
|
||||||
def processAlgorithm(self, parameters, context, feedback):
|
def processAlgorithm(self, parameters, context, feedback):
|
||||||
|
@ -29,6 +29,7 @@ __revision__ = '$Format:%H$'
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from qgis.core import (QgsRasterFileWriter,
|
from qgis.core import (QgsRasterFileWriter,
|
||||||
|
QgsProcessingException,
|
||||||
QgsProcessingParameterDefinition,
|
QgsProcessingParameterDefinition,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterBand,
|
QgsProcessingParameterBand,
|
||||||
@ -129,6 +130,9 @@ class hillshade(GdalAlgorithm):
|
|||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
arguments = ['hillshade']
|
arguments = ['hillshade']
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
arguments.append(inLayer.source())
|
arguments.append(inLayer.source())
|
||||||
|
|
||||||
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
||||||
|
@ -30,6 +30,7 @@ import os
|
|||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
|
|
||||||
from qgis.core import (QgsRasterFileWriter,
|
from qgis.core import (QgsRasterFileWriter,
|
||||||
|
QgsProcessingException,
|
||||||
QgsProcessingParameterDefinition,
|
QgsProcessingParameterDefinition,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterBoolean,
|
QgsProcessingParameterBoolean,
|
||||||
@ -97,6 +98,8 @@ class nearblack(GdalAlgorithm):
|
|||||||
|
|
||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
arguments = []
|
arguments = []
|
||||||
arguments.append(inLayer.source())
|
arguments.append(inLayer.source())
|
||||||
|
@ -26,7 +26,8 @@ __copyright__ = '(C) 2012, Victor Olaya'
|
|||||||
__revision__ = '$Format:%H$'
|
__revision__ = '$Format:%H$'
|
||||||
|
|
||||||
|
|
||||||
from qgis.core import (QgsProcessingParameterVectorLayer,
|
from qgis.core import (QgsProcessingException,
|
||||||
|
QgsProcessingParameterVectorLayer,
|
||||||
QgsProcessingParameterBoolean,
|
QgsProcessingParameterBoolean,
|
||||||
QgsProcessingParameterFileDestination)
|
QgsProcessingParameterFileDestination)
|
||||||
from processing.algs.gdal.GdalAlgorithm import GdalAlgorithm
|
from processing.algs.gdal.GdalAlgorithm import GdalAlgorithm
|
||||||
@ -81,6 +82,9 @@ class ogrinfo(GdalAlgorithm):
|
|||||||
arguments.append('-nomd')
|
arguments.append('-nomd')
|
||||||
|
|
||||||
inLayer = self.parameterAsVectorLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsVectorLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidSourceError(parameters, self.INPUT))
|
||||||
|
|
||||||
connectionString = GdalUtils.ogrConnectionString(inLayer.source(), context)
|
connectionString = GdalUtils.ogrConnectionString(inLayer.source(), context)
|
||||||
arguments.append(connectionString)
|
arguments.append(connectionString)
|
||||||
return arguments
|
return arguments
|
||||||
|
@ -30,6 +30,7 @@ import os
|
|||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
|
|
||||||
from qgis.core import (QgsRasterFileWriter,
|
from qgis.core import (QgsRasterFileWriter,
|
||||||
|
QgsProcessingException,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterBand,
|
QgsProcessingParameterBand,
|
||||||
QgsProcessingParameterBoolean,
|
QgsProcessingParameterBoolean,
|
||||||
@ -83,6 +84,9 @@ class pct2rgb(GdalAlgorithm):
|
|||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
arguments = []
|
arguments = []
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
arguments.append(inLayer.source())
|
arguments.append(inLayer.source())
|
||||||
|
|
||||||
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
||||||
|
@ -31,6 +31,7 @@ from qgis.PyQt.QtGui import QIcon
|
|||||||
from qgis.PyQt.QtCore import QFileInfo
|
from qgis.PyQt.QtCore import QFileInfo
|
||||||
|
|
||||||
from qgis.core import (QgsProcessing,
|
from qgis.core import (QgsProcessing,
|
||||||
|
QgsProcessingException,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterBand,
|
QgsProcessingParameterBand,
|
||||||
QgsProcessingParameterString,
|
QgsProcessingParameterString,
|
||||||
@ -91,6 +92,9 @@ class polygonize(GdalAlgorithm):
|
|||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
arguments = []
|
arguments = []
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
arguments.append(inLayer.source())
|
arguments.append(inLayer.source())
|
||||||
|
|
||||||
outFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
outFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
||||||
|
@ -30,6 +30,7 @@ import os
|
|||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
|
|
||||||
from qgis.core import (QgsRasterFileWriter,
|
from qgis.core import (QgsRasterFileWriter,
|
||||||
|
QgsProcessingException,
|
||||||
QgsProcessingParameterDefinition,
|
QgsProcessingParameterDefinition,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterBand,
|
QgsProcessingParameterBand,
|
||||||
@ -136,6 +137,9 @@ class proximity(GdalAlgorithm):
|
|||||||
|
|
||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
distance = self.parameterAsDouble(parameters, self.MAX_DISTANCE, context)
|
distance = self.parameterAsDouble(parameters, self.MAX_DISTANCE, context)
|
||||||
replaceValue = self.parameterAsDouble(parameters, self.REPLACE, context)
|
replaceValue = self.parameterAsDouble(parameters, self.REPLACE, context)
|
||||||
if self.NODATA in parameters and parameters[self.NODATA] is not None:
|
if self.NODATA in parameters and parameters[self.NODATA] is not None:
|
||||||
|
@ -31,6 +31,7 @@ import os
|
|||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
|
|
||||||
from qgis.core import (QgsRasterFileWriter,
|
from qgis.core import (QgsRasterFileWriter,
|
||||||
|
QgsProcessingException,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterNumber,
|
QgsProcessingParameterNumber,
|
||||||
QgsProcessingParameterRasterDestination)
|
QgsProcessingParameterRasterDestination)
|
||||||
@ -87,7 +88,11 @@ class rgb2pct(GdalAlgorithm):
|
|||||||
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
||||||
arguments.append('-of')
|
arguments.append('-of')
|
||||||
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))
|
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))
|
||||||
arguments.append(self.parameterAsRasterLayer(parameters, self.INPUT, context).source())
|
raster = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if raster is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
|
arguments.append(raster.source())
|
||||||
arguments.append(out)
|
arguments.append(out)
|
||||||
|
|
||||||
if isWindows():
|
if isWindows():
|
||||||
|
@ -28,6 +28,7 @@ __revision__ = '$Format:%H$'
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from qgis.core import (QgsRasterFileWriter,
|
from qgis.core import (QgsRasterFileWriter,
|
||||||
|
QgsProcessingException,
|
||||||
QgsProcessingParameterDefinition,
|
QgsProcessingParameterDefinition,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterBand,
|
QgsProcessingParameterBand,
|
||||||
@ -91,6 +92,9 @@ class roughness(GdalAlgorithm):
|
|||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
arguments = ['roughness']
|
arguments = ['roughness']
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
arguments.append(inLayer.source())
|
arguments.append(inLayer.source())
|
||||||
|
|
||||||
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
||||||
|
@ -30,6 +30,7 @@ import os
|
|||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
|
|
||||||
from qgis.core import (QgsRasterFileWriter,
|
from qgis.core import (QgsRasterFileWriter,
|
||||||
|
QgsProcessingException,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterNumber,
|
QgsProcessingParameterNumber,
|
||||||
QgsProcessingParameterBoolean,
|
QgsProcessingParameterBoolean,
|
||||||
@ -111,7 +112,11 @@ class sieve(GdalAlgorithm):
|
|||||||
arguments.append('-of')
|
arguments.append('-of')
|
||||||
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))
|
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))
|
||||||
|
|
||||||
arguments.append(self.parameterAsRasterLayer(parameters, self.INPUT, context).source())
|
raster = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if raster is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
|
arguments.append(raster.source())
|
||||||
arguments.append(out)
|
arguments.append(out)
|
||||||
|
|
||||||
commands = []
|
commands = []
|
||||||
|
@ -29,6 +29,7 @@ __revision__ = '$Format:%H$'
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from qgis.core import (QgsRasterFileWriter,
|
from qgis.core import (QgsRasterFileWriter,
|
||||||
|
QgsProcessingException,
|
||||||
QgsProcessingParameterDefinition,
|
QgsProcessingParameterDefinition,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterBand,
|
QgsProcessingParameterBand,
|
||||||
@ -106,6 +107,9 @@ class slope(GdalAlgorithm):
|
|||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
arguments = ['slope']
|
arguments = ['slope']
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
arguments.append(inLayer.source())
|
arguments.append(inLayer.source())
|
||||||
|
|
||||||
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
||||||
|
@ -28,7 +28,8 @@ __revision__ = '$Format:%H$'
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from qgis.core import (QgsProcessingParameterDefinition,
|
from qgis.core import (QgsProcessingException,
|
||||||
|
QgsProcessingParameterDefinition,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterBand,
|
QgsProcessingParameterBand,
|
||||||
QgsProcessingParameterString,
|
QgsProcessingParameterString,
|
||||||
@ -90,6 +91,9 @@ class tpi(GdalAlgorithm):
|
|||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
arguments = ['TPI']
|
arguments = ['TPI']
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
arguments.append(inLayer.source())
|
arguments.append(inLayer.source())
|
||||||
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
||||||
arguments.append(out)
|
arguments.append(out)
|
||||||
|
@ -30,6 +30,7 @@ import os
|
|||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
|
|
||||||
from qgis.core import (QgsRasterFileWriter,
|
from qgis.core import (QgsRasterFileWriter,
|
||||||
|
QgsProcessingException,
|
||||||
QgsProcessingParameterDefinition,
|
QgsProcessingParameterDefinition,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterNumber,
|
QgsProcessingParameterNumber,
|
||||||
@ -115,6 +116,9 @@ class translate(GdalAlgorithm):
|
|||||||
|
|
||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
||||||
if self.NODATA in parameters and parameters[self.NODATA] is not None:
|
if self.NODATA in parameters and parameters[self.NODATA] is not None:
|
||||||
nodata = self.parameterAsDouble(parameters, self.NODATA, context)
|
nodata = self.parameterAsDouble(parameters, self.NODATA, context)
|
||||||
|
@ -27,7 +27,8 @@ __revision__ = '$Format:%H$'
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from qgis.core import (QgsProcessingParameterDefinition,
|
from qgis.core import (QgsProcessingException,
|
||||||
|
QgsProcessingParameterDefinition,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterBand,
|
QgsProcessingParameterBand,
|
||||||
QgsProcessingParameterString,
|
QgsProcessingParameterString,
|
||||||
@ -89,6 +90,9 @@ class tri(GdalAlgorithm):
|
|||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
arguments = ['TRI']
|
arguments = ['TRI']
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
arguments.append(inLayer.source())
|
arguments.append(inLayer.source())
|
||||||
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
||||||
arguments.append(out)
|
arguments.append(out)
|
||||||
|
@ -29,6 +29,7 @@ import os
|
|||||||
|
|
||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
from qgis.core import (QgsRasterFileWriter,
|
from qgis.core import (QgsRasterFileWriter,
|
||||||
|
QgsProcessingException,
|
||||||
QgsProcessingParameterDefinition,
|
QgsProcessingParameterDefinition,
|
||||||
QgsProcessingParameterRasterLayer,
|
QgsProcessingParameterRasterLayer,
|
||||||
QgsProcessingParameterCrs,
|
QgsProcessingParameterCrs,
|
||||||
@ -163,6 +164,9 @@ class warp(GdalAlgorithm):
|
|||||||
|
|
||||||
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
def getConsoleCommands(self, parameters, context, feedback, executing=True):
|
||||||
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
|
||||||
|
if inLayer is None:
|
||||||
|
raise QgsProcessingException(self.invalidRasterError(parameters, self.INPUT))
|
||||||
|
|
||||||
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
|
||||||
sourceCrs = self.parameterAsCrs(parameters, self.SOURCE_CRS, context)
|
sourceCrs = self.parameterAsCrs(parameters, self.SOURCE_CRS, context)
|
||||||
targetCrs = self.parameterAsCrs(parameters, self.TARGET_CRS, context)
|
targetCrs = self.parameterAsCrs(parameters, self.TARGET_CRS, context)
|
||||||
|
@ -52,7 +52,7 @@ from qgis.core import (QgsProcessingContext,
|
|||||||
QgsPointXY,
|
QgsPointXY,
|
||||||
QgsProject,
|
QgsProject,
|
||||||
QgsRectangle,
|
QgsRectangle,
|
||||||
QgsProcessingUtils,
|
QgsProcessingException,
|
||||||
QgsProcessingFeatureSourceDefinition)
|
QgsProcessingFeatureSourceDefinition)
|
||||||
import nose2
|
import nose2
|
||||||
import os
|
import os
|
||||||
@ -90,6 +90,18 @@ class TestGdalAlgorithms(unittest.TestCase, AlgorithmsTestBase.AlgorithmsTest):
|
|||||||
for a in p.algorithms():
|
for a in p.algorithms():
|
||||||
self.assertTrue(a.commandName(), 'Algorithm {} has no commandName!'.format(a.id()))
|
self.assertTrue(a.commandName(), 'Algorithm {} has no commandName!'.format(a.id()))
|
||||||
|
|
||||||
|
def testNoParameters(self):
|
||||||
|
# Test that algorithms throw QgsProcessingExceptions and not base Python
|
||||||
|
# exceptions when no parameters specified
|
||||||
|
p = QgsApplication.processingRegistry().providerById('gdal')
|
||||||
|
context = QgsProcessingContext()
|
||||||
|
feedback = QgsProcessingFeedback()
|
||||||
|
for a in p.algorithms():
|
||||||
|
try:
|
||||||
|
a.getConsoleCommands({}, context, feedback)
|
||||||
|
except QgsProcessingException:
|
||||||
|
pass
|
||||||
|
|
||||||
def testGetOgrCompatibleSourceFromMemoryLayer(self):
|
def testGetOgrCompatibleSourceFromMemoryLayer(self):
|
||||||
# create a memory layer and add to project and context
|
# create a memory layer and add to project and context
|
||||||
layer = QgsVectorLayer("Point?field=fldtxt:string&field=fldint:integer",
|
layer = QgsVectorLayer("Point?field=fldtxt:string&field=fldint:integer",
|
||||||
|
@ -30,7 +30,10 @@ import psycopg2.extensions # For isolation levels
|
|||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from qgis.core import QgsDataSourceUri, QgsCredentials, QgsSettings
|
from qgis.core import (QgsProcessingException,
|
||||||
|
QgsDataSourceUri,
|
||||||
|
QgsCredentials,
|
||||||
|
QgsSettings)
|
||||||
|
|
||||||
from qgis.PyQt.QtCore import QCoreApplication
|
from qgis.PyQt.QtCore import QCoreApplication
|
||||||
|
|
||||||
@ -44,7 +47,7 @@ def uri_from_name(conn_name):
|
|||||||
settings.beginGroup(u"/PostgreSQL/connections/%s" % conn_name)
|
settings.beginGroup(u"/PostgreSQL/connections/%s" % conn_name)
|
||||||
|
|
||||||
if not settings.contains("database"): # non-existent entry?
|
if not settings.contains("database"): # non-existent entry?
|
||||||
raise DbError(QCoreApplication.translate("PostGIS", 'There is no defined database connection "{0}".').format(conn_name))
|
raise QgsProcessingException(QCoreApplication.translate("PostGIS", 'There is no defined database connection "{0}".').format(conn_name))
|
||||||
|
|
||||||
uri = QgsDataSourceUri()
|
uri = QgsDataSourceUri()
|
||||||
|
|
||||||
@ -126,19 +129,6 @@ class TableIndex(object):
|
|||||||
self.columns = list(map(int, columns.split(' ')))
|
self.columns = list(map(int, columns.split(' ')))
|
||||||
|
|
||||||
|
|
||||||
class DbError(Exception):
|
|
||||||
|
|
||||||
def __init__(self, message, query=None):
|
|
||||||
self.message = message
|
|
||||||
self.query = query
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
text = "MESSAGE: {}".format(self.message)
|
|
||||||
if self.query:
|
|
||||||
text = "{}\nQUERY: {}".format(text, self.query)
|
|
||||||
return text
|
|
||||||
|
|
||||||
|
|
||||||
class TableField(object):
|
class TableField(object):
|
||||||
|
|
||||||
def __init__(self, name, data_type, is_null=None, default=None,
|
def __init__(self, name, data_type, is_null=None, default=None,
|
||||||
@ -207,7 +197,7 @@ class GeoDB(object):
|
|||||||
break
|
break
|
||||||
except psycopg2.OperationalError as e:
|
except psycopg2.OperationalError as e:
|
||||||
if i == 3:
|
if i == 3:
|
||||||
raise DbError(str(e))
|
raise QgsProcessingException(str(e))
|
||||||
|
|
||||||
err = str(e)
|
err = str(e)
|
||||||
user = self.uri.username()
|
user = self.uri.username()
|
||||||
@ -217,7 +207,7 @@ class GeoDB(object):
|
|||||||
password,
|
password,
|
||||||
err)
|
err)
|
||||||
if not ok:
|
if not ok:
|
||||||
raise DbError(QCoreApplication.translate("PostGIS", 'Action canceled by user'))
|
raise QgsProcessingException(QCoreApplication.translate("PostGIS", 'Action canceled by user'))
|
||||||
if user:
|
if user:
|
||||||
self.uri.setUsername(user)
|
self.uri.setUsername(user)
|
||||||
if password:
|
if password:
|
||||||
@ -823,8 +813,8 @@ class GeoDB(object):
|
|||||||
try:
|
try:
|
||||||
cursor.execute(sql)
|
cursor.execute(sql)
|
||||||
except psycopg2.Error as e:
|
except psycopg2.Error as e:
|
||||||
raise DbError(str(e),
|
raise QgsProcessingException(str(e) + ' QUERY: ' +
|
||||||
e.cursor.query.decode(e.cursor.connection.encoding))
|
e.cursor.query.decode(e.cursor.connection.encoding))
|
||||||
|
|
||||||
def _exec_sql_and_commit(self, sql):
|
def _exec_sql_and_commit(self, sql):
|
||||||
"""Tries to execute and commit some action, on error it rolls
|
"""Tries to execute and commit some action, on error it rolls
|
||||||
|
Loading…
x
Reference in New Issue
Block a user