|
@@ -0,0 +1,39 @@
|
|
|
+#!/usr/bin/env python
|
|
|
+
|
|
|
+#%module
|
|
|
+#% description: Selects values from raster above value of mean plus standard deviation
|
|
|
+#% keyword: raster
|
|
|
+#% keyword: select
|
|
|
+#% keyword: standard deviation
|
|
|
+#%end
|
|
|
+#%option G_OPT_R_INPUT
|
|
|
+#%end
|
|
|
+#%option G_OPT_R_OUTPUT
|
|
|
+#%end
|
|
|
+
|
|
|
+
|
|
|
+import sys
|
|
|
+
|
|
|
+import grass.script as gscript
|
|
|
+from grass.exceptions import CalledModuleError
|
|
|
+
|
|
|
+
|
|
|
+def main():
|
|
|
+ options, flags = gscript.parser()
|
|
|
+ input_raster = options['input']
|
|
|
+ output_raster = options['output']
|
|
|
+
|
|
|
+ try:
|
|
|
+ stats = gscript.parse_command('r.univar', map=input_raster, flags='g')
|
|
|
+ except CalledModuleError as e:
|
|
|
+ gscript.fatal('{}'.format(e))
|
|
|
+ raster_mean = float(stats['mean'])
|
|
|
+ raster_stddev = float(stats['stddev'])
|
|
|
+ raster_high = raster_mean + raster_stddev
|
|
|
+ gscript.mapcalc('{r} = {i} > {v}'.format(r=output_raster, i=input_raster,
|
|
|
+ v=raster_high))
|
|
|
+ return 0
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ sys.exit(main())
|