randomPoints
函数传递适当的遮罩(例如,栅格图层),而是向mask
函数本身传递了,这是standardGeneric
,因此错误消息。目标:
我的目标是使用Dismo包中的函数randomPoints()构建物种分布预测模型,其最终目的是生成伪缺失点并进行绘图他们在地图上。这些点将被转换为 通用线性混合(GLM)中, 问题概述: randomPoints()函数遵循此species distribution exercise生成伪缺点(期望输出:请参见图1)。 错误消息: 我试图找到解决方案。但是,在使用R中的映射方面,我是一个相对较新的人,对于这里的问题,我感到非常困惑! 我的数据帧包含 918行
非常感谢!
R-code:
###Open Packages
library("sp")
library("rgdal")
library("raster")
library("maptools")
library("rgdal")
library("dismo")
library("spatialEco")
library("ggplot2")
library("dplyr")
library("maps")
library("ggspatial")
library("GADMTools")
library("maps")
##Mini Dataframe
Blue.whale_New <- data.frame(longitude = c(80.5, 80.5, 80.5, 80.5, 80.4, 80.4, 80.5, 80.5, 80.4),
latitude = c(5.84, 5.82, 5.85, 5.85, 5.89, 5.82, 5.82, 5.84, 5.83))
####World Bioclim Data + GADM Object
##Creating an array object with just longitude and latitude decimal coordinates
##Upload the maps
##Plotting the map of Sri Lanka
###GADM OBJECT
dev.new()
bioclim1.data <- getData('GADM', country='LKA', level=1)
#####Worldclim raster layers
bioclim.data <- getData(name = "worldclim",
var = "bio",
res = 2.5,
path = "./")
####Get bounding box of Sri Lanka shape file
bb=bioclim1.data@bbox
# Determine geographic extent of our data
max.lat <- ceiling(max(Blue.whale$latitude))
min.lat <- floor(min(Blue.whale$latitude))
max.lon <- ceiling(max(Blue.whale$longitude))
min.lon <- floor(min(Blue.whale$longitude))
geographic.extent <- extent(x = c(min.lon, max.lon, min.lat, max.lat))
#####Plot map
dev.new()
plot(bioclim1.data,
xlim = c(min(c(min.lon,bb[1,1])), max(c(max.lon,bb[1,2]))),
ylim = c(min(c(min.lat,bb[2,1])), max(c(max.lat,bb[2,2]))),
axes = TRUE,
col = "grey95")
# Add the points for individual observation
points(x = Blue.whale$longitude,
y = Blue.whale$latitude,
col = "olivedrab",
pch = 15,
cex = 0.50)
###Building a model and visualising results
##Crop bioclim data to geographic extent of blue whales GADM Map
bioclim.data.blue.whale_1<-crop(x=bioclim1.data, y=geographic.extent)
##Crop bioclim data to geographic extent of blue whales World Clim
bioclim.data.blue.whale_2<-crop(x = bioclim.data, y = geographic.extent)
#Build distribution mode using the World Clim)
bw.model <- bioclim(x = bioclim.data, p = Blue.whale_New)
# Predict presence from model
predict.presence <- dismo::predict(object = bw.model, x = bioclim.data, ext = geographic.extent)
# Plot base map
dev.new()
plot(bioclim1.data,
xlim = c(min(c(min.lon,bb[1,1])), max(c(max.lon,bb[1,2]))),
ylim = c(min(c(min.lat,bb[2,1])), max(c(max.lat,bb[2,2]))),
axes = TRUE,
col = "grey95")
# Add model probabilities
plot(predict.presence, add = TRUE)
# Redraw those country borders
plot(bioclim1.data, add = TRUE, border = "grey5")
# Add original observations
points(Blue.whale_New$longitude,
Blue.whale_New$latitude,
col = "olivedrab", pch = 20, cex = 0.75)
##Psuedo Absence Points
# Use the bioclim data files for sampling resolution
bil.files <- list.files(path = "data/wc2-5",
pattern = "*.bil$",
full.names = TRUE)
# Randomly sample points (same number as our observed points)
##Mask = provides resolution of sampling points
##n = number of random points
##ext = Spatially restricts sampling
##extf = expands sampling a little bit
background <- randomPoints(mask = mask,
n = nrow(Blue.whale_New),
ext = geographic.extent,
extf = 1.25)
#Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘nlayers’ for signature ‘"standardGeneric"’
解决问题后,我计划运行的代码
Visualize the pseudo-absence points on a map:
# Plot the base map
dev.new()
plot(bioclim1.data,
xlim = c(min(c(min.lon,bb[1,1])), max(c(max.lon,bb[1,2]))),
ylim = c(min(c(min.lat,bb[2,1])), max(c(max.lat,bb[2,2]))),
axes = TRUE,
col = "grey95")
# Add the background points
points(background, col = "grey30", pch = 1, cex = 0.75)
# Add the observations
points(x = Blue.whale_New$longitude,
y = Blue.whale_New$latitude,
col = "olivedrab",
pch = 20,
cex = 0.75)
box()
# Arbitrarily assign group 1 as the testing data group
testing.group <- 1
# Create vector of group memberships
group.presence <- kfold(x = Blue.whale_New, k = 5) # kfold is in dismo package
图像1(所需输出)
图像2:
[目标:我的目标是使用Dismo包中的函数randomPoints()建立物种分布预测模型,其最终目的是生成伪缺失点并将其绘制在...上]] >>
randomPoints
函数传递适当的遮罩(例如,栅格图层),而是向mask
函数本身传递了,这是standardGeneric
,因此错误消息。randomPoints
函数mask_r <- bioclim1.data[[1]] #just one raterLayer
mask_r[!is.na(mask_r)] <- 1 #set all non-NA values to 1
background <- randomPoints(mask = mask_r, #note the proper mask layer
n = nrow(Blue.whale_New),
ext = geographic.extent,
extf = 1.25)
我尚未检查,但是此解决方案应该有效。最佳,
Emilio
randomPoints
函数传递适当的遮罩(例如,栅格图层),而是向mask
函数本身传递了,这是standardGeneric
,因此错误消息。