diff --git a/python/plugins/processing/algs/grass7/description/r.texture.txt b/python/plugins/processing/algs/grass7/description/r.texture.txt new file mode 100644 index 00000000000..5cac792b62b --- /dev/null +++ b/python/plugins/processing/algs/grass7/description/r.texture.txt @@ -0,0 +1,10 @@ +r.texture +Generate images with textural features from a raster map. +Raster (r.*) +ParameterRaster|input|Name of input raster map|False +ParameterString|method|Textural measurement method(s) in the following list: asm, contrast, corr, var, idm, sa, se, sv, entr, dv, de, moc1, moc2|None|False|True +ParameterNumber|size|The size of moving window (odd and >= 3)|3.0|None|3.0|True +ParameterNumber|distance|The distance between two samples (>= 1)|1.0|None|1.0|True +*ParameterBoolean|-s|Separate output for each angle (0, 45, 90, 135)|False +*ParameterBoolean|-a|Calculate all textural measurements|False +OutputDirectory|output|Texture files directory diff --git a/python/plugins/processing/algs/grass7/ext/r_texture.py b/python/plugins/processing/algs/grass7/ext/r_texture.py new file mode 100644 index 00000000000..8e176b4efda --- /dev/null +++ b/python/plugins/processing/algs/grass7/ext/r_texture.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- + +""" +*************************************************************************** + r_texture.py + ------------ + Date : February 2016 + Copyright : (C) 2016 by Médéric Ribreux + Email : medspx at medspx dot fr +*************************************************************************** +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +*************************************************************************** +""" + +__author__ = 'Médéric Ribreux' +__date__ = 'February 2016' +__copyright__ = '(C) 2016, Médéric Ribreux' + +# This will get replaced with a git SHA1 when you do a git archive + +__revision__ = '$Format:%H$' + +# Damn layer naming, I am forced to make a dict to handle this ! +methodRef = {'asm': 'ASM', 'contrast': 'Contr', 'corr': 'Corr', + 'var': 'Var', 'idm': 'IDM', 'sa': 'SA', 'se': 'SE', + 'sv': 'SV', 'entr': 'Entr', 'dv': 'DV', 'de': 'DE', + 'moc1': 'MOC-2', 'moc2': 'MOC-2'} + + +def checkParameterValuesBeforeExecuting(alg): + methodList = alg.getParameterValue('method').split(",") + if len([f for f in methodList if f not in methodRef.keys()]) > 0 and not alg.getParameterValue('-a'): + return alg.tr("You need to set the method list with the following values only: asm, contrast, corr, var, idm, sa, se, sv, entr, dv, de, moc1, moc2 !") + + return None + + +def processOutputs(alg): + # The name of the output depends on the method + if alg.getParameterValue('-a'): + methodList = methodRef.keys() + else: + methodList = alg.getParameterValue('method').split(",") + + # handle -s option + if alg.getParameterValue('-s'): + angles = ['_0', '_45', '_90', '_135'] + else: + angles = [''] + + ext = alg.provider.getSupportedOutputRasterLayerExtensions()[0] + for method in methodList: + out = alg.getOutputValue(u'output') + for angle in angles: + inputRaster = "{}_{}{}".format(alg.exportedLayers[out], methodRef[method], angle) + outputFile = "{}/{}.{}".format(out, inputRaster, ext) + command = u"r.out.gdal --overwrite -c createopt=\"TFW=YES,COMPRESS=LZW\" input={} output=\"{}\"".format( + inputRaster, outputFile) + alg.commands.append(command) + alg.outputCommands.append(command)