Skip To Content

R での生態的地位因子分析の実行

前回のレッスンでは、分析範囲および水牛のインシデントに関する生態的詳細をすべて含んでいる 1 つのラスターを生成することによって、データの作成および集約作業をすべて完了しました。ここでは、ENFA モデルを構築してその結果を解釈できるように、このマルチバンド ラスター データセットを、R-ArcGIS Bridge を使用して R に転送します。R-ArcGIS Bridge は常にベクター データをサポートし、R と ArcGIS の間での簡単な転送を可能にしてきましたが、ラスターのサポートは R-ArcGIS Bridge の新機能です。そのため、利用するラスター データに関して R と ArcGIS の間でのシームレスのな接続を可能にするように設計された、複数の新しい関数があります。

R へのデータのブリッジ

データに対して生態的地位因子分析を実行するために、RStudio で作業します。R-ArcGIS Bridge をインストールしたため、 ArcGIS Pro プロジェクト内のデータが RStudio に接続されており、RStudio からアクセス可能になっています。

  1. 必要に応じて、ArcGIS Pro で Ecological Niche Factor Analysis プロジェクトを開いてから、RStudio を開きます。

    次に、 arcgisbinding パッケージのすべての関数を読み込むコマンドを実行します。次に、すばやくチェックを実行する別のコマンドを実行して、ブリッジが正しく実行されていること、および使用している ArcGIS Pro のバージョンを R が認識することを確認します。RStudio の新しいセッションを開始するたびに、両方のコマンドを実行する必要があります。

  2. R コンソールで次のコードを入力し、Enter キーを押します。
    library(arcgisbinding)
  3. R コンソールで次のコードを入力し、Enter キーを押します。
    arc.check_product()

    arc.check_product() 関数は、ArcGIS 製品およびライセンスに関する情報を RStudio コンソールに出力します。現在、シェープファイルのパス、ジオデータベースのフィーチャクラス、テーブル、シングルバンドおよびマルチバンド ラスター、ならびにイメージ サービスの URL は、すべて open 関数で使用することが有効な引数です。

  4. arc.open() 関数を使用します。その引数で、すべてのデータ (ENFA_Environmental_Buffalo_Attributes) を含んでいるコンポジット マルチバンド ラスターの絶対パスを入力し、 Enter キーを押します。
    注意:

    プロジェクト データは、コード例に示した場所とは異なる場所に保存されている場合があります。コードをコピーして貼り付ける場合、それに応じてパスを更新します。また、ファイルのパスをコピーして貼り付ける場合、必ずパスでフォワード スラッシュ (/) を使用してください。R は、ほとんどのファイル ブラウザーが使用するバックスラッシュ (\) を読み取りません。

    data_path <- arc.open("C:/African-Buffalo/Ecological Niche Factor Analysis.gdb/ENFA_Environmental_Buffalo_Attributes")

    このオブジェクトは、データのパスに加えて、ArcGIS データの空間情報および属性情報を含んでおり、現在、他の関数で使用できます。

  5. ラスター パッケージをインストールします。
    install.packages('raster')
    library(raster)

    ラスター パッケージは、作業に使用したラスター データの操作に必要な関数を提供します。arc.raster() 関数は、データを ArcGIS データ タイプから R オブジェクトに変換することと、データをカスタマイズすることを同時に行います。arc.raster() を使用して、操作しようとしている行および列の数に基づいてデータのサブセットを構築することができ、さらに、特定のバンドまたは複数のバンドによってサブセットを作成できます。

    注意:

    パッケージをプログラムでインストールするのが難しい場合は、RStudio のリボンで [ツール] をクリックして、[パッケージのインストール] をクリックします。[パッケージのインストール] ウィンドウで、利用可能なパッケージを検索してインストールできます。

  6. arc.raster() 関数を使用します。1 番目の引数で、操作するオブジェクトとして data_path を入力します。ArcGIS ですでにデータ操作を実行しているため、データをそのまま取り込みます。そのため、2 番目の引数は不要です。
    arc_raster <- arc.raster(data_path)

    arc.raster() 関数は、データを、arc.raster のクラスを含む R オブジェクトに変換します。最後に、arc.raster オブジェクトを rasterBrick オブジェクトに変換することによって、ArcGIS ラスター データを R に取り込むプロセスを終了します。読み込んだラスター パッケージの rasterbrick は、マルチバンド ラスターと等価の R の関数です。これをスクリプトで使用して、以前に作成した ENFA_Environmental_Buffalo_Attributes ラスターの 56 バンドをすべて読み取ることができます。ラスター パッケージは、グリッド空間データを操作、解析、およびモデル化するための関数を提供します。R-ArcGIS Bridge を介して、情報の喪失を心配することなく、データのすべての空間属性を ArcGIS から R に転送することができます。

  7. as.raster() 関数を使用します。1 番目の引数で、arc_raster オブジェクトに変換するオブジェクトとして rasterBrick を使用します。
    r_raster <- as.raster(arc_raster)

    データが、 ArcGIS Pro から RStudio にブリッジされ、ArcGIS データ タイプから、解析を実行できる R オブジェクトに変換されました。

