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

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

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

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

18.34.1. 入力

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

  1. グループ作成、 ##My Group=group

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

  1. ベクター、 ##Layer = vector

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

  3. ラスター、 ##r = raster

  4. テーブル、 ##t = table

  5. 数値、 ##Num = number

  6. 文字列、 ##Str = string

  7. ブール値、 ##Bol = boolean

また、必要なすべてのパラメーターを使用してドロップダウンメニューを持つことができます。項目はセミコロン ; で区切る必要があります:

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

18.34.2. 出力

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

  1. ベクター、 ##output= output vector

  2. ラスター、 ##output= output raster

  3. テーブル、 ##output= output table

  4. プロット、 ## showplots

  5. 結果ビューア のR出力、スクリプト 内部 に 表示したい出力の > を置くだけ

18.34.3. スクリプト本体

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

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

library(sp)

18.34.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. library(sp)sp ライブラリをロード(既にコンピュータにインストールされている必要があり、そのインストールは R内で されている必要があります)

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

  7. SpatialPointsDataFrame 関数で出力ベクターを作成します

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

18.34.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 関数を使用して作成されます。

18.34.3.3. テーブル出力の例

出力がテーブルファイル(CSV)になるように 要約統計 アルゴリズムを編集してみましょう。

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

##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 テーブルに変換します。

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

18.34.3.5. プロットと例

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

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

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

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