|
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