Использование мозаики в r для объединения нескольких геотифов - PullRequest
0 голосов
/ 08 мая 2018

У меня 50 файлов геотифов в одной папке. Все они представляли данные высоты в части мира. Я хотел бы объединить некоторые файлы геотифов, и я обнаружил, что мозаика в R может помочь нам. Я переместил этих геотифов в ту же папку и написал сценарий R, показанный ниже:

setwd()
a<-lista.files(pattern="*.tiff",file.name=TRUE)
combind<-merge(a,fun=mean)

Однако этот скрипт вернул ошибку: ошибка в as.data.frame (y)

Могу ли я спросить, как я могу улучшить свой сценарий?

1 Ответ

0 голосов
/ 08 мая 2018

Вы можете использовать мощные функции GDAL. По моему опыту это намного быстрее, чем чистый код R.

Мой подход был бы с library(gdalUtils):

Сначала создайте виртуальный растровый файл ( vrt ):

library(gdalUtils)
setwd(...)
gdalbuildvrt(gdalfile = "*.tif", # uses all tiffs in the current folder
             output.vrt = "dem.vrt")

Затем скопируйте виртуальный растр в фактический физический файл:

gdal_translate(src_dataset = "dem.vrt", 
               dst_dataset = "dem.tif", 
               output_Raster = TRUE # returns the raster as Raster*Object
                                    # if TRUE, you should consider to assign 
                                    # the whole function to an object like dem <- gddal_tr..
               options = c("BIGTIFF=YES", "COMPRESSION=LZW"))

Другое чистое (и, вероятно, медленнее ) raster пакетное решение будет:

f <- list.files(path = "your/path", pattern = ".tif$", full.names = TRUE)
rl <- lapply(f, raster)

do.call(merge, c(rl, tolerance = 1))

Вы должны настроить tolerance, поскольку растровые файлы, вероятно, не будут иметь одинакового происхождения.

...