asp.net pdf viewer : Create thumbnail from pdf software Library cloud windows asp.net azure class QGIS-2.6-UserGuide-en21-part1006

QGIS User Guide, Release 2.6
ones.
Figure 17.27: Batch Processing File Path
17.4.4 Executing the batch process
To execute the batch process once you have introduced all the necessary values, just click on [OK]. Progress of
the global batch task will be shown in the progress bar in the lower part of the dialog.
.
17.5 Using processing algorithms from the console
The console allows advanced users to increase their productivity and perform complex operations that cannot be
performedusing any of the otherGUIelements oftheprocessingframework. Models involving several algorithms
canbedefinedusingthe command-lineinterface,andadditionaloperations suchasloops andconditionalsentences
can be added to create more flexible and powerful workflows.
There is not a proccesing console in QGIS, but all processing commands are available instead from the QGIS
built-in Pythonconsole. Thatmeans thatyoucanincorporate thosecommands intoyourconsole workandconnect
processing algorithms to all the other features (including methods fromthe QGISAPI)available fromthere.
The code that you can execute from the Python console, even if it does not call any specific processing method,
can be convertedinto a new algorithm that you can later call from the toolbox, the graphical modeler or any other
component, just like you do with any other algorithm. In fact, some algorithms that you can find in the toolbox
are simple scripts.
In this section,wewill see howtouse processing algorithms fromthe QGISPython console,andalso howtowrite
algorithms using Python.
17.5.1 Calling algorithms from the Python console
The first thing you have to do is to import the processing functions with the following line:
>>> import processing
Now, there is basically just one (interesting) thing you can do with that from the console: execute an algorithm.
Thatis done using the runalg() method, whichtakes the name ofthe algorithmtoexecute as its first parameter,
and then a variable number of additional parameters depending on the requirements of the algorithm. So the first
thing you need to know is the name of the algorithm to execute. That is not the name you see in the toolbox, but
rather a unique command–line name. To find the right name for your algorithm, you can use the algslist()
method. Type the following line in your console:
>>> processing.alglist()
You will see something like this.
Accumulated Cost (Anisotropic)---------------->saga:accumulatedcost(anisotropic)
Accumulated Cost (Isotropic)------------------>saga:accumulatedcost(isotropic)
Add Coordinates to points--------------------->saga:addcoordinatestopoints
Add Grid Values to Points--------------------->saga:addgridvaluestopoints
Add Grid Values to Shapes--------------------->saga:addgridvaluestoshapes
Add Polygon Attributes to Points-------------->saga:addpolygonattributestopoints
17.5. Using processing algorithms from the console
205
Create thumbnail from pdf - Draw thumbnail images for PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
generate pdf thumbnails; create thumbnail jpeg from pdf
Create thumbnail from pdf - VB.NET PDF Thumbnail Create SDK: Draw thumbnail images for PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
pdf thumbnail preview; view pdf thumbnails in
QGIS User Guide, Release 2.6
Aggregate------------------------------------->saga:aggregate
Aggregate Point Observations------------------>saga:aggregatepointobservations
Aggregation Index----------------------------->saga:aggregationindex
Analytical Hierarchy Process------------------>saga:analyticalhierarchyprocess
Analytical Hillshading------------------------>saga:analyticalhillshading
Average With Mask 1--------------------------->saga:averagewithmask1
Average With Mask 2--------------------------->saga:averagewithmask2
Average With Thereshold 1--------------------->saga:averagewiththereshold1
Average With Thereshold 2--------------------->saga:averagewiththereshold2
Average With Thereshold 3--------------------->saga:averagewiththereshold3
B-Spline Approximation------------------------>saga:b-splineapproximation
...
That’s a list of all the available algorithms, alphabetically ordered, along with their corresponding command-line
names.
You can use a string as a parameter for this method. Instead of returning the full list of algorithms, it will only
display those that include that string. If, for instance, you are looking for an algorithm to calculate slope from a
DEM,type alglist("slope") to get the following result:
DTM Filter (slope-based)---------------------->saga:dtmfilter(slope-based)
Downslope Distance Gradient------------------->saga:downslopedistancegradient
Relative Heights and Slope Positions---------->saga:relativeheightsandslopepositions
Slope Length---------------------------------->saga:slopelength
Slope, Aspect, Curvature---------------------->saga:slopeaspectcurvature
Upslope Area---------------------------------->saga:upslopearea
Vegetation Index[slope based]----------------->saga:vegetationindex[slopebased]
This result might change depending on the algorithms you have available.
It is easier now to find the algorithm you are looking for and its command-line name, in this case
saga:slopeaspectcurvature.
Once you know the command-line name of the algorithm, the next thing to do is to determine the right syntax to
execute it. That means knowing which parameters are neededand the orderin whichtheyhave to be passed when
calling the runalg() method. There is a method to describe an algorithm in detail, which can be used to get a
list of the parameters that an algorithm requires and the outputs that it will generate. To get this information, you
can use the alghelp(name_of_the_algorithm) method. Use the command-line name of the algorithm,
not the full descriptive name.
Calling the method with saga:slopeaspectcurvature as parameter,you get the following description:
>>> processing.alghelp("saga:slopeaspectcurvature")
ALGORITHM: Slope, Aspect, Curvature
ELEVATION <ParameterRaster>
METHOD <ParameterSelection>
SLOPE <OutputRaster>
ASPECT <OutputRaster>
CURV <OutputRaster>
HCURV <OutputRaster>
VCURV <OutputRaster>
Now you have everything you need to run any algorithm. As we have already mentioned,there is only one single
command to execute algorithms: runalg(). Its syntax is as follows:
>>> processing.runalg(name_of_the_algorithm, param1, , param2, ..., paramN,
Output1, Output2, ..., OutputN)
The list of parameters and outputs toadd depends on the algorithm you want to run,and is exactly the list thatthe
alghelp() method gives you, in the same order as shown.
Depending on the type of parameter, values are introduced differently. The next list gives a quick review of how
to introduce values for each type of input parameter:
206
Chapter 17. QGIS processing framework
How to C#: Generate Thumbnail for Word
Images. Convert Word to ODT. Convert PDF to Word. Convert ODT to Text Search. Insert Image. Thumbnail Create. Thumbnail Create. |. Home ›› XDoc.Word ›› C# Word
pdf files thumbnails; enable pdf thumbnails in
VB.NET Image: Program for Creating Thumbnail from Documents and
language. It empowers VB developers to create thumbnail from multiple document and image formats, such as PDF, TIFF, GIF, BMP, etc. It
pdf thumbnails; pdf thumbnail generator
QGIS User Guide, Release 2.6
• RasterLayer,VectorLayer or Table. Simply use a string with the name that identifies the data object to use
(the name it has in the QGIS Table of Contents) or a filename (if the corresponding layer is not opened, it
will be opened but not added to the map canvas). If you have an instance of a QGIS object representingthe
layer, you can also pass it as parameter. If the input is optional and you do not want to use any data object,
use None.
• Selection. If an algorithm has a selection parameter, the value of that parameter should be entered using an
integer value. To know the available options,you can use the algoptions() command, as shown in the
following example:
>>> processing.algoptions("saga:slopeaspectcurvature")
METHOD(Method)
0 - [0] Maximum Slope (Travis et al. 1975)
1 - [1] Maximum Triangle Slope (Tarboton 1997)
2 - [2] Least Squares Fitted Plane (Horn 1981, Costa-Cabral & Burgess 1996)
3 - [3] Fit 2.Degree Polynom (Bauer, Rohdenburg, Bork 1985)
4 - [4] Fit 2.Degree Polynom (Heerdegen & Beran 1982)
5 - [5] Fit 2.Degree Polynom (Zevenbergen & Thorne 1987)
6 - [6] Fit 3.Degree Polynom (Haralick 1983)
In this case, the algorithm has one such parameter, with seven options. Notice that ordering is zero-based.
• Multiple input. The value is a string with input descriptors separated by semicolons (;). As in the case of
single layers or tables,each input descriptor can be the data object name, orits file path.
• Table Field fromXXX. Use a string with the name of the field to use. This parameteris case-sensitive.
• Fixed Table. Type the list of all table values separated by commas (,) and enclosed between quotes (").
Values start on the upper row and go fromleft to right. You can also use a 2-D array of values representing
the table.
• CRS. Enter the EPSG code number of the desired CRS.
• Extent. You must use a string with xmin, xmax, ymin and ymax values separated by commas (,).
Boolean, file, string and numerical parameters do not need any additional explanations.
Input parameters such as strings, booleans, or numerical values have default values. To use them, specify None
in the corresponding parameter entry.
For output data objects, type the file path to be used to save it, just as it is done from the toolbox. If you want to
save the result to a temporary file, use None. The extension of the file determines the file format. If you enter
afile extension not supported by the algorithm, the default file format for that output type will be used, and its
corresponding extension appended to the given file path.
Unlike when an algorithm is executed from the toolbox, outputs are not added to the map canvas if you execute
that same algorithm from the Python console. If you want to add an output to the map canvas, you have to do it
yourself after running the algorithm. To do so, you can use QGIS API commands, or, even easier, use one of the
handy methods providedforsuch tasks.
The runalg method returns a dictionary with the output names (the ones shown in the algorithm description)
as keys and the file paths of those outputs as values. You can load those layers by passing the corresponding file
paths to the load() method.
17.5.2 Additional functions for handling data
Apart from the functions used to call algorithms, importing the processing package will also import some
additional functions that make it easier to work with data, particularly vector data. They are just convenience
functions that wrap some functionality fromthe QGIS API, usually with a less complex syntax. These functions
should be used when developing new algorithms, as they make it easier to operate with input data.
Below is a list of some of these commands. More information can be found in the classes under the
processing/tools package, and also in the example scripts provided with QGIS.
17.5. Using processing algorithms from the console
207
How to C#: Generate Thumbnail for PowerPoint
Preview Document. Conversion. Convert PowerPoint to PDF. Convert PowerPoint to PowerPoint Pages. Annotate PowerPoint. Text Search. Insert Image. Thumbnail Create
pdf thumbnail creator; no pdf thumbnails in
How to C#: Generate Thumbnail for Raster
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel, VB.NET And generating thumbnail for Raster Image is an easy work. How to Create Thumbnail for Raster in C#.
pdf first page thumbnail; how to make a thumbnail of a pdf
QGIS User Guide, Release 2.6
• getObject(obj): Returns a QGIS object (a layer or table) from the passed object, which can be a
filename or the name of the object in the QGIS Table ofContents.
• values(layer, fields): Returns the values in the attributes table of a vector layer, for the passed
fields. Fields can be passed as field names or as zero-based field indices. Returns a dict of lists, with the
passed field identifiers as keys. It considers the existing selection.
• features(layer): Returns an iterator over the features of a vector layer, considering the existing
selection.
• uniqueValues(layer, field): Returns a list of unique values for a given attribute. Attributes can
be passed as a field name or a zero-based field index. It considers the existing selection.
17.5.3 Creating scripts and running them from the toolbox
You can create your own algorithms by writing the corresponding Python code and adding a few extra lines to
supply additional information needed to define the semantics of the algorithm. You can find a Create new script
menu under the Tools group in the Script algorithms block of the toolbox. Double-click on it to open the script
editing dialog. That’s where you should type yourcode. Saving the script from there in the scripts folder (the
default folder when you openthe save file dialog) with .py extensionwill automatically create the corresponding
algorithm.
Thename ofthealgorithm(the oneyouwillsee in thetoolbox)is createdfromthe filename, removingits extension
and replacing low hyphens with blankspaces.
Let’s have a look at the following code, which calculates the Topographic Wetness Index (TWI) directly from a
DEM.
##dem=raster
##twi=output
ret_slope = processing.runalg("saga:slopeaspectcurvature", dem, 0, None,
None, None, None, None)
ret_area = processing.runalg("saga:catchmentarea(mass-fluxmethod)", dem,
0, False, False, False, False, None, None, None, None, None)
processing.runalg("saga:topographicwetnessindex(twi), ret_slope[’SLOPE’],
ret_area[’AREA’], None, 1, 0, twi)
As you can see,the calculation involves three algorithms,all of themcomingfromSAGA. The last one calculates
the TWI,but it needs a slope layer and a flow accumulation layer. We do not have these layers, but since we have
the DEM, we can calculate them by calling the corresponding SAGA algorithms.
The part of the code where this processing takes place is not difficult to understand if you have read the previous
sections in this chapter. The first lines,however,need some additional explanation. They provide the information
that is needed to turnyourcode intoan algorithmthat canberun fromanyofthe GUIcomponents, like the toolbox
orthe graphical modeler.
These lines start with a double Python comment symbol (##) and have the following structure:
[parameter_name]=[parameter_type] [optional_values]
Here is a list ofall the parameter types that are supported in processing scripts, their syntax and some examples.
• raster. A raster layer.
• vector. A vector layer.
• table. A table.
• number. A numerical value. A default value must be provided. For instance, depth=number 2.4.
• string. A text string. As in the case of numerical values, a default value must be added. For instance,
name=string Victor.
• boolean. A boolean value. Add True or False after it to set the default value. For example,
verbose=boolean True.
208
Chapter 17. QGIS processing framework
Create Thumbnail in Web Image Viewer | Online Tutorials
or Images; Create Thumbnail; Generate Barcodes on Your Documents; Read Barcodes from Your Documents. Multi-page Tiff Processing; RasterEdge OCR Engine; PDF Reading
can't view pdf thumbnails; view pdf thumbnails in
Create Thumbnail Winforms | Online Tutorials
Create Thumbnail; Generate Barcodes on Your Documents; Read Barcodes from Your Documents. Multi-page Tiff Processing; RasterEdge OCR Engine; PDF Reading; Encode
pdf file thumbnail preview; print pdf thumbnails
QGIS User Guide, Release 2.6
• multiple raster. A set of input raster layers.
• multiple vector. A set of input vector layers.
• field. A field in the attributes table of a vector layer. The name of the layer has to be added after the
field tag. For instance, if you have declared a vector input with mylayer=vector, you could use
myfield=field mylayer to add a field fromthat layeras parameter.
• folder. A folder.
• file. Afilename.
The parameter name is the name that willbe showntothe user whenexecuting the algorithm, and alsothe variable
name touse in the script code. The value entered by the userfor that parameterwill be assigned toa variable with
that name.
When showing the name of the parameterto the user,the name will be edited to improve its appearance,replacing
low hyphens with spaces. So, for instance, if you want the user to see a parameter named A numerical
value,you canuse the variable name A_numerical_value.
Layers and table values are strings containing the file path of the corresponding object. To turn theminto a QGIS
object, you can use the processing.getObjectFromUri() function. Multiple inputs also have a string
value, which contains the file paths to all selected object,separated by semicolons (;).
Outputs are defined in a similarmanner,using the following tags:
• output raster
• output vector
• output table
• output html
• output file
• output number
• output string
The value assigned to the output variables is always a string with a file path. It will correspond to a temporary file
path in case the user has not entered any output filename.
When you declare an output,the algorithmwill tryto addit to QGIS once it is finished. That is why, althoughthe
runalg() method does not load the layers it produces,the final TWI layer will be loaded (using the case of our
previous example), since it is saved to the file entered by the user, which is the value of the corresponding output.
Do not use the load() method in your script algorithms, just when working with the console line. If a layer is
created as output of an algorithm, it should be declared as such. Otherwise, you will not be able to properly use
the algorithm in the modeler, since its syntax (as defined by the tags explained above) will not match what the
algorithm really creates.
Hidden outputs (numbers and strings) do not have a value. Instead, you have to assign a value to them. To do so,
just set the value of a variable with the name you used to declare that output. For instance, if you have used this
declaration,
##average=output number
the following line will set the value of the output to 5:
average 5
In addition to the tags for parameters and outputs, you can also define the group under which the algorithm will
be shown, using the group tag.
If your algorithm takes a long time to process, it is a good idea to inform the user. You have a global named
progress available, with two possible methods: setText(text) and setPercentage(percent) to
modify the progress text and the progress bar.
17.5. Using processing algorithms from the console
209
How to C#: Set Image Thumbnail in C#.NET
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel How to C#: Set Image Thumbnail in C#.NET. With XImage.Raster SDK library, you can create an image viewer and
how to make a thumbnail from pdf; show pdf thumbnails
How to C#: Generate Thumbnail for Excel
Preview Document. Conversion. Convert Excel to PDF. Convert Excel to HTML5. Insert Image. Thumbnail Create. Thumbnail Create. |. Home ›› XDoc.Excel ›› C# Excel
enable pdf thumbnail preview; thumbnail pdf preview
QGIS User Guide, Release 2.6
Several examples are provided. Please check them to see real examples of how to create algorithms using the
processing framework classes. You can right-click on any script algorithm and selectEdit script to edit its code or
just to see it.
17.5.4 Documenting your scripts
As in the case of models, you can create additional documentation for your scripts, to explain what they do and
how to use them. In the script editing dialog, you will find an [Edit script help] button. Click on it and it will
take you to the helpeditingdialog. Check the sectionabout the graphical modeler to know more about this dialog
and how to use it.
Help files are saved inthe same folder as the script itself, adding the .help extension to the filename. Notice that
you can edit your script’s help before saving the script for the firsttime. If you later close the script editingdialog
without saving the script (i.e., you discard it), the help content you wrote will be lost. If your script was already
saved and is associated to a filename, saving the help content is done automatically.
17.5.5 Pre- and post-execution script hooks
Scripts canalso be used to set pre-andpost-execution hooks that are run before and afteran algorithmis run. This
can be used to automate tasks that should be performed whenever an algorithm is executed.
The syntax is identical to the syntax explained above, but an additional global variable named alg is available,
representing the algorithm that has just been (or is about to be)executed.
In the General group of the processing configuration dialog, you will find two entries named Pre-executionscript
file and Post-execution script file where the filename of the scripts to be run in each case can be entered.
.
17.6 The history manager
17.6.1 The processing history
Every time you execute an algorithm, information about the process is stored in the history manager. Along with
the parameters used, the date and time of the execution are also saved.
This way, it is easy to trackand control all the work that has been developed using the processing framework, and
easily reproduce it.
The history manager is a set of registry entries grouped according to their date of execution, making it easier to
find information about an algorithm executed at any particularmoment.
Process information is kept as a command-line expression, even if the algorithm was launched from the toolbox.
This makes it alsousefulforthose learninghowtouse the command-line interface, since theycancall analgorithm
using the toolbox and then check the history manager to see how that same algorithm could be called from the
command line.
Apart from browsing the entries in the registry, you can also re-execute processes by simply double-clicking on
the corresponding entry.
Along with recording algorithm executions, the processing framework communicates with the user by means of
the other groups of the registry, namely Errors, Warnings and Information. In case something is not working
properly, having a look at the Errors might help you to see what is happening. If you get in contact with a
developer to report a bug or error, the information in that group will be very useful for her or him to find out what
is going wrong.
Third-party algorithms are usually executed by calling their command-line interfaces, which communicate with
the user via the console. Although that console is not shown, a full dump of it is stored in the Information group
eachtime you runoneofthosealgorithms. If, forinstance,you are having problems executinga SAGA algorithm,
210
Chapter 17. QGIS processing framework
QGIS User Guide, Release 2.6
Figure 17.28: History
look for an entry named ‘SAGA execution console output’to check all the messages generated by SAGA and try
to find out where the problem is.
Some algorithms, even if they can produce a result with the given input data, might add comments or additional
information to the Warning block if they detect potential problems with the data, in orderto warn you. Make sure
you check those messages if you are having unexpected results.
17.7 Writing new Processing algorithms as python scripts
You can create your own algorithms by writing the corresponding Python code and adding a few extra lines to
supply additional information needed to define the semantics of the algorithm. You can find a Create new script
menu under the Tools group in the Script algorithms block of the toolbox. Double-click on it to open the script
edition dialog. That’s where you should type yourcode. Saving the script from there in the scripts folder (the
default one when you open the save file dialog), with .py extension, will automatically create the corresponding
algorithm.
Thename ofthealgorithm(the oneyouwillsee in thetoolbox)is createdfromthe filename, removingits extension
and replacing low hyphens with blankspaces.
Let’s have the following code, which calculates the Topographic Wetness Index (TWI) directly from a DEM
##dem=raster
##twi=output raster
ret_slope = processing.runalg("saga:slopeaspectcurvature", dem, 0, None,
None, None, None, None)
ret_area = processing.runalg("saga:catchmentarea", dem,
0, False, False, False, False, None, None, None, None, None)
processing.runalg("saga:topographicwetnessindextwi, ret_slope[’SLOPE’],
ret_area[’AREA’], None, 1, 0, twi)
As you can see,it involves 3 algorithms,allofthemcoming fromSAGA.The lastoneofthemcalculates the TWI,
but it needs a slope layer and a flow accumulation layer. We do not have these ones, but since we have the DEM,
17.7. Writing new Processing algorithms as python scripts
211
QGIS User Guide, Release 2.6
we can calculate them callingthe corresponding SAGA algorithms.
The part of the code where this processing takes place is not difficult to understand if you have read the previous
chapter. The first lines,however, need someadditionalexplanation. Theyprovide the informationthatis neededto
turnyour code intoan algorithmthat canbe runfromany of the GUIcomponents,like the toolboxorthe graphical
modeler.
These lines start with a double Python comment symbol (##) and have the following structure
[parameter_name]=[parameter_type] [optional_values]
Here is a list ofall the parameter types that are supported in processign scripts, their syntax and some examples.
• raster. A raster layer
• vector. A vector layer
• table. A table
• number. A numerical value. A default value must be provided. For instance, depth=number 2.4
• string. A text string. As in the case of numerical values, a default value must be added. For instance,
name=string Victor
• longstring. Same as string, but a larger text box will be shown, so it is better suited for long strings,
such as for a script expecting a small code snippet.
• boolean. A boolean value. Add True or False after it to set the default value. For example,
verbose=boolean True.
• multiple raster. A set of input raster layers.
• multiple vector. A set of input vector layers.
• field. A field in the attributes table of a vector layer. The name of the layer has to be added after the
field tag. For instance, if you have declared a vector input with mylayer=vector, you could use
myfield=field mylayer to add a field fromthat layeras parameter.
• folder. A folder
• file. Afilename
• crs. ACoordinate Reference System
The parameter name is the name that willbe showntothe user whenexecuting the algorithm, and alsothe variable
name touse in the script code. The value entered by the userfor that parameterwill be assigned toa variable with
that name.
Whenshowingthename oftheparametertotheuser,the name willbeeditedittoimproveits appearance,replacing
low hyphens with spaces. So, for instance, if you want the user to see a parameter named A numerical
value,you canuse the variable name A_numerical_value.
Layers and tables values are strings containing the filepath ofthe corresponding object. To turn them into a QGIS
object, you can use the processing.getObjectFromUri() function. Multiple inputs also have a string
value, which contains the filepaths to all selected objects, separatedby semicolons (;).
Outputs are defined in a similarmanner,using the following tags:
• output raster
• output vector
• output table
• output html
• output file
• output number
• output string
212
Chapter 17. QGIS processing framework
QGIS User Guide, Release 2.6
• output extent
The value assigned to the output variables is always a string with a filepath. It will correspond to a temporary
filepath in case the user has not entered any output filename.
In addition to the tags for parameters and outputs, you can also define the group under which the algorithm will
be shown, using the group tag.
The last tag that you can use in your script header is ##nomodeler. Use that when you do not want your
algorithm to be shown in the modeler window. This should be used for algorithms that do not have a clear syntax
(for instance, if the number of layers to be created is not known in advance, at design time), which make them
unsuitable for the graphical modeler
17.8 Handing data produced by the algorithm
When you declare an output representing a layer (raster, vector or table), the algorithm will try to add it to QGIS
once it is finished. That is the reason why, although the runalg() method does not load the layers it produces,
the final TWI layer will be loaded, since it is saved to the file entered by the user, which is the value of the
corresponding output.
Do not use the load() method in your script algorithms, but just when working with the console line. If a layer
is created as output of an algorithm, it should be declared as such. Otherwise, you will not be able to properly
use the algorithmin the modeler, since its syntax (as defined by the tags explained above) will not matchwhatthe
algorithm really creates.
Hidden outputs (numbers and strings)do not have a value. Instead,it is you who has toassign a value to them. To
doso, just set the value ofa variable with the name you used to declare that output. For instance,ifyou have used
this declaration,
##average=output number
the following line will set the value of the output to 5:
average 5
17.9 Communicating with the user
If your algorithm takes a long time to process, it is a good idea to inform the user. You have a global named
progress available, with two available methods: setText(text) and setPercentage(percent) to
modify the progress text and the progress bar.
If you have to provide some information to the user, not related to the progress of the algorithm, you can use the
setInfo(text) method,also fromthe progress object.
If your script has some problem, the correct way of propagating it is to raise an exception of type
GeoAlgorithmExecutionException(). You can pass a message as argument to the constructor of the
exception. Processing will take care of handling it and communicating with the user, depending on where the
algorithm is being executed from(toolbox, modeler, Python console...)
17.10 Documenting your scripts
As in the case of models, you can create additional documentation for your script, to explain what they do and
how to use them. In the script editing dialog you will find a [Edit script help] button. Click on it and it will take
you to the helpediting dialog. Checkthe chapterabout the graphical modeler to know more about this dialog and
how to use it.
Help files are saved inthe same folder as the script itself, adding the .help extension to the filename. Notice that
you can edit yourscript’s help before saving it forthe first time. If you laterclose the script editing dialog without
17.8. Handing data produced by the algorithm
213
QGIS User Guide, Release 2.6
saving the script (i.e. you discard it), the help content you wrote will be lost. If your script was already saved and
is associated to a filename,saving is done automatically.
17.11 Example scripts
Severalexamples are availablein the on-linecollection of scripts, which you canaccess byselectingtheGetscript
from on-line script collection tool under the Scripts/tools entry in the toolbox.
Please, check them to see realexamples of how to create algorithms usingthe processing framework classes. You
can right-click on any script algorithm and select Edit script to edit its code or just to see it.
17.12 Best practices for writing script algorithms
Here’s a quick summary of ideas to consider when creating your script algorithms and, epsecially, if you want to
share with other QGIS users. Following these simple rules will ensure consistency across the different Processing
elements such as the toolbox,the modeler or the batch processing interface.
• Do not load resulting layers. Let Processing handle your results and load your layers ifneeded.
• Always declare the outputs your algorithm creates. Avoid things such as decalring one output and then
using the destination filename set for that output to create a collection of them. That will break the correct
semantics of the algorithm and make it impossible to use it safely in the modeler. If you have to write an
algorithmlike that, make sure you add the ##nomodeler tag.
• Do not show message boxes or use any GUI element fromthe script. If you want to communicate with the
user,use the setInfo() method or throw anGeoAlgorithmExecutionException
• As arule of thumb,do not forget that your agorithmmightbeexecutedina contextother thanthe Processing
toolbox.
17.13 Pre- and post-execution script hooks
Scripts canalso be used to set pre-andpost-execution hooks that are run before and afteran algorithmis run. This
can be used to automate tasks that should be performed whenever an algorithm is executed.
The syntax is identical to the syntax explained above, but an additional global variable named alg is available,
representing the algorithm that has just been (or is about to be)executed.
In the General group of the processingconfig dialog youwill find two entries named Pre-execution script file and
Post-execution script file where the filename of the scripts to be run in each case can be entered.
.
17.14 Configuring external applications
The processingframework canbe extendedusing additional applications. Currently, SAGA,GRASS,OTB(Orfeo
Toolbox)andR aresupported,along with some othercommand-line applications that provide spatial data analysis
functionalities. Algorithms relying on an external application are managed by their own algorithm provider.
214
Chapter 17. QGIS processing framework
Documents you may be interested
Documents you may be interested