terra R coord.ref 未命名

Posted

技术标签:

【中文标题】terra R coord.ref 未命名【英文标题】:terra R coord.ref unnamed 【发布时间】:2021-11-26 22:05:15 【问题描述】:

我正在使用带有统一 HLS 数据 (https://hls.gsfc.nasa.gov/) 的 terra 库。这些是 HDF4_EOS 文件(您可以在此处下载图像:https://hls.gsfc.nasa.gov/data/v1.4/S30/2020/11/T/M/M/)。

一旦下载场景并尝试使用 sds 函数(即datat=sds(ImageIn))加载到 R 中,它可以工作,但 coord.ref 未命名,如下所示:

    datat 
    class       : SpatRasterDataset 
    subdatasets : 14 
    dimensions  : 3660, 3660 (nrow, ncol)
    nlyr        : 1, 1, 1, 1, 1, 1, 1, 1, 1 
    resolution  : 30, 30  (x, y)
    extent      : 399960, 509760, 5090220, 5200020  (xmin, xmax, ymin, 
                  ymax)
    coord. ref. : unnamed 
    source(s)   : HLS.S30.T11TMM.2019310.v1.4.hdf 
    names       : B01, B02, B03, B04, B05, B06, B07, B08, B8A, B09, B10, 
                  B11, B12, QA

当我使用terra::crs(ImageIn) 时,我收到以下错误消息:

(函数(类,fdef,mtable)中的错误: 无法找到用于签名的函数“crs”的继承方法 ‘“字符”’

如果我使用来自gdalUtils 库的函数get_subdatasets() 和来自raster 库的函数raster()(即raster(imageIn[2])),则会找到crs(即+proj=utm +zone=11 +datum=WGS84 +units=m +no_defs)。

     class      : RasterLayer 
     dimensions : 3660, 3660, 13395600  (nrow, ncol, ncell)
     resolution : 30, 30  (x, y)
     extent     : 399960, 509760, 5090220, 5200020  (xmin, xmax, ymin, 
                  ymax)
      crs        : +proj=utm +zone=11 +datum=WGS84 +units=m +no_defs 
      source     : HLS.S30.T11TMM.2019310.v1.4.hdf:Grid:B02 
      names      : HLS.S30.T11TMM.2019310.v1.4.hdf.Grid.B02 
      values     : -32768, 32767  (min, max)

有没有办法让terra库找到栅格的投影?

谢谢!!

【问题讨论】:

你试过terra::crs(imageIn[2]) 吗? 您能否提供一个示例文件,您能否编辑您的问题并show 使用 terra 和 raster 获得的结果? 感谢两位的建议。我已按上述问题进行了编辑。 【参考方案1】:

这不是故意的,此问题已修复。

library(terra)
r <- rast("HLS.S30.T11TMM.2020002.v1.4.hdf")
r
#class       : SpatRaster 
#dimensions  : 3660, 3660, 14  (nrow, ncol, nlyr)
#resolution  : 30, 30  (x, y)
#extent      : 399960, 509760, 5090220, 5200020  (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=utm +zone=11 +ellps=WGS84 +units=m +no_defs 
#sources     : HLS.S30.T11TMM.2020002.v1.4.hdf:Grid:B01  
#              HLS.S30.T11TMM.2020002.v1.4.hdf:Grid:B02  
#              HLS.S30.T11TMM.2020002.v1.4.hdf:Grid:B03  
#              ... and 11 more source(s)
#names       : Grid:B01, Grid:B02, Grid:B03, Grid:B04, Grid:B05, Grid:B06, ... 

您也可以使用crs 方法,如下所示

crs(r, proj=TRUE)
#[1] "+proj=utm +zone=11 +ellps=WGS84 +units=m +no_defs"

SpatRasterDataset 还没有 crs 方法,但你可以这样做

s <- sds("HLS.S30.T11TMM.2020002.v1.4.hdf")
crs(s[[1]], proj=TRUE)
#[1] "+proj=utm +zone=11 +ellps=WGS84 +units=m +no_defs"

【讨论】:

感谢您的帮助。它有效。

以上是关于terra R coord.ref 未命名的主要内容,如果未能解决你的问题,请参考以下文章

混合命名和未命名函数参数

设计揭秘:Nike ACG React Terra Gobe

使用 R 重命名文件

2018-8-27未命名文件

Javascript前缀命名规范

为啥要将类型放在未命名的命名空间中?