4 ***************************************************************************
8 Copyright : (C) 2015 by Pieter Kempeneers
9 Email : kempenep at gmail dot com
10 ***************************************************************************
12 * This program is free software; you can redistribute it and/or modify *
13 * it under the terms of the GNU General Public License as published by *
14 * the Free Software Foundation; either version 2 of the License, or *
15 * (at your option) any later version. *
17 ***************************************************************************
20 __author__ =
'Pieter Kempeneers'
21 __date__ =
'April 2015'
22 __copyright__ =
'(C) 2015, Pieter Kempeneers'
24 __revision__ =
'$Format:%H$'
27 from pktoolsUtils
import pktoolsUtils
28 from pktoolsAlgorithm
import pktoolsAlgorithm
29 from processing.core.parameters
import ParameterRaster
30 from processing.core.parameters
import ParameterVector
31 from processing.core.outputs
import OutputVector
32 from processing.core.parameters
import ParameterSelection
33 from processing.core.parameters
import ParameterNumber
34 from processing.core.parameters
import ParameterString
35 from processing.core.parameters
import ParameterBoolean
36 from processing.core.parameters
import ParameterExtent
92 RULE_OPTIONS = [
'centroid',
'point',
'mean',
'proportion',
'custom',
'min',
'max',
'mode',
'sum',
'median',
'stdev',
'percentile']
98 SRCNODATA =
"SRCNODATA"
99 BNDNODATA =
"BNDNODATA"
107 def defineCharacteristics(self):
108 self.
name =
"extract regular grid"
109 self.
group =
"[pktools] raster/vector"
110 self.addParameter(ParameterRaster(self.
INPUT,
'Input raster data set'))
111 self.addParameter(ParameterSelection(self.
RULE,
"composite rule",self.
RULE_OPTIONS, 0))
113 self.addOutput(OutputVector(self.
OUTPUT,
'Output vector data set'))
114 self.addParameter(ParameterSelection(self.
FORMAT,
115 'Destination Format', FORMATS))
116 self.addParameter(ParameterBoolean(self.
POLYGON,
"Create OGRPolygon as geometry instead of OGRPoint",
False))
117 self.addParameter(ParameterNumber(self.
GRID,
"Cell grid size (in projected units, e.g,. m)",0,1000000,1))
119 self.addParameter(ParameterString(self.
SRCNODATA,
"invalid value(s) for input raster dataset (e.g., 0;255)",
"none"))
120 self.addParameter(ParameterString(self.
BNDNODATA,
"Band(s) in input image to check if pixel is valid (e.g., 0;1)",
"0"))
121 self.addParameter(ParameterString(self.
EXTRA,
'Additional parameters',
'', optional=
True))
123 def processAlgorithm(self, progress):
125 commands = [os.path.join(pktoolsUtils.pktoolsPath(), self.
cliName())]
127 input=self.getParameterValue(self.
INPUT)
128 commands.append(
'-i')
129 commands.append(input)
131 commands.append(
"-r")
134 output = self.getOutputFromName(self.
OUTPUT)
135 outFile = output.value
136 formatIdx = self.getParameterValue(self.
FORMAT)
137 outFormat = FORMATS[formatIdx].replace(
' ',
'\\ ')
138 commands.append(
'-f')
139 commands.append(outFormat)
140 ext = EXTS[formatIdx]
141 if not outFile.endswith(ext):
143 output.value = outFile
144 commands.append(
'-o')
145 commands.append(outFile)
147 if self.getParameterValue(self.
POLYGON):
148 commands.append(
"-polygon")
149 buffer=self.getParameterValue(self.
BUFFER)
151 commands.append(
"-buf")
152 commands.append(str(buffer))
154 if self.getParameterValue(self.
GRID) > 0:
155 commands.append(
"-grid")
156 commands.append(str(self.getParameterValue(self.
GRID)))
158 srcnodata=self.getParameterValue(self.
SRCNODATA)
159 if srcnodata !=
"none":
160 srcnodataValues = srcnodata.split(
';')
161 for srcnodataValue
in srcnodataValues:
162 commands.append(
'-srcnodata')
163 commands.append(srcnodataValue)
164 bndnodata=self.getParameterValue(self.
BNDNODATA)
165 bndnodataValues = bndnodata.split(
';')
166 for bndnodataValue
in bndnodataValues:
167 commands.append(
'-bndnodata')
168 commands.append(bndnodataValue)
170 extra = str(self.getParameterValue(self.
EXTRA))
172 commands.append(extra)
175 for item
in commands:
178 pktoolsUtils.runpktools(commands, progress)