MaxEnt解析に必要なものはターゲットである種の分布データと地形・植生などその種の分布に関係があると思われる地理空間情報です。
1. 分布データの準備
ダウンロードした分布調査結果の図からブルーギルの分布情報(2018年6月)を抽出し、csv形式で保存しました(ファイルはこちら)。正確なものではありませんが、今回はとりあえずMaxEntを動かすことを目的としているので良しとします。
2. 地理空間情報データの準備
今回は地理空間情報データとしてこれまでの記事で作成した深度・斜度・底質のラスターデータおよびWorldClimからダウンロードした6月(分布調査が6月だったため)の平均気温・風速データを用います(空間解像度: 30 secondsを使用)。地理空間情報データをMaxEntに読み込ませるためには、それぞれのラスターデータの範囲とセルサイズを一致させた上で、Esri ASCII ラスター形式(.asc)またはDIVA-GISグリッド形式(.grd)にする必要があります。
2.1. データの範囲
ラスターデータから特定の範囲を抜き出すための外枠を用意する必要があります。今回は琵琶湖が舞台なので、湖沼の水域データが活用できそうです。国土交通省の国土数値情報ダウンロードサイトからダウンロードします。
ダウンロードしたファイルを解凍し、QGISで「ベクタレイヤを追加」からシェープファイル(.shp)を読み込みます。QGISに日本の湖沼の水域が表示されます。他の湖沼は邪魔なので、まずは琵琶湖だけを別のレイヤに移します。「シングルクリックによる地物選択」をクリックし、琵琶湖の上でクリックします。すると図1のように琵琶湖全域が選択されます。
続いてメニューの「編集」>「地物をコピー」から「編集」>「新規レイヤへの地物貼り付け」>「一時スクラッチレイヤ」をクリックし、レイヤ名を入力して「OK」を押します(ここでは「LakeBiwa」とした)。これにより琵琶湖だけを別レイヤにコピーできました。最初に読み込んだベクタレイヤを非表示にするか削除し、QGIS上に琵琶湖だけを表示します。
図1 |
続いてメニューの「編集」>「地物をコピー」から「編集」>「新規レイヤへの地物貼り付け」>「一時スクラッチレイヤ」をクリックし、レイヤ名を入力して「OK」を押します(ここでは「LakeBiwa」とした)。これにより琵琶湖だけを別レイヤにコピーできました。最初に読み込んだベクタレイヤを非表示にするか削除し、QGIS上に琵琶湖だけを表示します。
次に琵琶湖のうち、解析に使う南湖のみを切り出します。今はまだ琵琶湖全体が一つの地物となっているので、これを複数に分割します。レイヤを選択した上で、「編集モード切替」をクリックし、「地物を分割」をクリックします(図2)。
この状態で、切りたい部分の開始点をクリックし、終点をクリックすると切断箇所が直線で表示されます。最後に右クリックすることで切断されます(図2の直線は切断後)。切断ができたら「部分の削除」をクリックし、消したい方の地物をクリックすることで地物が削除されます。これにより必要な領域を切り出します(図3)。
図2 |
この状態で、切りたい部分の開始点をクリックし、終点をクリックすると切断箇所が直線で表示されます。最後に右クリックすることで切断されます(図2の直線は切断後)。切断ができたら「部分の削除」をクリックし、消したい方の地物をクリックすることで地物が削除されます。これにより必要な領域を切り出します(図3)。
図3 |
これで完成に見えるのですが、このままだとラスターデータを切り抜く際にエラーとなります。これを回避するため、メニューの「ベクタ」>「ジオメトリツール」>「マルチパートをシングルパートに変換」をクリックし、「入力レイヤ」にさきほど切り出した琵琶湖南湖のレイヤを選択して実行します。「出力レイヤ」という名前のレイヤができるので、これを右クリックし、「エクスポート」>「新規ファイルに地物を保存」でシェープファイル形式(.shp)で適当な名前を付けて保存します(ここではSouthLakeBiwa_boundary.shpとした)。またこの際、「座標参照系」はラスターデータと一致させたほうが良いかと思います。
2.2. 地理情報空間データの編集
上で作成した琵琶湖南湖の範囲データを使用してラスターデータを切り抜きます。まずダウンロードした平均気温データ解凍し、「ラスタレイヤを追加」から読み込みます(データは.tif形式)。そして、メニューの「ラスタ」>「抽出」>「マスクレイヤで切り抜く」をクリックします。入力画面が表示されるので、「入力レイヤ」に平均気温データのレイヤ、「マスクレイヤ」に琵琶湖南湖の範囲データ(ここではSouthLakeBiwa_boundary)を選択し、「実行」をクリックします。完了すると「出力ファイル」という名前のレイヤに切り抜いたラスターデータが出力されます(図4)。このレイヤを右クリックし、「エクスポート」>「名前を付けて保存」でファイル形式をGeo TIFF形式(.tif)で保存します(ここではclipped_tavg06.tifとした)。この段階ではまだ(.asc)形式にはしないでください。
繰り返しになりますが、MaxEnt解析を行うには全てのラスターデータの範囲とセルサイズを一致させなければなりません。そこで、先ほど作成したclipped_tavg06.tifを基準として他のラスターデータを変換していきます。QGISには「ラスタを揃える」という機能があり、これが使えるかと思ったのですが、なぜかエラーで動きませんでした。少々面倒ですが、Rを使って変換をしていきます。方法は以下の通りです。
>library(raster) #使用するパッケージです。なければinstall.packages("raster")でインストールしてください。>library(rgdal) #同上。>s = raster("clipped_tavg06.tif") #基準とするラスターファイルの読み込み。>ex = extent(s) #基準ラスタの範囲を抽出。>writeRaster(s, "clipped_tavg06.asc", "ascii") #ここで基準としたclipped_tavg06.tifをEsri ASCII ラスター形式(.asc)で保存。>r = raster("wc2.1_30s_wind_06.tif") #変換するラスターファイルの読み込み。>r = crop(r, ex) #変換するラスターを基準ラスタの範囲で切り抜く。>resample(r, s, "ngb", filename="clipped_wind06.asc", format="ascii") #基準ラスタのセルサイズに調整。"ngb"は調整方法で最近傍法を意味する。他に"bilinear"も選択できる。また、filenameとformatを指定することで、ASCII ラスター形式で結果をファイルに保存している。
上記のうち、下の3行を繰り返すことで、他のラスターファイルも同じようにして範囲とセルサイズを調整します。完了したら作成した.asc形式のファイルをメモ帳などで開き、先頭の5行(NCOLS, NROWS, XLLCONER, YLLCORNER, CELLSIZE)が完全に一致しているか確認してください。できていれば新しいディレクトリを作り、これらのファイルをそこに移動させます。
3. MaxEnt解析の実行
このうち、環境レイヤの底質データ(ここではclipped_sediment)はカテゴリカルデータなので、「Categorical」に設定します。他は「Continuous」のままで大丈夫です。最後に出力ディレクトリを指定し、「RUN」をクリックします。問題なければこのディレクトリに結果のファイルが出力されるはずです。このうちの.htmlファイルを開くと、モデルの評価、環境データごとの寄与度、予測された環境適地の地図などが確認できます。また、出力された.ascファイルをQGISに読み込むことで生息適地の地図を表示することもできます(図6)。
![]() |
図6 |
参考文献
1. 田口貴史・石崎大介・根本守仁、令和元年(2019 年)6 月の琵琶湖南湖におけるブルーギルの分布、外来魚駆除対策研究(https://www.pref.shiga.lg.jp/file/attachment/5238608.pdf)