种类分布模型,使用R中的Dismo包中的randomPoints()函数来产生伪缺数据:错误消息

问题描述 投票:0回答:1

目标:

我的目标是使用Dismo包中的函数randomPoints()构建物种分布预测模型,其最终目的是生成伪缺失点并进行绘图他们在地图上。这些点将被转换为,以便从MODIS文件中提取元数据(即海面盐度,叶绿素水平等),作为重要的生态预测指标,以确定它们如何影响蓝鲸的分布。 这个想法是将存在和伪缺失数据以及相关的元数据值插入到

通用线性混合(GLM)中,

最终将使我的模型更加平衡和准确。

问题概述:

我正在尝试使用

randomPoints()函数遵循此species distribution exercise生成伪缺点(期望输出:请参见图1)。

但是,在运行R代码(请参见下文)之后,我遇到此R错误消息(请参阅下文)。我的r代码还生成了一个绘制有GPS点的地图(图像2)。

错误消息:

错误(函数(类,fdef,mtable):无法为签名“” standardGeneric””找到函数“ nlayers”的继承方法

我试图找到解决方案。但是,在使用R中的映射方面,我是一个相对较新的人,对于这里的问题,我感到非常困惑!

我的数据帧包含

918行

,我想产生与存在点相同数量的伪缺席点。不幸的是,我无法发布数据,但提供了一个mini data frame

作为示例。 如果有人可以帮助我,我将非常感激!

非常感谢!

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(所需输出)

enter image description here

图像2:

enter image description here

[目标:我的目标是使用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

r maps latitude-longitude rgdal dismo
1个回答
0
投票
[我认为您的问题是您没有向randomPoints函数传递适当的遮罩(例如,栅格图层),而是向mask函数本身传递了,这是

standardGeneric

,因此错误消息。
© www.soinside.com 2019 - 2024. All rights reserved.