在 R 中修改和屏蔽特定亚洲区域内的环境层

Modifying and Masking Environmental Layers within specific asia area in R

我正在尝试准备用于 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)

Error in compareRaster(x, mask) : different extent

预测变量 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,包含 "predictors3" 的所有变量,但限制在 "ra" 的 运行ge 内。如您所见,ra 的范围包含在预测变量的范围内,并且它们的分辨率是相同的。我应该如何修复错误?

在这种情况下,由于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)

在其他情况下,您可能需要使用 (dis)aggregateresample

根据以上建议,我裁剪了全球气候层"predictors3"来识别两个栅格的范围。然后,对最新的栅格数据进行掩膜,获取限定在特定区域的目标变量。

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