修改和掩蔽R中特定亚洲地区的环境层

时间:2015-12-25 01:07:57

标签: r mask layer maxent

我正在尝试准备环境层(限制在特定的亚洲地区)以用于Maxent模型。但是,我在最后一行遇到了一些错误消息:

library(sp)
library(maptools)
library(rworldmap)
library(dismo)
# A specified range of Asia area that suitable for special species
tsta <- read.csv('CM10_Kop_Shp_V1.2/Asiaclip/Asiaclipt.csv',as.is=TRUE)[https://drive.google.com/file/d/0B4vIx9MCfJgfbHpINTlyUGZVbXc/view?usp=sharing][1]
tsta <- tsta[,seq(1,4)]
coordinates(tsta) = c("Lon", "Lat")
gridded(tsta) <- TRUE
ra <- raster(tsta)

# a Rasterstack contains global range of 40 bioclim variables
files3 <- list.files(path=paste
                     ("CM10_1975H_Bio_ASCII_V1.2/CM10_1975H_Bio_V1.2"),
                     , pattern='txt',full.names=TRUE )[https://www.climond.org/Core/Authenticated/Data/CM10_V1.2/CM10_Bio_V1.2/CM10_Bio_ASCII_V1.2/CM10_1975H_Bio_ASCII_V1.2.zip][1]

predictors3 <- stack(files3)
asia.predictors3 <- mask(predictors3,ra)
  

compareRaster(x,mask)出错:程度不同

预测因子3的细节是

predictors3
class       : RasterStack 
dimensions  : 857, 2160, 1851120, 40  (nrow, ncol, ncell, nlayers)
resolution  : 0.1666667, 0.1666667  (x, y)
extent      : -180, 180, -59.16667, 83.66667  (xmin, xmax, ymin, ymax)
coord. ref. : NA 
names       : CM10_1975H_Bio01_V1.2, CM10_1975H_Bio02_V1.2, CM10_1975H_Bio03_V1.2, CM10_1975H_Bio04_V1.2, CM10_1975H_Bio05_V1.2, CM10_1975H_Bio06_V1.2, CM10_1975H_Bio07_V1.2, CM10_1975H_Bio08_V1.2, CM10_1975H_Bio09_V1.2, CM10_1975H_Bio10_V1.2, CM10_1975H_Bio11_V1.2, CM10_1975H_Bio12_V1.2, CM10_1975H_Bio13_V1.2, CM10_1975H_Bio14_V1.2, CM10_1975H_Bio15_V1.2, ... 

ra的详细信息是:

ra
class       : RasterLayer 
dimensions  : 213, 290, 61770  (nrow, ncol, ncell)
resolution  : 0.1666667, 0.1666667  (x, y)
extent      : 97.5, 145.8333, 18.16667, 53.66667  (xmin, xmax, ymin, ymax)
coord. ref. : NA 
data source : in memory
names       : Location 
values      : 168505, 377653  (min, max)

我的目标是准备一个RasterLayer或Rasterstack包含&#34; predictors3&#34;的所有变量。但限制在&#34; ra&#34;的范围内。正如您所看到的,ra的范围包含在预测因子3的范围内,并且它们的分辨率相同。我该如何修复错误?

2 个答案:

答案 0 :(得分:1)

在这种情况下,由于rapredictors3的来源和分辨率相同,您可以使用crop

predictors3 <- raster(xmn=-180, xmx=180, ymn=-59.16667, ymx=83.66667, res=1/6)
ra <- raster(xmn=97.5, xmx=145.8333, ymn=18.16667, ymx=53.66667, res=1/6)

x <- crop(predictors3, ra)

在其他情况下,您可能需要使用(disaggregateresample

答案 1 :(得分:0)

根据上述建议,我将全球气候层“预测因子3”用于确定两个栅格的范围。然后,屏蔽最新的栅格以获取特定区域中限制的目标变量。

asia.predictors <- crop(predictors3,ra)
asia.predictors3 <- mask(asia.predictors,ra)