2017-11-29 24 views
0

私は現在の状況下で、また将来の気候変動シナリオの下で、複数の種に対してMaxentを実行しました。私は、nicheOverlap関数とSchoenerのD統計量を使って、現在と将来の適切な生息地の間の変化を定量化しました。私の研究の微生物のかなりの数は、もっと遠い山地を動いているだけなので、将来の分布が現在の分布の中にあるので重複がたくさんあります。 QGISのアスキーファイルを見ると、将来的に面積の面で適切な生息地がないことがわかりますので、これを数値化したいと思います。私はラスタのための領域を計算するための良い方法についてインターネットを精査し、私の想像に完全に合ったものは決して見つけられませんでした。私はそれゆえに、さまざまなスクリプトの断片や断片の合併である何かを書きました。それは下に貼り付けられます。最も適切なラスター生息地の面積を計算するR

2つの質問: 1)これは私がそれがやっていると思っていることにすべて同意しますか? 2)これを簡略化する方法はありますか?具体的には、ラスタからデータフレームに戻ってラスタに戻るのがわかりますか?多分私はラスタに留まることができますか?

ありがとうございました!

レベッカ

#### 
library(raster) 

#load rasters 
m <- raster("SpeciesA_avg.asc") 
mf <- raster("SpeciesA_future_layers_avg.asc") 

#change to dataframe 
m.df <- as.data.frame(m, xy=TRUE) 

#get rid of NAs 
m.df1 <- na.omit(m.df) 

#keep only cells that that have a suitability score above 0.5 (scores range from 0 to 1) 
m.df2 <- m.df1[m.df1$SpeciesA_avg> 0.5,] 

#re-rasterize just the suitable area 
m.raster <- rasterFromXYZ(m.df2) 

##same as above but for future projection 
mf.df <- as.data.frame(mf, xy=TRUE) 
mf.df1 <- na.omit(mf.df) 
mf.df2 <- mf.df1[mf.df1$SpeciesA_future_layers_avg>0.5,] 
mf.raster <-rasterFromXYZ(mf.df2) 

#get sizes of all cells in current distribution raster 
#note my original layers were 30 seconds or 1 km2. 
cell_size<-area(m.raster, na.rm=TRUE, weights=FALSE) 

#delete NAs from all raster cells. It looks like these come back when switching from dataframe to raster 
cell_size1<-cell_size[!is.na(cell_size)] 

#compute area [km2] of all cells in raster 
raster_area_present<-length(cell_size1)*median(cell_size1) 
raster_area_present 

#get sizes of all cells in future raster [km2] 
cell_size<-area(mf.raster, na.rm=TRUE, weights=FALSE) 

#delete NAs from vector of all raster cells 
cell_size1<-cell_size[!is.na(cell_size)] 

#compute area [km2] of all cells in geo_raster 
raster_area_future<-length(cell_size1)*median(cell_size1) 
raster_area_future 

##calculate change in area 
dif_area <- raster_area_present - raster_area_future 
dif_area 

答えて

1

あなたが質問をするとき、あなたは簡単な自己完結型の例を提供する必要があります。私たちが持っていないファイルを指すスクリプトをダンプするだけではありません。簡単な例を書くことはあなたのRを教え、しばしば自分で問題を解決するのに役立ちます。とにかく、ここで私はいくつかの例のデータとあなたの問題を解決する、私は思う:

library(raster) 
#example data 
m <- mf <- raster(ncol=10, nrow=10, vals=0) 
m[,1] <- NA 
m[,3:7] <- 1 
mf[,6:9] <- 1 


# get rid of NAs (the example has none); should not be needed 
m <- reclassify(m, cbind(NA, NA, 0)) 
mf <- reclassify(mf, cbind(NA, NA, 0)) 

# keep cells > 0.5 (scores range from 0 to 1) 
m <- round(m) 
mf <- round(mf) 

# now combine the two layers, for example: 
x <- m + mf * 10 
# area of each cell 
a <- area(x) 
# sum area by class 
z <- zonal(a, x, sum) 

#  zone  value 
#[1,] 0 152327547 
#[2,] 1 152327547 
#[3,] 10 101551698 
#[4,] 11 101551698 

ゾーン0 10「だけ未来」と11で、1は「唯一の現在」で、「現在、また将来はない」であります「現在と未来」 エリアはm^2です。

あなたはMAXENTおよびその他の空間分布モデルにこのチュートリアルをチェックアウトすることもできます。http://rspatial.org/sdm/

+0

私はちょうど0.5の任意の閾値を服用すると、プレゼンス専用種の分布モデルには推奨されていないことを追加したいと思います。これについての会話については、[こちら](https://groups.google.com/forum/#!msg/maxent/MUMu4KP7kSs/QH5g25id3m0J)をご覧ください。 Liuらのような閾値に関するいくつかの論文もある。 2005年と2013年。 – ndimhypervol

+0

私は同意し、それについてのチュートリアルも見ています。しかし、問題はこの閾値を使用し、これはコーディングサイトです... – RobertH