在 R 中使用 fasterize 写入光栅

Using fasterize in R to write a raster

我最近一直在使用 fasterize 包将 sf 多边形转换为栅格:

https://cran.rstudio.com/web/packages/fasterize/fasterize.pdf

当我处理大文件时,直接写入磁盘而不是内存会更好。因此,例如而不是这样做:

加速(polygon_file, raster_template, 字段= 'value')

我会这样做:

fasterize(polygon_file, raster_template, field = 'value', file = 'output.tif')

这似乎不可能。有人对如何执行此操作有建议吗?

谢谢。

您是否考虑过 R "gdalUtils" 库?

gdal_rasterize() 函数执行与 fasterize 相同的操作,但将栅格对象输出到文件。根据我的经验,gdalUtils 实际上比 raster 更快,即使在使用 fasterize 时也是如此。

这是他们文档中的示例

gdal_setInstallation()
valid_install <- !is.null(getOption("gdalUtils_gdalPath"))
if(require(raster) && require(rgdal) && valid_install)
{

# Example from the original gdal_rasterize documentation:
# gdal_rasterize -b 1 -b 2 -b 3 -burn 255 -burn 0 
#   -burn 0 -l tahoe_highrez_training tahoe_highrez_training.shp tempfile.tif
dst_filename_original  <- system.file("external/tahoe_highrez.tif", package="gdalUtils")

# Back up the file, since we are going to burn stuff into it.
dst_filename <- paste(tempfile(),".tif",sep="")

file.copy(dst_filename_original,dst_filename,overwrite=TRUE)

#Before plot:
plotRGB(brick(dst_filename))

src_dataset <- system.file("external/tahoe_highrez_training.shp", package="gdalUtils")

tahoe_burned <- gdal_rasterize(src_dataset,dst_filename,
                               b=c(1,2,3),
                               burn=c(0,255,0),
                               l="tahoe_highrez_training",
                               verbose=TRUE,
                               output_Raster=TRUE)
#After plot:
plotRGB(brick(dst_filename))
}

如果删除数据框 "tahoe_burned",您甚至不必将栅格加载到内存中;

gdal_rasterize(src_dataset,dst_filename,
               b=c(1,2,3),
               burn=c(0,255,0),
               l="tahoe_highrez_training",
               verbose=TRUE,
               output_Raster=TRUE)

关键是要指定output_Raster=TRUE

我希望这能回答你的问题。