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})
PolyGeo
65.5k29 gold badges115 silver badges349 bronze badges
asked Jan 14, 2017 at 12:04
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
answered Jan 24, 2017 at 18:06

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.