как эффективно импортировать несколько растровых (.tif) файлов в R - PullRequest
0 голосов
/ 10 октября 2018

Я новичок, особенно когда речь идет о пространственных данных.Я пытаюсь найти способ эффективного импорта нескольких (~ 600) одноканальных растровых (.tif) файлов в R, все они хранятся в одной папке.Не уверен, что это имеет значение, но учтите, что при просмотре в папке на моем Mac и параллельной виртуальной машине Windows есть следующие пять (5) форматов файлов для каждого .tif = .TIF;.tfw;.TIF.aux.xml;.TIF.ovr;.TIF.xml.В любом случае, следующий код (и другие подобные варианты, которые я пробовал), похоже, не работает:

library(sp)
library(rgdal)
library(raster)

#path to where all .tif files are located
setwd("/path/to/workingdirectory")

#my attempt to create a list of my .tif files for lapply
temp = list.files(pattern="*.tif")
temp #returns 'character(0)'

#trying to use the raster function to read all .tif files
myfiles = lapply(temp, raster)
myfiles #returns 'list()'

Есть ли способ использовать некоторую форму цикла для эффективного импорта всех растровых файлов?

Ответы [ 3 ]

0 голосов
/ 12 октября 2018

Я нашел ответ и опубликую полный код, чтобы помочь другим начинающим R-пользователям, у которых есть эта проблема.Чтобы вызвать элемент списка, используйте двойные квадратные скобки [[]], например:

#first import all files in a single folder as a list 
rastlist <- list.files(path = "/path/to/wd", pattern='.TIF$', 
all.files=TRUE, full.names=FALSE)

#import all raster files in folder using lapply
allrasters <- lapply(rastlist, raster)

#to check the index numbers of all imported raster list elements
allrasters

#call single raster element
allrasters[[1]]

#to run a function on an individual raster e.g., plot 
plot(allrasters[[1]])

Booyah.Спасибо Парфе за помощь.

0 голосов
/ 16 октября 2018

если растры имеют одинаковый экстент, вы можете просто загрузить их в стек

#first import all files in a single folder as a list 
rastlist <- list.files(path = "/path/to/wd", pattern='.TIF$', all.files=TRUE, full.names=FALSE)

library(raster)
allrasters <- stack(rastlist)
0 голосов
/ 10 октября 2018

Хорошо, хорошо. Я думаю, что следующий код работал:

rastlist <- list.files(path = "/path/to/wd", pattern='.TIF$', all.files=TRUE, 
full.names=FALSE)
lapply(rastlist, raster)

Но как теперь получить доступ к отдельному растровому файлу для дальнейшего анализа?

...