コンポーネント解析の実行

データが R に存在しているので、ライブリのいずれか、およびそれに関連する関数の使用を開始して、R で解析を実行することができます。まず、多くの環境属性間に存在する相関関係を考慮します。生態的データは、多くの場合、高度に相関しており、相関性のある変数は、同じ関係を伝達することによって、互いに強調を抑えます。主成分分析 (PCA) などの分析を使用して、データにおけるほとんどの変動を説明する変数を識別する必要もあります。PCA は、多重共線性や次元縮退などの問題を扱うための一般的な手法です。dudi.pca パッケージの ade4 関数は、データに対して PCA を実行することができ、ENFA 分析で使用できるオブジェクトを返します。

  1. .as 関数を使用して、arc_raster オブジェクトに含まれているピクセルをデータ フレームに変換します。使用する予定の R の関数は、その入力がデータ フレーム形式であることを必要とします。次に、インデックス列を作成し、そのインデックス列に、後で計算を支援するための行番号を入力します。
    variables <- as.data.frame(arc_raster$pixel_block())
    variables$pixel_index <- 1:nrow(variables)
  2. na.omit() 関数を使用して、データ フレーム内のすべての NA (欠落値) を削除します。次に、インデックス値を、pixel_index という名前の新しいベクター オブジェクトに格納します。
    variables <- na.omit(variables)
    pixel_index <- variables$pixel_index
    variables$pixel_index<-NULL

    位置に一致する新しい予測ラスターを作成する場合、pixel_index オブジェクトを使用します。環境および気候データにおける相関関係を処理するために、環境および気候データを水牛存在データから分離します。

  3. 2 つのサブセットを R で定義します。1 つのサブセットはすべての生態的データを含んでおり、環境および気候に関して分析範囲を定義します。もう 1 つのサブセットは、各位置で観察された水牛の数を含んでいます。
    ecological_variables <-variables[,-56]
    buffalo_presence <- variables[, 56]

    次に、環境および気候属性に対して主成分分析を実行します。

  4. library() 関数を使用して、ade4 パッケージを RStudio に読み込みます。必要に応じて install.packages(“ade4”) パッケージのコメントを解除します。
    #install.packages(“ade4”)
    library(ade4)
  5. ecological_variables オブジェクトによって表された環境変数に対して、dudi.pca() 関数を実行します。その他の引数については、プロットとして返される結果が不要であることを指定するために scannfFALSE に設定し、上位 10 個の変数を維持するために nf = 10 を設定します。
    dudi_obj <- dudi.pca(ecological_variables, scannf = FALSE, nf = 10)

    主成分を使用して環境データ間の相関関係を処理し、最も影響力の強い 10 個の変数を見つけたので、生態的地位因子分析を実行することができます。水牛存在データは、重要度の重み付けとして機能します。

  6. adehabitatHS パッケージを読み込みます。必要に応じて install.packages(“adehabitatHS”) の行のコメントを解除します。
    #install.packages(“adehabitatHS”)
    library(adehabitatHS)
  7. buffalo_presence オブジェクトに格納された情報とともに PCA の結果を入力することによって、ENFA 分析を実行します。これらは、scannf = FALSE および nf = 2 の追加引数を受け取ります。
    enfa_result <- enfa(dudi_obj, buffalo_presence, scannf = FALSE, nf = 2)

    前と同様に、scannfFALSE に設定することによって、プロットを受け取らないことを選択し、nf2 に設定することによって、アフリカ水牛が住むことを決める場所に影響を与える、2 つの最も影響力の強い環境特性に重点を置きます。

生息地適合性マップの生成

