プロセシングフレームワークは追加のアプリケーションを使用して拡張することができます。現在、SAGA、GRASS、OTB(Orfeo Toolbox)とRは、空間データ分析機能を提供するいくつかの他のコマンドラインアプリケーションと一緒に、サポートされています。外部アプリケーションに依存するアルゴリズムは、独自のアルゴリズムプロバイダによって管理されます。
この章では、これらの追加アプリケーションを含めるためのプロセシングフレームワークの設定方法を示し、これらにもとづいたアルゴリズムのいくつかの特定の特徴を説明します。いったんシステムを正しく構成すると、あなたが他のSEXTANTEのgeoalgorithmで行うと同じように、toolboxまたは graphical modelerのようなコンポーネントから外部のアルゴリズムを実行することができるようになります。
By default, all algorithms that rely on an external appplication not shipped with QGIS are not enabled. You can enable them in the configuration dialog. Make sure that the corresponding application is already installed in your system. Enabling an algorithm provider without installing the application it needs will cause the algorithms to appear in the toolbox, but an error will be thrown when you try to execute them.
This is because the algorithm descriptions (needed to create the parameters dialog and provide the information needed about the algorithm) are not included with each application, but with QGIS instead. That is,they are part of QGIS, so you have them in your installation even if you have not installed any other software. Running the algorithm, however, needs the application binaries to be installed in your system.
If you are not an advanced user and you are running QGIS on windows, you might not be interested in reading the rest of this chapter. Make sure you install QGIS in your system using the OSGeo4W application. That will automatically install SAGA, GRASS and OTB in your system, and configure them so they can be run from QGIS. All the algorithms in the simplified view of the toolbox will be ready to be run, without needing any further configuration.
もし、あなたがどのようにこれらのプロバイダが機能するのかを知りたい、あるいは(Rスクリプトのような)簡略化したツールボックスを含まないアルゴリズムなどを使用したいのならば、読み進めてください。
When using an external software, opening a file in QGIS does not mean that it can be opened and processed as well on that other software. In most cases, it can read what you have opened in QGIS, but in some cases, that might not be the case. When using databases or uncommon file formats, whether for raster of vector layers, problems might arise. If that happens, try to use well known file formats that you are sure that are understood by both programs, and check to console output (in the history and log dialog) for knowing more about what is going wrong.
もし、あなたがレイヤを入力するのに使用する外部アルゴリズムを呼び出したときに、この処理でトラブルが起こったり処理が終了しなかった場合は、GRASSラスタレイヤを使用してください。このため、これらのレイヤは利用可能なアルゴリズムとして表示されません。
You should, however, find no problems at all with vector layers, since QGIS automatically converts from the original file format to one accepted by the external application before passing the layer to it. This adds an extra processing time, which might be significant if the layer has a large size, so do not be surprised if it takes more to process a layer from a DB connection that one of a similar size stored in a shapefile.
Providers not using external applications can process any layer that you can open in QGIS, since they open it for analysis through QGIS.
Regarding output formats, all formats supported by QGIS as output can be used, both for raster and vector layers. Some provider do not support certain formats, but all can export to common formats raster layers that can be later transformed by QGIS automatically. As in the case of input layers, if this conversion is needed, that might increase the processing time.
If the extension of the filename specified when calling an algorithm does not match the extension of any of the formats supported by QGIS, then a suffix will be added to set a default format. In the case of raster layers, the tif extension is used, while shp is used for vector layer.
External applications are also aware of the selection that exist in vector layers within QGIS. However, that requires rewritting all input vector layers, just as if they were originally in a format not supported by the external application. Only when no selection exist, or the Use only selected features option is not enabled in the processing general configuration, a layer can be directly passed to an external application.
ほかの場合では、選択したフィーチャのみをエクスポートするには長い実行時間を必要とします。
SAGA algorithms can be run from QGIS if you have SAGA installed in your system and you configure the processing framework properly so it can find SAGA executables. In particular, the SAGA command-line executable is needed to run SAGA algorithms.
In case of running Windows, the standalone installer or the OSGeo4W installer, both install SAGA along with QGIS, and the path is automatically configured, so there is no need to do anything else.
If you have installed SAGA yourself (remember, you need version 2.1), the path to the SAGA executable must be configured. To do it, open the configuration dialog. In the SAGA block you will find a setting named SAGA Folder. Enter the path to the folder where SAGA is installed. Close the configuration dialog and now you are ready to run SAGA algorithms from QGIS.
Linuxで実行する場合、SAGAバイナリはSEXTANTEには含まれていないので、あなたはあなた自身でそのソフトウェアのダウンロードとインストールを行わなければなりません。さらなる情報についてはSAGAウエブサイトをご確認ください。SAGA 2.1が必要とされています。
この場合、それを設定する必要はありません、あなたはそれらのフォルダを見れないでしょう。その代り、あなたはSAGAが適切にインストールされそのフォルダがPath環境変数に追加されていることを確認しなければなりません。システムがどこにSAGAバイナリが置かれているかを確認するためには、ただコンソールを開いて’‘saga_cmd’‘とタイプします。
Most of SAGA algorithms that require several input raster layers, require them to have the same grid system. That is, to cover the same geographic area and have the same cellsize, so their corresponding grids match. When calling SAGA algorithms from QGIS, you can use any layer, regardless of its cellsize and extent. When multiple raster layers are used as input for a SAGA algorithm, QGIS resamples them to a common grid system and then passes them to SAGA (unless the SAGA algorithm can operate with layers from different grid systems).
コマンドグリッドシステムの定義はユーザによって制御されるので、あなたはセッティングウインドウのSAGAグループにそのためのいくつかのパラメータを見出すことになります。対象のグリッドシステムを設定する方法には次の二つがあります。
手動での設定方法。あなたは次のパラメータで値を設定する範囲を定義します。
Notice that QGIS will resample input layers to that extent, even if they do not overlap with it.
入力レイヤから自動的に設定する方法。このオプションを選択するにはただ :guilabel:`Use min covering grid system for resampling`オプションをチェックします。すべてのほかの設定は無視され、すべての入力レイヤを包含する最小範囲が使用されます。対象レイヤのセルサイズは入力レイヤのすべてのセルサイズの最大値になります。
多重ラスタレイヤを使用しないあるいは固有の入力グリッドシステムを必要としないアルゴリズムでは、SAGAを呼び出す前にリサンプリングは実行されませんし、これらのパラメータは使用されません。
Unlike QGIS, SAGA has no support for multi-band layers. If you want to use a multiband layer (such as an RGB or multispectral image), you first have to split it into single-banded images. To do so, you can use the ‘SAGA/Grid - Tools/Split RGB image’ algorithm (which creates 3 images from an RGB image) or the ‘SAGA/Grid - Tools/Extract band’ algorithm (to extract a single band).
SAGAはラスタレイヤがx軸とy軸において同じセルサイズであることを仮定しています。もし、あなたが水平方向と垂直方向でセルサイズが異なる値のレイヤで作業するならば、あなたは予想できない結果を得ることになるでしょう。この場合、入力レイヤがSAGAによって適切に処理されないであろうという警告がプロセスログに加えられることになります。
When QGIS calls SAGA, it does it using its command-line interface, thus passing a set of commands to perform all the required operation. SAGA show its progress by writing information to the console, which includes the percentage of processing already done, along with additional content. This output is filtered and used to update the progress bar while the algorithm is running.
Both the commands sent by QGIS and the additional information printed by SAGA can be logged along with other processing log messages, and you might find them useful to track in detailed what is going on when QGIS runs a SAGA algorithm. you will find two settings, namely Log console output and Log execution commands to activate that logging mechanism.
コマンドラインから外部アプリケーションを使ったり呼び込んだりするようなほとんどのほかのプロバイダは同様なオプションを持っているので、あなたは処理セッティングリストのほかの場所で同様にそれらを見つけるでしょう。
R integration in QGIS is different from that of SAGA in that there is not a predefined set of algorithms you can run (except for a few examples). Instead, you should write your scripts and call R commands, much like you would do from R, and in a very similar manner to what we saw in the chapter dedicated to processing scripts. This chapter shows you the syntax to use to call those R commands from QGIS and how to use QGIS objects (layers, tables) in them.
The first thing you have to do, as we saw in the case of SAGA, is to tell QGIS where you R binaries are located. You can do so using the R folder entry in the processing configuration dialog. Once you have set that parameter, you can start creating your own R scripts and executing them.
今一度、これがLinuxでは異なるので、あなたはRフォルダがPath環境変数に含まれているかをちゃんと確認しなければなりません。もし、あなたがコンソールでただ’‘R’‘とタイプしてRを実行できるなら、あたなは実行する用意ができています。
To add a new algorithm that calls an R function (or a more complex R script that you have developed and you would like to have available from QGIS), you have to create a script file that tells the processing framework how to perform that operation and the corresponding R commands to do so.
スクリプトファイルは:file:`.rsx`拡張子を持ち、もし、あなたがRシンタックスとRスクリプティングの基本知識をもっているのならば、それらを作成するのはとても簡単です。それらはRスクリプトフォルダに保存されています。あなたが :guilabel: (プロセス設定ダイアログから可能な)`R`設定グループにこのホルダを通常の処理スクリプトのフォルダと同様に設定できます。
Let’s have a look at a very simple file script file, which calls the R method spsample to create a random grid within the boundary of the polygons in a given polygon layer. This method belong to the maptools package. Since almost all the algorithms that you might like to incorporate into QGIS will use or generate spatial data, knowledge of spatial packages like maptools and, specially, sp, is mandatory.
##polyg=vector
##numpoints=number 10
##output=output vector
##sp=group
pts=spsample(polyg,numpoints,type="random")
output=SpatialPointsDataFrame(pts, as.data.frame(pts))
The first lines, which start with a double Python comment sign (##), tell QGIS the inputs of the algorithm described in the file and the outputs that it will generate. They work exactly with the same syntax as the SEXTANTE scripts that we have already seen, so they will not be described here again. Check the processing_scripts section for more information.
When you declare an input parameter, QGIS uses that information for two things: creating the user interface to ask the user for the value of that parameter and creating a corresponding R variable that can be later used as input for R commands.
In the above example, we are declaring an input of type vector named polyg. When executing the algorithm, QGIS will open in R the layer selected by the user and store it in a variable also named polyg. So the name of a parameter is also the name of the variable that we can use in R for accesing the value of that parameter (thus, you should avoid using reserved R words as parameter names).
Spatial elements such as vector and raster layers are read using the readOGR() and brick() commands (you do not have to worry about adding those commands to your description file, QGIS will do it) and stored as Spatial*DataFrame objects. Table fields are stored as strings containing the name of the selected field.
テーブルは``read.csv()``コマンドを使って開かれます。もし、ユーザによって入力されたテーブルがCSV形式でないならば、それはRによってそれがインポートされる前に変換されます。
加えて、ラスタファイルは``##usereadgdal``を使うことによる``brick()``に代わって``readGDAL()``コマンドを使って読み込むことができます。
If you are an advanced user and do not want QGIS to create the object representing the layer, you can use the ##passfilename tag to indicate that you prefer a string with the filename instead. In this case, it is up to you to open the file before performing any operation on the data it contains.
上記の情報により、現在私たちは最初のサンプルスクリプトの一行目(Pythonコマンドではじまらない第一行目)を理解することができます。
pts=spsample(polyg,numpoints,type="random")
変数``polygon``はすでに``SpatialPolygonsDataFrame``オブジェクトを含んでいるので、ちょうど``numpoints`` メソッドのように、作成されたサンプルグリッドを加えたポイントの数を示めす、``spsample``メソッドを呼び込むことができます。
私たちは``out``と名付けたタイプベクトルの出力を宣言してから、そこに(この場合は``SpatialPointsDataFrame``に)``out``と名付けた変数と``Spatial*DataFrame``オブジェクトを作成しなければならない。あなたの最終結果を保存する変数があなたが宣言して適切な値を含んでいる同じ名前を持つことを確認するように、あなたはあるらゆる名前をあなたの媒介変数として使うことができます。
In this case, the result obtained from the spsample method has to be converted explicitly into a SpatialPointsDataFrame object, since it is itself an object of class ppp, which is not a suitable class to be returned to QGIS.
もし、あなたのアルゴリズムがラスタレイヤを作成するなら、それらを保存する方法はあなたが``#dontuserasterpackage``オプションを使用するかどうかによります。もし、あなたがそれを使用するならば、レイヤは``writeGDAL()``メソッドを使って保存されます。そうでないならば、raster パッケージから``writeRaster()``メソッドが使われます。
もし、あなたが``#passfilename``オプションを使ったならば、たとえ``raster`` パッケージ(``writeRaster()``を伴った)が入力に使われないとしても、出力はそれを使って作成されます。
もし、あなたのアルゴリズムがなんのレイヤも作成しないで、代わりにコンソールにテキストで結果を作成するのならば、あなたは実行が終了したことを示すようにコンソールに指示をしなければなりません。このために、あなたは``>`` (‘greater’) サインを伴った印刷を欲する結果を作成するだけのコマンドラインを開始します。 すべてのほかの行の出力は表示されません。たとえば、ここにあるのはベクトルレイヤの属性として与えられたフィールド(列)の正常性テストを実行するアルゴリズムの説明ファイルです:
##layer=vector
##field=field layer
##nortest=group
library(nortest)
>lillie.test(layer[[field]])
The output ot the last line is printed, but the output of the first is not (and neither are the outputs from other command lines added automatically by QGIS).
もし、あなたのアルゴリズムがあるグラフィックスの種類(``plot()``メソッドを使って)を作成するならば、次の行を加えます:
##showplots
This will cause QGIS to redirect all R graphical outputs to a temporary file, which will be later opened once R execution has finished.
グラフっクスとコンソール結果はどちらも処理結果マネジャで見えるようになります。
更なる情報はSEXTANTEと共に提供されているスクリプトファイルを確認してください。それらのほとんどはかなり簡潔で、どのようにあなた自身の結果を作成するのかを理解することを十分に助けることでしょう。
ノート
rgdal and maptools libraries are loaded by default so you do not have to add the corresponding library() commands (you have to make sure, however, that those two packages are installed in your R distribution). However, other additional libraries that you might need have to be explicitly loaded. Just add the necessary commands at the beginning of your script. You also have to make sure that the corresponding packages are installed in the R distribution used by QGIS. The processing framework will not take care of any package installation. If you run a script that requires an uninstalled package, the execution will fail, and SEXTANTE will try to detect which packages are missing. You must install those missing libraries manually before you can run the algorithm.
GRASSを設定することはSAGAを設定することよりもそんなに難しくはありません。最初に、GRASSフォルダのパスが定義されなければなりませんが、あなたがウインドウズを利用している場合だけです。加えて、シェルインタプリタ(通常 :file:`msys.exe`は、ほとんどのウインドウズディストリビューションためのGRASSに見つけることができます)が定義され、そのパスも設定されていなければなりません。
By default, the processign framework tries to configure its GRASS connector to use the GRASS distribution that ships along with QGIS. This should work without problems in most systems, but if you experience problems, you might have to do it manually. Also, if you want to use a different GRASS installation, you can change that setting and point to the folder where that it is installed. GRASS 6.4 is needed for algorithms to work correctly.
もし、あなたがLinuxを利用している場合は、GRASSが適切にインストールされているかと、それがコンソールから問題なく起動するかをを確認するだけです。
GRASS algorithms use a region for calculations. This region can be defined manually using values similar to the ones found in the SAGA configuration, or automatically, taking the minimum extent that covers all the input layers used to execute the algorithm each time. If this is the behaviour you prefer, just check the Use min covering region option in the GRASS configuration parameters.
The last parameter that has to be configured is related to the mapset. A mapset is needed to run GRASS, and the processing frmaework creates a temporary one for each execution. You have to specify if the data you are working with uses geographical (lat/lon) coordinates or projected ones.
No additional configuration is needed to run GDAL algorithms, since it is already incorporated to QGIS and algorithms can infere its configuration from it.
Orfeo ToolBox (OTB) algorithms can be run from QGIS if you have OTB installed in your system and you have configured QGIS properly, so it can find all necessary files (command-line tools and libraries).
As in the case of SAGA OTB binaries are included in the standalone installer for Windows, but are not included if you are runing Linux, so you have to download and install the software yourself. Please check the OTB website for more information.
Once OTB is installed, start QGIS, open the processing configuration dialog and configure the OTB algorithm provider. In the Orfeo Toolbox (image analysis) block you will find all settings related to OTB. First ensure that algorithms are enabled.
Then configure the path to the folder where OTB command–line tools and libraries are installed:
このプロバイダーを使用するためには、あなたはTauDEMコマンドラインツールをインストールしなければなりません。
Please visit TauDEM homepage for installation instructions and precompiled binaries for 32bit and 64bit systems. IMPORTANT: you need TauDEM 5.0.6 executables, version 5.2 is currently not supported.
There are no packages for most Linux distribution, so you should compile TauDEM by yourself. As TauDEM uses MPICH2, first install it using your favorite package manager. Also TauDEM works fine with OpenMPI, so you can use it instead of MPICH2.
Download TauDEM 5.0.6 source code and extract files in some folder.
Open linearpart.h file and add after line
#include "mpi.h"
add new line with
#include <stdint.h>
so you’ll get
#include "mpi.h"
#include <stdlib.h>
Save changes and close file. Now open tiffIO.h, find line #include "stdint.h" and replace quotes ("") with <>, so you’ll get
#include <stdint.h>
Save changes and close file. Create build directory and cd into it
mkdir build
cd build
Configure your build with command
CXX=mpicxx cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
それからコンパイルします。
make
Finaly, to install TauDEM into /usr/local/bin, run
sudo make install