0

当我在 中保存并重新打开栅格时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
4

1 回答 1

2

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

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

单位和时间戳现在都保存到文件中,通过您的示例,我得到:

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] "%"
于 2021-11-24T18:55:09.933 回答