Ошибка функции стека и кирпича, несмотря на то, что все растры были - PullRequest
0 голосов
/ 10 ноября 2018

Добрый день всем ..

У меня есть 13 биоклиматических переменных (в формате .tiff), которые я буду использовать для выполнения sdm с помощью пакета dismo. Я следовал учебному пособию, написанному Робертом Дж. Хеймансом и Джейн Элит. Однако, когда я попытался сложить все переменные, я получил следующую ошибку

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)

я использовал предупреждение (), но оно было пустым ..

Есть ли у кого-нибудь из вас какие-либо намеки относительно того, что может быть причиной таких ошибок? Я пытался Google, но, к сожалению, ни один ответ не может решить эту проблему. Заранее спасибо ..

Здесь представлена ​​фракция транскрипта

#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 голосов
/ 10 ноября 2018

Полагаю, вам нужно использовать stack вместо brick.Согласно справке brick, фактически:

RasterBrick - это многослойный растровый объект.Они обычно создаются из многослойного (полосового) файла;но они также могут существовать полностью в памяти.Они похожи на RasterStack (который может быть создан с помощью стека), но при использовании RasterBrick время обработки должно быть меньше. Тем не менее, они менее гибки, поскольку могут указывать только на один файл.

Итак, если мы попытаемся «сложить» несколько файлов:

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

Если вы хотите получить brick для получения некоторого выигрыша в «эффективности» при дальнейшей обработке, вы можете сохранитьразличные «слои» в виде многополосного tiff, а затем откройте их с помощью кирпича:

rfile_multi <- tempfile(fileext = ".tif")
writeRaster(stack(files_to_stack), filename = rfile_multi)
brick(rfile_multi)

#> class       : RasterBrick 
#> 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 
#> data source : D:\RTemp\RtmpacXztJ\file4808784f268c.tif 
#> names       : file4808784f268c.1, file4808784f268c.2 
#> min values  :                  1,                  1 
#> max values  :              10000,              10000

Создано в 2018-11-10 пакетом Представить (v0.2.1)

...