Port Create Constant Raster to new API and add test

This commit is contained in:
Nyall Dawson 2017-07-27 16:02:52 +10:00
parent e23617a83d
commit 82182040ab
5 changed files with 41 additions and 19 deletions

View File

@ -27,12 +27,10 @@ __revision__ = '$Format:%H$'
from osgeo import gdal
from qgis.core import (QgsApplication,
QgsProcessingUtils)
from qgis.core import (QgsProcessingParameterRasterLayer,
QgsProcessingParameterNumber,
QgsProcessingParameterRasterDestination)
from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm
from processing.core.parameters import ParameterRaster
from processing.core.parameters import ParameterNumber
from processing.core.outputs import OutputRaster
from processing.tools.raster import RasterWriter
@ -49,14 +47,12 @@ class CreateConstantRaster(QgisAlgorithm):
super().__init__()
def initAlgorithm(self, config=None):
self.addParameter(ParameterRaster(self.INPUT,
self.tr('Reference layer')))
self.addParameter(ParameterNumber(self.NUMBER,
self.tr('Constant value'),
default=1.0))
self.addOutput(OutputRaster(self.OUTPUT,
self.tr('Constant')))
self.addParameter(QgsProcessingParameterRasterLayer(self.INPUT,
self.tr('Reference layer')))
self.addParameter(QgsProcessingParameterNumber(self.NUMBER,
self.tr('Constant value'), QgsProcessingParameterNumber.Double,
defaultValue=1))
self.addParameter(QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Constant')))
def name(self):
return 'createconstantrasterlayer'
@ -65,10 +61,10 @@ class CreateConstantRaster(QgisAlgorithm):
return self.tr('Create constant raster layer')
def processAlgorithm(self, parameters, context, feedback):
layer = QgsProcessingUtils.mapLayerFromString(self.getParameterValue(self.INPUT), context)
value = self.getParameterValue(self.NUMBER)
layer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
value = self.parameterAsDouble(parameters, self.NUMBER, context)
output = self.getOutputFromName(self.OUTPUT)
outputFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
raster = gdal.Open(layer.source(), gdal.GA_ReadOnly)
geoTransform = raster.GetGeoTransform()
@ -76,7 +72,7 @@ class CreateConstantRaster(QgisAlgorithm):
cellsize = (layer.extent().xMaximum() - layer.extent().xMinimum()) \
/ layer.width()
w = RasterWriter(output.getCompatibleFileName(self),
w = RasterWriter(outputFile,
layer.extent().xMinimum(),
layer.extent().yMinimum(),
layer.extent().xMaximum(),
@ -88,3 +84,5 @@ class CreateConstantRaster(QgisAlgorithm):
)
w.matrix.fill(value)
w.close()
return {self.OUTPUT: outputFile}

View File

@ -49,6 +49,7 @@ from .BoundingBox import BoundingBox
from .CheckValidity import CheckValidity
from .ConcaveHull import ConcaveHull
from .CreateAttributeIndex import CreateAttributeIndex
from .CreateConstantRaster import CreateConstantRaster
from .Delaunay import Delaunay
from .DeleteColumn import DeleteColumn
from .DeleteHoles import DeleteHoles
@ -146,7 +147,6 @@ from .ZonalStatistics import ZonalStatistics
# from .FieldsCalculator import FieldsCalculator
# from .FieldPyculator import FieldsPyculator
# from .JoinAttributes import JoinAttributes
# from .CreateConstantRaster import CreateConstantRaster
# from .PointsDisplacement import PointsDisplacement
# from .PointsFromPolygons import PointsFromPolygons
# from .PointsFromLines import PointsFromLines
@ -205,7 +205,7 @@ class QGISAlgorithmProvider(QgsProcessingProvider):
# PointsFromLines(), PointsToPaths(),
# SetVectorStyle(), SetRasterStyle(),
# HypsometricCurves(),
# CreateConstantRaster(),
#
# FieldsMapper(), SelectByAttributeSum(), Datasources2Vrt(),
# OrientedMinimumBoundingBox(),
# DefineProjection(),
@ -228,6 +228,7 @@ class QGISAlgorithmProvider(QgsProcessingProvider):
CheckValidity(),
ConcaveHull(),
CreateAttributeIndex(),
CreateConstantRaster(),
Delaunay(),
DeleteColumn(),
DeleteHoles(),

View File

@ -0,0 +1,10 @@
<PAMDataset>
<PAMRasterBand band="1">
<Metadata>
<MDI key="STATISTICS_MAXIMUM">3</MDI>
<MDI key="STATISTICS_MEAN">3</MDI>
<MDI key="STATISTICS_MINIMUM">3</MDI>
<MDI key="STATISTICS_STDDEV">0</MDI>
</Metadata>
</PAMRasterBand>
</PAMDataset>

View File

@ -1215,6 +1215,19 @@ tests:
# hash: 7fe0e0174185fd743e23760f33615adf10f771b4275f320db6f7f4f8
# type: rasterhash
- algorithm: qgis:createconstantrasterlayer
name: Create constant raster
params:
INPUT:
name: raster.tif
type: raster
NUMBER: 3.0
results:
OUTPUT:
hash: 4cb3e82e8512cdbb75d9c39a10adc818dd6842c5dc6361fbc43dd9aa
type: rasterhash
# Case 1: Keep all fields
- algorithm: qgis:lineintersections
name: Line Intersection Keep All Fields from Both