gpt4 book ai didi

R- 栅格数学,同时保留整数格式

转载 作者:行者123 更新时间:2023-12-04 03:10:18 26 4
gpt4 key购买 nike

我有一些大型栅格(每个大约 110 MB),我想对其执行一些栅格计算。出于本示例的目的,我想对文件 SNDPPT_M_sl1_1km_ll.tifSNDPPT_M_sl2_1km_ll.tif 进行平均,可在 this website 获得。 .实际上,数学有点复杂(一些栅格的乘法和除法)。

两个输入栅格都是整数 (INT1U) 数据,我希望输出也为 INT1U。但是,每当我尝试进行光栅计算时,它都会创建浮点格式的中间临时文件,这些文件的大小非常大。我在一台有大约 7 GB 可用硬盘空间的笔记本电脑上工作,在计算完成之前它就被填满了。

# load packages
require(raster)

## script control
# which property?
prop <- "SNDPPT"

# load layers
r.1 <- raster(paste0("1raw/", prop, "_M_sl1_1km_ll.tif"))
r.2 <- raster(paste0("1raw/", prop, "_M_sl2_1km_ll.tif"))

# allocate space for output raster - this is about 100 MB (same size as input files)
r.out <- writeRaster(r.1,
filename=paste0("2derived/", prop, "_M_meanTop200cm_1km_ll.tif"),
datatype="INT1U")

# perform raster math calculation
r.out <- integer(round((r.out+r.2)/2))

# at this point, my hard drive fills due to temporary files > 7 GB in size

有没有人知道在 R 中使用整数输入和输出文件执行光栅数学同时最小化或避免非常大的中间文件的解决方法?

最佳答案

这里的技巧可能是使用 raster::overlay 进行计算,同时将结果保存为压缩的 tiff。这样的事情应该有效:

library(raster)
#> Loading required package: sp
# load layers
r.1 <- raster("C:/Users/LB_laptop/Downloads/SNDPPT_M_sl1_1km_ll.tif")
r.2 <- raster("C:/Users/LB_laptop/Downloads/SNDPPT_M_sl1_1km_ll.tif")

out <- raster::overlay(r.1, r.2,
fun = function(x, y) (round((x + y) / 2)),
filename = "C:/Users/LB_laptop/Downloads/SNDPPT_out.tif",
datatype = "INT1U",
options = "COMPRESS=DEFLATE")
> out
class : RasterLayer
dimensions : 16800, 43200, 725760000 (nrow, ncol, ncell)
resolution : 0.008333333, 0.008333333 (x, y)
extent : -180, 180, -56.00083, 83.99917 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
data source : C:\Users\LB_laptop\Downloads\SNDPPT_out.tif
names : SNDPPT_out
values : 0, 242 (min, max)

HTH。

关于R- 栅格数学,同时保留整数格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45890359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com