尽管所有栅格都被叠加,但堆栈和积木函数错误

时间:2018-11-10 09:53:02

标签: r raster r-raster sp rgdal

大家好。

我有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)

1 个答案:

答案 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创建