Skip to content

Commit

Permalink
[processing] restore polygonize algorithm
Browse files Browse the repository at this point in the history
Also expose band parameter
  • Loading branch information
alexbruy committed Oct 11, 2017
1 parent c53ff66 commit b1ff4d7
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 20 deletions.
4 changes: 2 additions & 2 deletions python/plugins/processing/algs/gdal/GdalAlgorithmProvider.py
Expand Up @@ -41,13 +41,13 @@
from .information import information
from .nearblack import nearblack
from .pct2rgb import pct2rgb
from .polygonize import polygonize
from .rgb2pct import rgb2pct
from .translate import translate
from .tri import tri
from .warp import warp

# from .merge import merge
# from .polygonize import polygonize
# from .gdaladdo import gdaladdo
# from .ClipByExtent import ClipByExtent
# from .ClipByMask import ClipByMask
Expand Down Expand Up @@ -142,12 +142,12 @@ def loadAlgorithms(self):
information(),
nearblack(),
pct2rgb(),
polygonize(),
rgb2pct(),
translate(),
tri(),
warp(),
# merge(),
# polygonize(),
# gdaladdo(),
# ClipByExtent(),
# ClipByMask(),
Expand Down
55 changes: 37 additions & 18 deletions python/plugins/processing/algs/gdal/polygonize.py
Expand Up @@ -30,10 +30,13 @@
from qgis.PyQt.QtGui import QIcon
from qgis.PyQt.QtCore import QFileInfo

from qgis.core import (QgsProcessing,
QgsProcessingParameterRasterLayer,
QgsProcessingParameterBand,
QgsProcessingParameterString,
QgsProcessingParameterBoolean,
QgsProcessingParameterVectorDestination)
from processing.algs.gdal.GdalAlgorithm import GdalAlgorithm
from processing.core.parameters import ParameterRaster
from processing.core.parameters import ParameterString
from processing.core.outputs import OutputVector
from processing.tools.system import isWindows
from processing.algs.gdal.GdalUtils import GdalUtils

Expand All @@ -43,21 +46,24 @@
class polygonize(GdalAlgorithm):

INPUT = 'INPUT'
OUTPUT = 'OUTPUT'
BAND = 'BAND'
FIELD = 'FIELD'

def icon(self):
return QIcon(os.path.join(pluginPath, 'images', 'gdaltools', 'polygonize.png'))
EIGHT_CONNECTEDNESS = 'EIGHT_CONNECTEDNESS'
OUTPUT = 'OUTPUT'

def __init__(self):
super().__init__()

def initAlgorithm(self, config=None):
self.addParameter(ParameterRaster(polygonize.INPUT,
self.tr('Input layer'), False))
self.addParameter(ParameterString(polygonize.FIELD,
self.tr('Output field name'), 'DN'))
self.addOutput(OutputVector(polygonize.OUTPUT, self.tr('Vectorized')))
self.addParameter(QgsProcessingParameterRasterLayer(self.INPUT, self.tr('Input layer')))
self.addParameter(QgsProcessingParameterBand(
self.BAND, self.tr('Band number'), parentLayerParameterName=self.INPUT))
self.addParameter(QgsProcessingParameterString(
self.FIELD, self.tr('Name of the field to create'), defaultValue='DN'))
self.addParameter(QgsProcessingParameterBoolean(
self.EIGHT_CONNECTEDNESS, self.tr('Use 8-connectedness'), defaultValue=False))
self.addParameter(QgsProcessingParameterVectorDestination(
self.OUTPUT, self.tr('Vectorized'), QgsProcessing.TypeVectorPolygon))

def name(self):
return 'polygonize'
Expand All @@ -68,16 +74,29 @@ def displayName(self):
def group(self):
return self.tr('Raster conversion')

def getConsoleCommands(self, parameters, context, feedback):
output = self.getOutputValue(polygonize.OUTPUT)
def icon(self):
return QIcon(os.path.join(pluginPath, 'images', 'gdaltools', 'polygonize.png'))

def getConsoleCommands(self, parameters, context, feedback):
arguments = []
arguments.append(self.getParameterValue(polygonize.INPUT))
arguments.append('-f')
arguments.append(GdalUtils.getVectorDriverFromFileName(output))
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
arguments.append(inLayer.source())

outFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
output, format = GdalUtils.ogrConnectionStringAndFormat(outFile, context)
arguments.append(output)

if self.parameterAsBool(parameters, self.EIGHT_CONNECTEDNESS, context):
arguments.append('-8')

arguments.append('-b')
arguments.append(str(self.parameterAsInt(parameters, self.BAND, context)))

if format:
arguments.append('-f {}'.format(format))

arguments.append(QFileInfo(output).baseName())
arguments.append(self.getParameterValue(polygonize.FIELD))
arguments.append(self.parameterAsString(parameters, self.FIELD, context))

commands = []
if isWindows():
Expand Down

0 comments on commit b1ff4d7

Please sign in to comment.