Skip to content

Commit babc35d

Browse files
committedOct 11, 2017
[processing] restore sieve algorithm
1 parent 90308f3 commit babc35d

File tree

3 files changed

+43
-34
lines changed

3 files changed

+43
-34
lines changed
 

‎python/plugins/processing/algs/gdal/GdalAlgorithmProvider.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
from .polygonize import polygonize
4646
from .rgb2pct import rgb2pct
4747
from .roughness import roughness
48+
from .sieve import sieve
4849
from .slope import slope
4950
from .translate import translate
5051
from .tpi import tpi
@@ -57,7 +58,6 @@
5758
# from .ClipByMask import ClipByMask
5859
# from .rasterize import rasterize
5960
# from .proximity import proximity
60-
# from .sieve import sieve
6161
# from .fillnodata import fillnodata
6262
# from .extractprojection import ExtractProjection
6363
# from .gdal2xyz import gdal2xyz
@@ -146,6 +146,7 @@ def loadAlgorithms(self):
146146
polygonize(),
147147
rgb2pct(),
148148
roughness(),
149+
sieve(),
149150
slope(),
150151
translate(),
151152
tpi(),
@@ -157,7 +158,6 @@ def loadAlgorithms(self):
157158
# ClipByMask(),
158159
# rasterize(),
159160
# proximity(),
160-
# sieve(),
161161
# fillnodata(),
162162
# ExtractProjection(),
163163
# gdal2xyz(),

‎python/plugins/processing/algs/gdal/pct2rgb.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
* *
1717
***************************************************************************
1818
"""
19-
from builtins import str
20-
from builtins import range
2119

2220
__author__ = 'Victor Olaya'
2321
__date__ = 'August 2012'

‎python/plugins/processing/algs/gdal/sieve.py

Lines changed: 41 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
* *
1717
***************************************************************************
1818
"""
19-
from builtins import str
2019

2120
__author__ = 'Victor Olaya'
2221
__date__ = 'August 2012'
@@ -30,15 +29,13 @@
3029

3130
from qgis.PyQt.QtGui import QIcon
3231

32+
from qgis.core import (QgsRasterFileWriter,
33+
QgsProcessingParameterRasterLayer,
34+
QgsProcessingParameterNumber,
35+
QgsProcessingParameterBoolean,
36+
QgsProcessingParameterRasterDestination)
3337
from processing.algs.gdal.GdalAlgorithm import GdalAlgorithm
34-
35-
from processing.core.parameters import ParameterRaster
36-
from processing.core.parameters import ParameterSelection
37-
from processing.core.parameters import ParameterNumber
38-
from processing.core.outputs import OutputRaster
39-
4038
from processing.tools.system import isWindows
41-
4239
from processing.algs.gdal.GdalUtils import GdalUtils
4340

4441
pluginPath = os.path.split(os.path.split(os.path.dirname(__file__))[0])[0]
@@ -48,25 +45,29 @@ class sieve(GdalAlgorithm):
4845

4946
INPUT = 'INPUT'
5047
THRESHOLD = 'THRESHOLD'
51-
CONNECTIONS = 'CONNECTIONS'
48+
EIGHT_CONNECTEDNESS = 'EIGHT_CONNECTEDNESS'
49+
NO_MASK = 'NO_MASK'
50+
MASK_LAYER = 'MASK_LAYER'
5251
OUTPUT = 'OUTPUT'
5352

54-
PIXEL_CONNECTIONS = ['4', '8']
55-
56-
def icon(self):
57-
return QIcon(os.path.join(pluginPath, 'images', 'gdaltools', 'sieve.png'))
58-
5953
def __init__(self):
6054
super().__init__()
6155

6256
def initAlgorithm(self, config=None):
63-
self.addParameter(ParameterRaster(self.INPUT, self.tr('Input layer'), False))
64-
self.addParameter(ParameterNumber(self.THRESHOLD,
65-
self.tr('Threshold'), 0, 9999, 2))
66-
self.addParameter(ParameterSelection(self.CONNECTIONS,
67-
self.tr('Pixel connection'), self.PIXEL_CONNECTIONS, 0))
68-
69-
self.addOutput(OutputRaster(self.OUTPUT, self.tr('Sieved')))
57+
self.addParameter(QgsProcessingParameterRasterLayer(self.INPUT, self.tr('Input layer')))
58+
self.addParameter(QgsProcessingParameterNumber(
59+
self.THRESHOLD, self.tr('Threshold'),
60+
type=QgsProcessingParameterNumber.Integer,
61+
minValue=0, maxValue=999999, defaultValue=10))
62+
self.addParameter(QgsProcessingParameterBoolean(
63+
self.EIGHT_CONNECTEDNESS, self.tr('Use 8-connectedness'),
64+
defaultValue=False))
65+
self.addParameter(QgsProcessingParameterBoolean(
66+
self.NO_MASK, self.tr('Do not use the default validity mask for the input band'),
67+
defaultValue=False))
68+
self.addParameter(QgsProcessingParameterRasterLayer(self.MASK_LAYER, self.tr('Validity mask'), optional=True))
69+
70+
self.addParameter(QgsProcessingParameterRasterDestination(self.OUTPUT, self.tr('Sieved')))
7071

7172
def name(self):
7273
return 'sieve'
@@ -77,22 +78,32 @@ def displayName(self):
7778
def group(self):
7879
return self.tr('Raster analysis')
7980

80-
def getConsoleCommands(self, parameters, context, feedback):
81-
output = self.getOutputValue(self.OUTPUT)
81+
def icon(self):
82+
return QIcon(os.path.join(pluginPath, 'images', 'gdaltools', 'sieve.png'))
8283

84+
def getConsoleCommands(self, parameters, context, feedback):
8385
arguments = []
8486
arguments.append('-st')
85-
arguments.append(str(self.getParameterValue(self.THRESHOLD)))
87+
arguments.append(str(self.parameterAsInt(self.THRESHOLD)))
88+
89+
if self.parameterAsBool(parameters, self.EIGHT_CONNECTEDNESS, context):
90+
arguments.append('-8')
91+
else:
92+
arguments.append('-4')
93+
94+
if self.parameterAsBool(parameters, self.NO_MASK, context):
95+
arguments.append('-nomask')
8696

87-
arguments.append('-' +
88-
self.PIXEL_CONNECTIONS[self.getParameterValue(
89-
self.CONNECTIONS)])
97+
mask = self.parameterAsRasterLayer(parameters, self.INPUT, context)
98+
if mask:
99+
arguments.append('-mask {}'.format(mask.source()))
90100

101+
out = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
91102
arguments.append('-of')
92-
arguments.append(GdalUtils.getFormatShortNameFromFilename(output))
103+
arguments.append(QgsRasterFileWriter.driverForExtension(os.path.splitext(out)[1]))
93104

94-
arguments.append(self.getParameterValue(self.INPUT))
95-
arguments.append(output)
105+
arguments.append(self.parameterAsRasterLayer(parameters, self.INPUT, context).source())
106+
arguments.append(out)
96107

97108
commands = []
98109
if isWindows():

0 commit comments

Comments
 (0)
Please sign in to comment.