Проблемы с l oop при использовании writeRaster - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь создать для l oop, чтобы объединить 4 растра (плитки EVI MODIS) за раз (потому что 4 растра создают одну большую карту) в списке из 8 растров (мой реальный список намного больше но я делаю тест), затем обрезать всю карту и, наконец, записать (writeRaster) результат в той же папке. Это код, который я использую, но я не знаю, правильно ли я делаю для l oop:

library(raster)
library(gdalUtils)    
library(rgdal)
library("RStoolbox")

setwd("D:/MODIS/Tesis/Ecuador_2000-2019/HDF-Terra/EVI_terra/New folder/New folder")
files <- list.files(pattern=".tif$",full.names = FALSE)
vector <- c(files[1:4], files[5:8])
for (i in vector)
{
 x <- files
x1 <- (raster(x[1])/10000) # we create a raster for each object in the vector "x" (files) to merge them
x2 <- (raster(x[2])/10000)
x3 <- (raster(x[3])/10000)
x4 <- (raster(x[4])/10000)
enlist <- list(x1,x2,x3,x4)
y <- do.call(merge, enlist)
croped <- crop(y, size) # we crop the new full map (4 tiles) with the object "size" (poligon)
writeRaster(croped, filename = paste0("EVI_crop_", x)) # we extract the new tif

Я должен сказать, что первый растр создан правильно, но для второго появляется ошибка :

Ошибка в .rasterObjectFromFile (x, band = band, objecttype = "RasterLayer",: невозможно создать объект RasterLayer из этого файла. Кроме того: было 35 предупреждений (используйте warnings () для см. их)

warnings () Предупреждающие сообщения: 1: In if (filename == "") {...: условие имеет длину> 1, и будет использоваться только первый элемент 2: In if ( ! file.exists (dirname (filename))) {...: условие имеет

length> 1, и будет использоваться только первый элемент 3: In if (nchar (ext) <3 ) {...: условие имеет длину> 1, и будет использоваться только первый элемент 4: In if (ext == ".tif" | ext == ".tiff") {...: условие имеет длину > 1 и будет использоваться только первый элемент 5: In if (filename == "") {...: условие имеет длину> 1 и только первый элемент будет использовано ent 6: In if (file.exists (filename)) {...: условие имеет длину> 1, и будет использоваться только первый элемент 7: In if (nchar (filename) == 0) stop ( "пустое имя файла"): условие имеет длину> 1, и будет использоваться только первый элемент. 8: In if (x == "" | x == ".") {...:
условие имеет длину> 1, и будет использоваться только первый элемент 9: In if (! start% in% c ("htt", "ftp" )) {...: условие имеет длину> 1, и будет использоваться только первый элемент. 10: In if (fileext% in% c (". GRD", ".GRI")) {...: длина условия> 1, и будет использоваться только первый элемент 11: In if (! file.exists (x)) {...: длина условия> 1, и будет использоваться только первый элемент 12: In if ((fileext% in% c (". HE5", ".N C", ".NCF", ".NC4", ...: условие имеет длину> 1, и только первый элемент будет used 13: In if (fileext == ".GRD") {...: условие имеет длину> 1, и будет использоваться только первый элемент 14: In if (fileext% in% c (". BIN" )) {...: условие имеет длину> 1, и будет использоваться только первый элемент 15: In if (fileext == ".DO C") {...: условие имеет длину> 1 и только будет использоваться первый элемент 16: In if (fileext% in% c (". SGRD", ".SDAT")) {...: условие имеет l ength> 1 и будет использоваться только первый элемент 17: In, если (nchar (filename) == 0) stop («пустое имя файла»): условие имеет длину> 1, и будет использоваться только первый элемент 18: In if (file.exists (file)) {...: условие имеет длину> 1, и будет использоваться только первый элемент 19: в normalizePath (path.expand (path), winsla sh, mustWork):
path [2] = "D: / MODIS / Tesis / Ecuador_2000-2019 / HDF-Terra / EVI_terra / Новая папка / Новая папка / EVI_crop_MOD13Q1.A2000065.h09v09.006.2015136022455.tif": системе не удается найти указанный файл 20: В normalizePath (path.expand (path), winsla sh, mustWork):
path [3] = "D: / MODIS / Tesis / Ecuador_2000-2019 / HDF-Terra / EVI_terra / Новая папка / Новая папка / EVI_crop_MOD13Q1.A2000065.h10v08.006.2015136022544.tif ": системе не удается найти указанный файл 21: в normalizePath (path.expand (path), winsla sh, mustWork):
path [4] =" D: / MODIS / Tesis / Ecuador_2000-2019 / HDF-Terra / EVI_terra / Новая папка / Новая папка / EVI_crop_MOD13Q1.A2000065.h10v09.006.201513602252 6.tif ": система не может найти указанный файл. 22: В normalizePath (path.expand (path), winsla sh, mustWork):
путь [5] = "D: / MODIS / Tesis / Ecuador_2000-2019 / HDF-Terra / EVI_terra / Новая папка / Новая папка / EVI_crop_MOD13Q1.A2000081.h09v08.006.2015136040620.tif": системе не удается найти указанный файл 23: В normalizePath (path.expand (path), winsla sh, mustWork):
path [6] = "D: / MODIS / Tesis / Ecuador_2000-2019 / HDF-Terra / EVI_terra / Новая папка / Новая папка / EVI_crop_MOD13Q1 .A2000081.h09v09.006.2015136040620.tif ": системе не удается найти указанный файл. 24: В normalizePath (path.expand (path), winsla sh, mustWork):
path [7] =" D: / MODIS / Tesis / Ecuador_2000-2019 / HDF-Terra / EVI_terra / Новая папка / Новая папка / EVI_crop_MOD13Q1.A2000081.h10v08.006.2015136040049.tif ": системе не удается найти указанный файл 25: в normalizePath (path.expand (path), winsla sh, mustWork):
path [8] = "D: / MODIS / Tesis / Ecuador_2000-2019 / HDF-Terra / EVI_terra / Новая папка / Новая папка / EVI_crop_MOD13Q1.A2000081.h10v09.006.2015136040705.tif": Системе не удается найти указанный файл. 26: In, если (nchar (filename) == 0) stop ("пустой файл na me "): условие имеет длину> 1, и будет использоваться только первый элемент 27: In if (file.exists (file)) {...: условие имеет длину> 1, и будет использоваться только первый элемент 28 : В normalizePath (path.expand (path), winsla sh, mustWork):
path [2] = "D: / MODIS / Tesis / Ecuador_2000-2019 / HDF-Terra / EVI_terra / Новая папка / Новая папка /EVI_crop_MOD13Q1.A2000065.h09v09.006.2015136022455.tif ": Системе не удается найти указанный файл. 29: В normalizePath (path.expand (path), winsla sh, mustWork):
path [3] =" D: / MODIS / Tesis / Ecuador_2000-2019 / HDF-Terra / EVI_terra / Новая папка / Новая папка / EVI_crop_MOD13Q1.A2000065.h10v08.006.2015136022544.tif ": системе не удается найти указанный файл 30: В normalizePath (path.expand (путь)) , winsla sh, mustWork):
путь [4] = "D: / MODIS / Tesis / Ecuador_2000-2019 / HDF-Terra / EVI_terra / Новая папка / Новая папка / EVI_crop_MOD13Q1.A2000065.h10v09.006.2015136022526.tif ": Система не может найти указанный файл 31: In normalizePath (path.expand (path), winsla sh , mustWork):
path [5] = "D: / MODIS / Tesis / Ecuador_2000-2019 / HDF-Terra / EVI_terra / Новая папка / Новая папка / EVI_crop_MOD13Q1.A2000081.h09v08.006.2015136040620.tif": система не может найдите указанный файл 32: В normalizePath (path.expand (path), winsla sh, mustWork):
path [6] = "D: / MODIS / Tesis / Ecuador_2000-2019 / HDF-Terra / EVI_terra / Новая папка / Новая папка / EVI_crop_MOD13Q1.A2000081.h09v09.006.2015136040620.tif ": системе не удается найти указанный файл 33: В normalizePath (path.expand (path), winsla sh, mustWork):
path [7 ] = "D: / MODIS / Tesis / Ecuador_2000-2019 / HDF-Terra / EVI_terra / Новая папка / Новая папка / EVI_crop_MOD13Q1.A2000081.h10v08.006.2015136040049.tif": системе не удается найти указанный файл 34: In normalizePath (путь .expand (путь), winsla sh, mustWork):
путь [8] = "D: / MODIS / Tesis / Ecuador_2000-2019 / HDF-Terra / EVI_terra / Новая папка / Новая папка / EVI_crop_MOD13Q1.A2000081. h10v09.006.2015136040705.tif ": Системе не удается найти указанный файл. 35: In if (! file.exists (x)) {.. .: условие имеет длину> 1, и будет использоваться только первый элемент

Я новичок в R, но понять циклы было для меня самым трудным. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...