生態的地位因子分析をフィッティングしたので、モデルの結果を使用して、分析範囲に関して生息地適合性マップを生成できます。このマップは、アフリカ水牛にとってどの程度生息可能であるかに関して、分析範囲内のすべての位置の測定値を提供します。この測定値は、マハラノビス距離と呼ばれるものに基づいています。マハラノビス距離は、検討されている現在の生息地ピクセルと、ENFA で計算された定義済みの生態的地位との間の測定値です。この距離が小さいほど、特定の位置が種の好ましい生態的地位に近くなり、望ましい位置になります。次に、これらの予測値を使用して、環境および気候の選好に基づいて、水牛の新しい保護領域として確立するのに最適な位置を識別することができます。

  1. sp パッケージを読み込みます。必要に応じて #install.packages(“sp”) の行のコメントを解除します。
    #install.packages(“sp”)
    library(sp)
  2. 分析範囲から、新しいピクセル データ フレームを作成します。
    raster_dim <- dim(arc_raster)[c(2,1)]
    grd <- GridTopology(arc_raster$extent[1:2], arc_raster$cellsize, raster_dim)
    spg <- SpatialPixelsDataFrame(grd, data.frame(d=rep(0, raster_dim[1]*raster_dim[2])))
    spg <- spg[pixel_index,1]
  3. predict() 関数を使用して、生成され生態的地位因子分析モデルを取得し、その結果を使用して、生息地適合性値を予測し、ステップ 1 で作成した空間ピクセル データ フレームに入力します。次に、plot() 関数を使用して結果を表示します。
    habitat_suitability <- predict(enfa_result, spg)
    plot(habitat_suitability)
  4. 必要に応じて、RStudio の右下のボックスで、[プロット] をクリックします。

    RStudio でのプロットの表示

    これで、生息地適合性に関する予測マップを生成したので、この出力を再び ArcGIS に書き込んでマッピングおよび視覚化し、その後、アフリカ水牛に適している分析範囲内の別の領域の決定に使用することができます。

    RStudio のプロット

ArcGIS への結果の書き込み

R での作業が完了したら、R-ArcGIS Bridge を使用して、目的の結果を再び ArcGIS に書き込み、さらにマッピングおよび解析を行うことができます。まず、データを、ArcGIS が読み取ることができるラスター形式に再び変換します。

  1. 元のデータと同じ空間参照を使用して、予測ラスターを定義します。
    habitat_suitability@proj4string@projargs<-arc.fromWktToP4(arc_raster$sr$WKT)
  2. arc.write() 関数を使用して、データを再び ArcGIS に転送します。この関数の 1 番目に引数で、Ecological Niche Factor Analysis ファイル ジオデータベースのパスを入力します。出力に、「Habitat_Suitability_Prediction_Raster」という名前を付けます。2 番目の引数で、書き込む R オブジェクトを入力します。
    arc.write("C:/African-Buffalo/Ecological Niche Factor Analysis.gdb/Habitat_Suitability_Raster", habitat_suitability)

    このコマンドを実行すると、R-ArcGIS Bridge が、R からのこの出力データを指定した位置に書き込みます。

  3. ArcGIS Pro の Ecological Niche Factor Analysis プロジェクトに戻ります。
  4. [カタログ] ウィンドウで、[Ecological Niche Factor Analysis] ジオデータベースを開きます。必要に応じて、このジオデータベースを右クリックして [更新] をクリックします。
  5. [Habitat Suitability Prediction Raster] を右クリックして [現在のマップに追加] を選択します。
  6. [コンテンツ] ウィンドウで、必要に応じて [Habitat Suitability Prediction Raster] を展開し、カラー ランプを右クリックします。
  7. 以前と同じ、赤色から緑色までの配色を選択します。

    生息地適合性ラスター

    緑色の陰影内のエリアは、小さいマハラノビス距離を表しています。つまり、これらのエリアは、水牛にとって好ましい環境の生息地に近い位置にあります。黄色および赤色の陰影内のエリアは、大きいマハラノビス距離を持つエリアを表しており、表示された水牛の環境選好に基づいて、これらの位置の特性が水牛にとってあまり理想的ではないということを示しています。

このレッスンでは、R-ArcGIS Bridge を使用して ArcGIS データを ArcGIS から R に転送し、R を使用してデータに対して必要な変換を実行し、主成分分析および生態的地位因子分析を実行した後に、R-ArcGIS Bridge を使用してその結果を再び ArcGIS に転送しました。その後、マップを作成して結果を視覚化しました。次のレッスンでは、結果を解釈し、それらを使用してアフリカ水牛の新しい保護地域を特定します。次のレッスンでは、結果を共有します。