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" 105 return "pkextractogr" 107 def defineCharacteristics(self):
108 self.
name =
"extract random points" 109 self.
group =
"[pktools] raster/vector" 110 self.addParameter(ParameterRaster(self.
INPUT,
'Input raster data set'))
111 self.addParameter(ParameterSelection(self.
RULE,
"extraction 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))
117 self.addParameter(ParameterBoolean(self.
POLYGON,
"Create OGRPolygon as geometry instead of OGRPoint",
False))
118 self.addParameter(ParameterNumber(self.
BUFFER,
"Buffer for calculating statistics for point features",1,25,1))
119 self.addParameter(ParameterNumber(self.
RANDOM,
"Number of random points to generate",0,1000000,100))
121 self.addParameter(ParameterString(self.
SRCNODATA,
"invalid value(s) for input raster dataset (e.g., 0;255)",
"none"))
122 self.addParameter(ParameterString(self.
BNDNODATA,
"Band(s) in input image to check if pixel is valid (e.g., 0;1)",
"0"))
123 self.addParameter(ParameterString(self.
EXTRA,
124 'Additional parameters',
'', optional=
True))
126 def processAlgorithm(self, progress):
127 cliPath =
'"' + os.path.join(pktoolsUtils.pktoolsPath(), self.
cliName()) +
'"' 130 input=self.getParameterValue(self.
INPUT)
131 commands.append(
'-i')
132 commands.append(
'"' + input +
'"')
134 commands.append(
"-r")
137 output = self.getOutputFromName(self.
OUTPUT)
138 outFile = output.value
139 formatIdx = self.getParameterValue(self.
FORMAT)
140 outFormat =
'"' + FORMATS[formatIdx] +
'"' 141 commands.append(
'-f')
142 commands.append(outFormat)
143 ext = EXTS[formatIdx]
144 if not outFile.endswith(ext):
146 output.value = outFile
147 commands.append(
'-o')
148 commands.append(
'"' + outFile +
'"')
150 if self.getParameterValue(self.
POLYGON):
151 commands.append(
"-polygon")
152 buffer=self.getParameterValue(self.
BUFFER)
154 commands.append(
"-buf")
155 commands.append(str(buffer))
157 if self.getParameterValue(self.
RANDOM) > 0:
158 commands.append(
"-rand")
159 commands.append(str(self.getParameterValue(self.
RANDOM)))
161 srcnodata=self.getParameterValue(self.
SRCNODATA)
162 if srcnodata !=
"none":
163 srcnodataValues = srcnodata.split(
';')
164 for srcnodataValue
in srcnodataValues:
165 commands.append(
'-srcnodata')
166 commands.append(srcnodataValue)
167 bndnodata=self.getParameterValue(self.
BNDNODATA)
168 bndnodataValues = bndnodata.split(
';')
169 for bndnodataValue
in bndnodataValues:
170 commands.append(
'-bndnodata')
171 commands.append(bndnodataValue)
173 extra = str(self.getParameterValue(self.
EXTRA))
175 commands.append(extra)
178 pktoolsUtils.runpktools(commands, progress)