在尝试将栅格层转换为单独的ASCII文件时,options(scipen = opsci) 出错?
我正在整理来自worldclim的 19个生物气候变量的数据,面向欧洲,用于Maxent模型软件。
我将数据以空间栅格的形式获取,并尝试将空间栅格中的每一层(对应每个生物气候变量)转换为单独的ASCII文件,过程如下:
#Downloading the climate data from worldclim for the whole globe
bioclim_2.5.world.1970to2000 <- geodata::worldclim_global(var = 'bio', res = 2.5, download = T, path = "Worldclim_bio_2.5")
#Cropping the bioclim data for study area
Europe.extent <- ext(-24, 69, 35, 82)
bioclim_2.5.Europe.1970to2000 <- crop(bioclim_2.5.world.1970to2000, Europe.extent)
#Putting saved data into ascii format for maxent software
names(bioclim_2.5.Europe.1970to2000)
[1] "wc2.1_2.5m_bio_1" "wc2.1_2.5m_bio_2" "wc2.1_2.5m_bio_3"
[4] "wc2.1_2.5m_bio_4" "wc2.1_2.5m_bio_5" "wc2.1_2.5m_bio_6"
[7] "wc2.1_2.5m_bio_7" "wc2.1_2.5m_bio_8" "wc2.1_2.5m_bio_9"
[10] "wc2.1_2.5m_bio_10" "wc2.1_2.5m_bio_11" "wc2.1_2.5m_bio_12"
[13] "wc2.1_2.5m_bio_13" "wc2.1_2.5m_bio_14" "wc2.1_2.5m_bio_15"
[16] "wc2.1_2.5m_bio_16" "wc2.1_2.5m_bio_17" "wc2.1_2.5m_bio_18"
[19] "wc2.1_2.5m_bio_19"
writeRaster(stack(bioclim_2.5.Europe.1970to2000), filename=names(bioclim_2.5.Europe.1970to2000), bylayer=TRUE, format="ascii", overwrite = TRUE)
当我尝试运行最后一段代码时,它会为第一个生物气候变量(wc2.1_2.5m_bio_1)生成一个ASCII文件,然而随后出现以下错误,且没有生成其他ASCII文件。
Error in options(scipen = opsci) : invalid 'scipen'
有人知道为什么会出现这个错误,或为什么似乎只生成第一层的ASCII文件吗?
解决方案
我觉得你把 “terra” 与 “raster” 的用法混淆了。下面给出在 “terra” 下的做法:
library(terra)
s <- rast(system.file("ex/logo.tif", package="terra"))
nms <- paste0(names(s), ".asc")
x <- writeRaster(s, nms, overwrite=TRUE)
basename(sources(x))
#[1] "red.asc" "green.asc" "blue.asc"
#or like this
x <- writeRaster(s, names(x), filetype="AAIGrid", overwrite=TRUE)
因此你的代码将会是
writeRaster(bioclim_2.5.Europe.1970to2000,
filename=names(bioclim_2.5.Europe.1970to2000),
filetype="AAIGrid", overwrite = TRUE)
另外:如果你通过R/predicts包使用maxent,这些步骤就不需要了。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。