我是 R 世界的新手,我正在尝试做一个物种分布模型,但是当我绘制我的结果时,这些点不在我的地图上,我试图改变 CRS 但我没有解决我的问题,现在我会去给你看我的代码
library(dismo)
library(raster)
library(dplyr)
library(rnaturalearth)
在这里,我从 gbif 下载了我的物种
gbif("Miniopterus", "schreibersii" , download=F)
minio<- gbif("Miniopterus", "schreibersii" , download=T) #you need 2 min approximately
我看到了记录的基础,然后我选择了 2 种不同的类型
table(minio$basisOfRecord)
#Filter data minio----
minio<- minio%>%
filter(!is.na(lat))%>%
filter(!is.na(lon))%>%
filter(year>1980)%>%
filter(basisOfRecord %in% c("HUMAN_OBSERVATION", "OBSERVATION"))
class(minio)
nrow(minio)
我只选择了经度和纬度
miniogeo<-minio%>%
select(lon,lat)
head(miniogeo)
miniogeo$species<-1
head(miniogeo)
nrow(miniogeo)
我创建了坐标并设置了 crs
coordinates(miniogeo) <-c("lon","lat")
crs(miniogeo) <- "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
proj4string(miniogeo) <- CRS("+init=epsg:4326")
这里对我来说是个问题,我尝试了很多类型的函数来创建地图,但这是最有效的(我发现的那些函数中最有效的)。我需要放大西班牙和葡萄牙,并且需要排除“非洲”。
Europe <- ne_countries(scale="medium", type="map_units", returnclass="sf", continent="Europe")
Worldclim<-raster::getData('worldclim', var='bio', res=2.5)
Europe <- Europe %>%
dplyr::select(geometry,name_long) %>%
filter(name_long!='Russian Federation')
plot(Worldclim[[1]]) #or plot(worldclim$bio1)
plot(st_geometry(Europe))
points(miniogeo, cex=0.1)
envData<-crop(Worldclim, Europe)
EuropePred <- mask(envData, Europe) #we create a new raster without NA value
在这里我绘制了我的观点但是,正如你所看到的,我的观点超出了我的地图
plot(EuropePred[[1]]) #example
points(miniogeo, cex=0.2)
然后我尝试对西班牙和葡萄牙进行缩放。
extSpnPrt<-extent(c(-11,10,35,56))
miniogeo<-crop(miniogeo,extSpnPrt)
SpainPort<-crop(EuropePred,extSpnPrt)
plot(SpainPort$bio2)
points(miniogeo, cex=0.1)
有人能理解我的问题吗?我真的很抱歉,我尝试了很多时间来更好地理解,但我的 R 水平目前还很基础。我要感谢所有花时间阅读本文的人。祝你一天愉快
这是我的地图只有几何图形和 worldclim 数据 在此处输入图像描述的结果