在 terra 中保存和重新打开栅格时丢失的单位

Units lost when saving and reopening raster in terra

当我在 terra 中保存并重新打开栅格时,我丢失了分配的单位。也许有一些文件类型可以保存它们,而另一些则不能,但我还没有找到相关文档。

library(terra)

A <- rast( nrows=10, ncols=10, xmin=0, xmax=10 )
values(A) <- 1:100
units(A) <- "Percent"
writeRaster( x=A, filename="test.tif" )

B <- rast( "test.tif" )
B
units(B)  # empty

据我所知,只有 netCDF 标准支持将单位写入文件(在光栅文件格式中)。 GeoTIFF标准和读写栅格数据的GDAL库的数据模型据我所知没有单位的概念

我在 terra 版本 1.5.0 中添加了解决此问题的方法(目前开发版本可从 github 获得)

单位和时间戳现在都保存到文件中,并且根据您的示例我得到:

library(terra)
#terra version 1.5.0

A <- rast( nrows=10, ncols=10, xmin=0, xmax=10 )
values(A) <- 1:100
units(A) <- "%"
writeRaster(A, "test.tif", overwrite=TRUE)

B <- rast( "test.tif" )
B
#class       : SpatRaster 
#dimensions  : 10, 10, 1  (nrow, ncol, nlyr)
#resolution  : 1, 18  (x, y)
#extent      : 0, 10, -90, 90  (xmin, xmax, ymin, ymax)
#coord. ref. : lon/lat WGS 84 (EPSG:4326) 
#source      : test.tif 
#name        : lyr.1 
#min value   :     1 
#max value   :   100 
#unit        :     % 

units(B) 
#[1] "%"