18.33. プロセッシングでRスクリプトを使用する

Module contributed by Matteo Ghetta - funded by Scuola Superiore Sant’Anna

プロセッシングにより、QGIS内でRスクリプトを作成して実行できます。

警告

Rがお使いのコンピュータにインストールされ、PATHが正しく設定される必要があります。さらに、プロセッシングは外部のRパッケージを呼び出すだけで、それらをインストールできません。だから、Rに直接外部のパッケージをインストールしてください。ユーザーマニュアル中の関連する を参照。

ノート

何らかの パッケージ 問題がある場合、多分それは sprgdalraster のように、プロセッシングで必要とされる 必須 パッケージが不足していることに関連しています。

18.33.1. スクリプトを追加する

スクリプトを追加するのはとても簡単です。プロセッシングツールボックスを開き、 R ‣ ツール ‣ 新しいRのスクリプトを作成 をクリックするだけです。

../../../_images/r_intro_1.png

ノート

プロセッシングの中にRが見あたらない場合は、 プロセッシング ‣ オプション ‣ プロバイダー を有効にする必要があります

スクリプト本体を追加できる前にいくつかのパラメーターを指定する必要がある スクリプトエディタウィンドウ を開きます。

../../../_images/r_intro_2.png

18.33.2. プロットを作成する

このチュートリアルでは、ベクターレイヤーフィールドの 箱ひげ図 を作成しようとしています。

exercise_data/processing/r_intro/ フォルダの下にある r_intro.qgs QGISプロジェクトを開きます。

18.33.2.1. スクリプトのパラメーター

エディタを開いて、それの最初に書き始めます。

スクリプト本体の にいくつかのパラメーターを指定する 必要があります

  1. スクリプトを置く先となるグループの名前:

    ##plots=group
    

    プロセッシングツールボックスの プロット グループでスクリプトを見つけます。

  2. (ちょうどこの例では)プロットを表示するプロセッシングを指示する必要があります:

    ##showplots
    

    プロットが表示されます プロセッシングの 結果ビューア 中にこの方法で。

  3. 作業しているデータの種類をプロセッシングに伝えることも必要です。この例では、ベクターレイヤーのフィールドからプロットを作成したい:

    ##Layer=vector
    

    プロセッシングは今、入力がベクターであることを知っています。名前 レイヤー は重要ではありません、重要なのは ベクター パラメーターです。

  4. 最後に、プロットするベクターレイヤーの入力フィールドを指定する必要があります:

    ##X=Field Layer
    

    だから、プロセッシングはその フィールドレイヤーX と呼ばれていることを知っています。

18.33.2.2. スクリプト本体

今、機能を追加できるスクリプトの 見出し を設定し終わりました:

boxplot(Layer[[X]])

箱ひげ は、データセットとして レイヤー をデータセットのフィールドとして X を呼び出す、R関数自体の名前であることに注意してください。

警告

パラメーター X は、二重角括弧 [[]] の範囲内であります

最後のスクリプトは次のようになります:

##Vector processing=group
##showplots
##Layer=vector
##X=Field Layer
boxplot(Layer[[X]])
../../../_images/r_intro_3.png

プロセッシングによって提案されたデフォルトのパスにスクリプトを保存します。選択した名前がプロセッシングツールボックスに見つかるスクリプトの名前と同じになります。

ノート

スクリプトは他のパスに保存できますが、プロセシングが自動的にアップロードできず、手動ですべてのスクリプトをアップロードすることが必要になります

今、エディタ・ウィンドウの上部にあるボタンを使用して、それを実行します。

../../../_images/r_intro_4.png

エディタウィンドウが閉じられた後、それ以外の場合は、スクリプトを見つけるために、プロセシングのテキストボックスを使用します。

../../../_images/r_intro_5.png

これで、プロセシングアルゴリズムのウィンドウで必要なパラメーターを記入できます:

  • レイヤー として サンプル点 を選択する

  • X フィールドに パラメーターを記入します

[実行] をクリックしてください。

../../../_images/r_intro_6.png

結果ウィンドウ が自動的に開くはずですが、そうでない場合は プロセシング ‣ 結果ビューア... をクリックするだけです。

これが表示される最終的な結果です。

../../../_images/r_intro_7.png

ノート

プロットを右クリックして画像を開き、コピーし、保存できます

18.33.3. ベクターを作成する

Rスクリプトを使用すると、ベクターも作成できますし、自動的にQGISでそれをロードします。

次の例は ランダムサンプリンググリッド スクリプトからとられています。これはオンラインコレクションからダウンロード R ‣ ツール ‣ オンラインコレクションからRスクリプトをダウンロード できます。

この演習の目的は、 sp パッケージの spsample 機能を使用してレイヤーの範囲内のランダムなポイントベクターを作成することです。

18.33.3.1. スクリプトのパラメーター

前と同じように、スクリプト本体の前にいくつかのパラメーターを設定する必要があります。

  1. スクリプトを置く先となるグループの名前を指定します、例えば ポイントパターン分析

    ##Point pattern analysis=group
    
  2. ランダムなポイントが含まれているレイヤーを設定する:

    ##Layer=vector
    
  3. 作成しようとしているポイントの数を設定する:

    ##Size=number 10
    

    ノート

    10をデフォルト値にします。この数は変更できますし、パラメーターをデフォルトの数なしのままにもできます

  4. 出力はベクターレイヤーであることを指定します:

    ##Output= output vector
    

18.33.3.2. スクリプト本体

今、関数の本体を追加できます。

  1. spsample 機能を実行します:

    pts=spsample(Layer,Size,type="random")
    

    このように関数は点の数は サイズ パラメーターから取得され、点発生が ランダム であり、 レイヤー の範囲を取り

  2. 出力のパラメーターを含む行を書く:

    Output=SpatialPointsDataFrame(pts, as.data.frame(pts))

最後のスクリプトは次のようになります:

##Point pattern analysis=group
##Layer=vector
##Size=number 10
##Output= output vector
pts=spsample(Layer,Size,type="random")
Output=SpatialPointsDataFrame(pts, as.data.frame(pts))
../../../_images/r_intro_8.png

それを保存し、それを実行し、実行しているボタンをクリックします。

新しいウィンドウで正しいパラメーターを入力し:

../../../_images/r_intro_9.png

そして実行をクリックしてください。

結果のポイントが、地図キャンバスに表示されます

../../../_images/r_intro_10.png

18.33.4. R - プロセシング構文

プロセシングは、Rから結果を得るために、いくつかの特別な構文を使用していることに注意してください:

  • コマンドの前に > は、 >lillie.test(Layer[[Field]]) 中でのように、結果がR出力(結果ビューア)に送られるべきことを意味します

  • プロットした後 + はオーバーレイプロットを呼び出します。例えば、 plot(Layer[[X]], Layer[[Y]]) + abline(h=mean(Layer[[X]]))