|
26 | 26 | __revision__ = '$Format:%H$'
|
27 | 27 |
|
28 | 28 | import numpy
|
29 |
| -from qgis.core import QgsRectangle, QgsGeometry, QgsFeature |
| 29 | + |
| 30 | +try: |
| 31 | + from scipy.stats.mstats import mode |
| 32 | + hasSciPy = True |
| 33 | +except: |
| 34 | + hasSciPy = False |
| 35 | + |
30 | 36 | from osgeo import gdal, ogr, osr
|
| 37 | +from qgis.core import QgsRectangle, QgsGeometry, QgsFeature |
| 38 | + |
31 | 39 | from processing.core.GeoAlgorithm import GeoAlgorithm
|
32 | 40 | from processing.core.parameters import ParameterVector
|
33 | 41 | from processing.core.parameters import ParameterRaster
|
@@ -144,6 +152,9 @@ def processAlgorithm(self, progress):
|
144 | 152 | columnPrefix + 'var', 21, 6)
|
145 | 153 | (idxMedian, fields) = vector.findOrCreateField(layer, fields,
|
146 | 154 | columnPrefix + 'median', 21, 6)
|
| 155 | + if hasSciPy: |
| 156 | + (idxMode, fields) = vector.findOrCreateField(layer, fields, |
| 157 | + columnPrefix + 'mode', 21, 6) |
147 | 158 |
|
148 | 159 | writer = self.getOutputFromName(self.OUTPUT_LAYER).getVectorWriter(
|
149 | 160 | fields.toList(), layer.dataProvider().geometryType(), layer.crs())
|
@@ -225,6 +236,8 @@ def processAlgorithm(self, progress):
|
225 | 236 | attrs.insert(idxRange, float(masked.max()) - float(masked.min()))
|
226 | 237 | attrs.insert(idxVar, float(masked.var()))
|
227 | 238 | attrs.insert(idxMedian, float(numpy.ma.median(masked)))
|
| 239 | + if hasSciPy: |
| 240 | + attrs.insert(idxMode, float(mode(masked, axis=None)[0][0])) |
228 | 241 |
|
229 | 242 | outFeat.setAttributes(attrs)
|
230 | 243 | writer.addFeature(outFeat)
|
|
0 commit comments