2

In the script editor in QGIS, when choosing string parameter type, a default value must be added according to https://docs.qgis.org/2.8/en/docs/user_manual/processing/scripts.html

What happen is that the parameter line in the GUI will be populated with the default value. 'average' in my case.

enter image description here

What I want to do is to add several different values so that the user can choose from. In my case, I want to add other statistics, so the user will have a drop-down list containing several options.

The solution in Letting user choose from 2 options for QGIS Processing script input parameter? does not work for me since I'm using QGIS 2.18.2, also the solution for check-box is not relevant.

Is it possible to create a drop-down list for the user in QGIS 2.18.2 las palmas?

In case it is needed, the full code is here:

##Cell Statistics=name
##Select_directory=Folder
##statistic_name=string average
##Output_raster=Output raster
import glob, os
from PyQt4.QtCore import QFileInfo
from qgis.core import QgsRasterLayer, QgsRectangle

os.chdir(Select_directory)
raster_list = []
extent = QgsRectangle()
extent.setMinimal()

statistic_dic = {'average':0, 'count':1, 'median':2,'mode':3, 'minimum':4, 'min_raster':5,'maximum':6, 'max_raster':7, 'std':8, 'range':9}


for raster in glob.glob("*.tif"):
    fileInfo = QFileInfo(raster)
    baseName = fileInfo.baseName()
    rlayer = QgsRasterLayer(raster, baseName)
    # Combine raster layers to list
    raster_list .append(rlayer)
    # Combine raster extents
    extent.combineExtentWith(rlayer.extent())

# Get extent    
xmin = extent.xMinimum()
xmax = extent.xMaximum()
ymin = extent.yMinimum()
ymax = extent.yMaximum()
# Run algorithm and set relevant parameters
processing.runalg("grass7:r.series",
                {"input":raster_list ,
                "-n":False,
                "method":statistic_dic[statistic_name],
                "range":'-10000000000,10000000000', 
                "GRASS_REGION_PARAMETER":"%f,%f,%f,%f"% (xmin, xmax, ymin, ymax), 
                "GRASS_REGION_CELLSIZE_PARAMETER":0,
                "output":Output_raster})
4
  • 1
    Your title says 2.8 but your body says 2.18.2, which is it? Commented Jan 19, 2017 at 8:45
  • As @PolyGeo mentioned, could you please confirm which version it is. I am assuming it is 2.18 as this is not possible in 2.8. In your script, you can use the selection parameter which allows you to create a drop-down list containing your terms. So in your case, you can replace ##statistic_name=string average with ##statistic_name=selection average;count;median;mode;minimum;min_raster;maximum;max_raster;std;range. Commented Jan 19, 2017 at 12:34
  • Thank Joseph, I am indeed using 2.18.2, I got it wrong since the document says 2.8.. (sorry,, I'm new to that..). The "selection" does work, I now realize that the "selection" parameter (in my case "statistic_name") gets an integer value and not a string value. Now it works. Commented Jan 21, 2017 at 8:35
  • @user88484 - Great stuff! I have voted to reopen your question as you are wanting a solution for QGIS 2.18 and not QGIS 2.8. You should post an answer on how you solved your problem :) Commented Jan 23, 2017 at 12:49

1 Answer 1

1

To create the drop-list I used the "selection" option and separated the variables by ";". Then I used the correspond number as variable for the tool I was using (e.g., average is the first in the drop list so it's corresponded number is 0, count is the second so it's number is 1 ..).

##first_statistic_name=selection average;count;median;mode;minimum;min_raster;maximum;max_raster;stddev;range;sum;variance;diversity;slope;offset;detcoeff;tvalue

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.