【问题标题】:Units lost when saving and reopening raster in terra在 terra 中保存和重新打开栅格时单位丢失
【发布时间】:2022-01-03 00:46:17
【问题描述】:

当我保存并重新打开 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

【问题讨论】:

    标签: r terra


    【解决方案1】:

    据我所知,只有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] "%"
    

    【讨论】:

    • 谢谢,很高兴知道这一点。顺便说一句,我注意到,只要给一个单元格赋值,单位也会消失:
    • [来自上一条评论] A[5,5]
    • 谢谢,分配已修复。更改名称的目的是因为您可以拥有多个属性,这清楚地表明了哪个是“活动的”。随时在github.com/rspatial/terra/issues 提交更多“问题”
    猜你喜欢
    • 2012-01-14
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 2022-07-13
    • 1970-01-01
    • 2013-08-07
    相关资源
    最近更新 更多