大家好。
我有13个生物气候变量(.tiff格式),我将通过使用dismo软件包来执行sdm。 我遵循了Robert J. Hijmans和Jane Elith编写的教程。 但是,当我尝试堆叠所有变量时,出现以下错误
Error in .local(.Object, ...) :
Error in .rasterObjectFromFile(x, band = band, objecttype = "RasterLayer", :
Cannot create a RasterLayer object from this file.
我文件的所有坐标系,范围和像元大小都进行了调整,因此都相同。 当我尝试使用替代砖函数时,出现以下错误:
Error in .rasterObjectFromFile(x, objecttype = "RasterBrick", ...) :
Cannot create a RasterLayer object from this file.
In addition: There were 12 warnings (use warnings() to see them)
我使用了warning()消息,但它为空。.
你们中的任何人对这种错误的可能原因有什么暗示吗? 我试图用谷歌搜索它,但是不幸的是没有答案可以解决它。 谢谢你。
这里是成绩单的片段
#setting the workspace
setwd("D:/Riset/MaxentSelaginella/newpaperproject_part2/MakalahVI/Workspace_R")
#Loading Libraries
library("sp")
library("raster")
library("maptools")
library("rgdal")
library("dismo")
library("rJava")
#open the csv file
obs.data <- read.csv(file = "data3/Selaginella_plana.csv", sep = ",")
#open Environmental Data
files <- list.files(path = "data3/tif/", pattern = ".tif", full.names=TRUE)
#stacking all the files
predictors <- brick(files)
答案 0 :(得分:1)
我想您需要使用stack
而不是brick
。根据{{1}}帮助,实际上:
RasterBrick是一个多层栅格对象。它们通常是从 多层(带)文件;但它们也可以完全存在于内存中。 它们类似于RasterStack(可以使用堆栈创建),但是处理 使用RasterBrick的时间应该更短。 但是它们的灵活性较差,因为它们只能指向单个文件。
因此,如果我们尝试“堆叠”多个文件:
brick
此操作失败:
library(raster)
r <- raster(ncols = 100, nrows = 100, vals = 1:10000)
rfile1 <- tempfile(fileext = ".tif")
writeRaster(r, filename = rfile1)
rfile2 <- tempfile(fileext = ".tif")
writeRaster(r, filename = rfile2)
files_to_stack <- c(rfile1, rfile2)
这可行:
brick(files_to_stack)
#> Warning in if (x == "" | x == ".") {: the condition has length > 1 and only
#> the first element will be used
#> Warning in if (!start %in% c("htt", "ftp")) {: the condition has length > 1
#> and only the first element will be used
#> Warning in if (fileext %in% c(".GRD", ".GRI")) {: the condition has length
#> > 1 and only the first element will be used
#> Warning in if (!file.exists(x)) {: the condition has length > 1 and only
#> the first element will be used
.....
#> Error in .rasterObjectFromFile(x, objecttype = "RasterBrick", ...): Cannot create a RasterLayer object from this file.
如果您想拥有stack(files_to_stack)
#> class : RasterStack
#> dimensions : 100, 100, 10000, 2 (nrow, ncol, ncell, nlayers)
#> resolution : 3.6, 1.8 (x, y)
#> extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
#> coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
#> names : file46e41bcd78e3, file46e43ea75bad
#> min values : 1, 1
#> max values : 10000, 10000
来进一步提高“效率”,
处理中,您可以将不同的“图层”另存为多波段tiff,然后使用砖块打开:
brick
由reprex package(v0.2.1)于2018-11-10创建