17.32. 処理スクリプトでRの構文

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

[処理]でRスクリプトを記述するために採用されている構文はかなりトリッキーである可能性があります。

各スクリプトは``##``で始まる 入力出力 で始ま ります。

17.32.1. 入力

tehの入力を指定する前に、スクリプトが置かれるているアルゴリズムのグループを設定することもできます。グループがすでに存在する場合は、アルゴリズムが自動的に作成される他、他の新しいグループに追加されます。

  1. group creation, ##My Group=group

それから、すべての入力タイプと最終的には追加のパラメータを指定する必要があります。異なる入力にすることができます。

  1. ベクトル、 `` ##層= vector``

  2. ベクトルフィールド、 `` ## F =フィールドLayer``(レイヤは、入力レイヤの名前です)

  3. テーブル、 `` ##層= raster``

  4. number, ##Num = number
  5. string, ##Str = string
  6. boolean, ##Bol = boolean

また、必要なすべてのパラメータを使用してドロップダウンメニューを持つことができます。項目は ``半列に分離されなければなりません; ``

  1. ##type=selection point;lines;point+lines

17.32.2. 出力

入力のように、各出力は、スクリプトの先頭で定義する必要があります。

  1. ベクター、 `` ##の出力=出力vector``

  2. ラスタ、 `` ##の出力=出力raster``

  3. テーブル、 `` ##の出力=出力TABLE``

  4. プロット、 `` ## showplots``

  5. 表示したいだけ入れ*結果ビューアー*のR出力、**スクリプト**内部の ``> `` **前**出力

17.32.3. スクリプト本体

スクリプト本体はR形式の構文に従い、 ログ パネルは何かがスクリプトで間違っていた場合に助けになりえます。

スクリプトでは、すべての追加のライブラリをロードする必要があることを 忘れないでください

library(sp)

17.32.3.1. ベクトル出力の例

入力レイヤの範囲からランダムな点を作成するオンラインコレクションからのアルゴリズムを見てみましょう:

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

そして、線を介して取得します:

  1. ポイントパターン分析 は、アルゴリズムのグループ

  2. `` Layer`` は入力 ベクトル レイヤ

  3. `` Size`` は10のデフォルト値を持つ 数値 パラメータ、

  4. Output はアルゴリズムによって作成される ベクトル レイヤ、

  5. ``ライブラリー(sp) `` は sp ライブラリをロード(既にコンピュータにインストールされている必要があり、そのインストールは R内で されている必要があります)

  6. sp ライブラリの spsample 関数を呼び出し、上記で定義されたすべての入力に渡します

  7. `` SpatialPointsDataFrame`` 機能で出力ベクトルを作成します

それでおしまい!QGIS凡例中に持っているベクタレイヤでアルゴリズムを実行し、多数のランダムポイントを選択するだけで、QGIS地図キャンバスにそれらが得られるでしょう。

17.32.3.2. ラスタ出力の例

次のスクリプトは、基本的な通常のクリギングを実行し、補間値のラスター地図を作成します:

##Basic statistics=group
##Layer=vector
##Field=Field Layer
##Output=output raster
require("automap")
require("sp")
require("raster")
table=as.data.frame(Layer)
coordinates(table)= ~coords.x1+coords.x2
c = Layer[[Field]]
kriging_result = autoKrige(c~1, table)
prediction = raster(kriging_result$krige_output)
Output<-prediction

入力中のベクトルおよびそのフィールドからアルゴリズムは、 automap のRパッケージの autoKrige 関数を使用し、最初にクリギングモデルを計算し、次にラスタを作成します。

ラスタは、ラスタRパッケージの raster 機能を使用して作成されます。

17.32.3.3. テーブル出力の例

出力は、テーブルファイル(CSV)になるようにのが ``概要Statistics``アルゴリズムを編集してみましょう。

スクリプトの本文は以下の通りです:

##Basic statistics=group
##Layer=vector
##Field=Field Layer
##Stat=Output table
Summary_statistics<-data.frame(rbind(
sum(Layer[[Field]]),
length(Layer[[Field]]),
length(unique(Layer[[Field]])),
min(Layer[[Field]]),
max(Layer[[Field]]),
max(Layer[[Field]])-min(Layer[[Field]]),
mean(Layer[[Field]]),
median(Layer[[Field]]),
sd(Layer[[Field]])),row.names=c("Sum:","Count:","Unique values:","Minimum value:","Maximum value:","Range:","Mean value:","Median value:","Standard deviation:"))
colnames(Summary_statistics)<-c(Field)
Stat<-Summary_statistics

3行目は入力に ベクトル場 を指定し、4行目は出力テーブルであるべきであるアルゴリズムを伝えます。

最後の行は、スクリプトで作成された `` Stat``オブジェクトを取得し、 `` csv``テーブルに変換します。

17.32.3.4. コンソール出力の例

前の例を取り、テーブルを作成する代わりに、 結果ビューア で結果を印刷できます:

##Basic statistics=group
##Layer=vector
##Field=Field Layer
Summary_statistics<-data.frame(rbind(
sum(Layer[[Field]]),
length(Layer[[Field]]),
length(unique(Layer[[Field]])),
min(Layer[[Field]]),
max(Layer[[Field]]),
max(Layer[[Field]])-min(Layer[[Field]]),
mean(Layer[[Field]]),
median(Layer[[Field]]),
sd(Layer[[Field]])),row.names=c("Sum:","Count:","Unique values:","Minimum value:","Maximum value:","Range:","Mean value:","Median value:","Standard deviation:"))
colnames(Summary_statistics)<-c(Field)
>Summary_statistics

スクリプトはわずか2箇所編集する以外は上記とまったく同じです。

  1. 出力はもはや指定されない(第4行は除去されました)

  2. 最後の行は、 ``> ``それは結果ビューアでオブジェクトを印刷するための処理を指示することから始まります

17.32.3.5. プロットと例

プロットを作成することは非常に簡単です。次のスクリプトに示すように、 `` ## showplots`` パラメータを使用する必要があります:

##Basic statistics=group
##Layer=vector
##Field=Field Layer
##showplots
qqnorm(Layer[[Field]])
qqline(Layer[[Field]])

スクリプトは入力にベクトルレイヤのフィールドを取り、分布の正規性をテストするために QQプロット を作成します。

プロットは自動的に処理の 結果ビューアー に追加されます。