我在同一文件夹中有50个geotiff文件。
所有这些都代表了世界一部分地区的高程数据。
我想合并某些geotiff文件,我发现R中的镶嵌可以帮助我们。
我已经将那些geotiff移到了相同的文件夹中,并在下面编写了一个R脚本:

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

但是,此脚本返回错误:
as.data.frame(y)中的错误

请问如何改善我的剧本?

最佳答案

您可以使用强大的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,因为栅格文件的原点可能不同。

关于r - 在R中使用Mosaic合并多个Geotiff,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50234139/

10-09 17:21