在r中使用mosaic合并多个geotiff
Using mosaic in r to merge multiple geotiff
我在同一文件夹中有 50 个 geotiff 文件。
它们都代表了世界不同地区的高程数据。
我想合并某些 geotiff 文件,我发现 mosaic
in R 可能对我们有帮助。
我已将这些 geotiff 移动到同一个文件夹中,并在下面编写了一个 R 脚本:
setwd()
a<-list.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
,因为光栅文件的来源可能不同。
我在同一文件夹中有 50 个 geotiff 文件。
它们都代表了世界不同地区的高程数据。
我想合并某些 geotiff 文件,我发现 mosaic
in R 可能对我们有帮助。
我已将这些 geotiff 移动到同一个文件夹中,并在下面编写了一个 R 脚本:
setwd()
a<-list.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
,因为光栅文件的来源可能不同。