【问题标题】:rast function error with MOD09GA hdf images in RR中MOD09GA hdf图像的rast函数错误
【发布时间】:2021-02-04 14:32:33
【问题描述】:

我下载了一些 MODIS 图像。当我尝试使用 terra rast 函数从 hdf 文件创建 SpatRaster 时,它非常适用于“MOD09A1”,但不适用于“MOD09GA”。

terra::rast("C:/Users/User/AppData/Local/Temp/_modis/MOD09GA.A2011025.h08v06.006.2015216102410.hdf")

Error: [rast] number of rows and/or columns do not match

有什么问题?还有其他我可以使用的功能吗?谢谢!

【问题讨论】:

    标签: r raster satellite-image


    【解决方案1】:

    问题是文件有不同分辨率的子数据集。

    获取您正在使用的文件

    # remotes::install_github("rspatial/luna")
    aoi <- c(-106, -105, 26, 27)
    f <- luna::getModis("MOD09GA", "2011-01-25", "2011-01-26", aoi, download=TRUE, path=".", user="*", password="*")
    f 
    [1] "./MOD09GA.A2011025.h08v06.006.2015216102410.hdf"
    

    查看子数据集:

    library(terra)
    describe_sds(f)
    id   name                                                          desc                                                               nrow ncol nlyr
     1   HDF4_EOS:EOS_GRID:...MODIS_Grid_1km_2D:num_observations_1km   [1200x1200] num_observations_1km MODIS_Grid_1km_2D (8-bit integer) 1200 1200    1
    (...)
    12        HDF4_EOS:EOS_GRID:...MODIS_Grid_500m_2D:sur_refl_b01_1   [2400x2400] sur_refl_b01_1 MODIS_Grid_500m_2D (16-bit integer) 2400 2400    1
    (...)
    

    所以你需要分别访问不同的子数据集,像这样

    b1 <- rast(f, 12)
    b2 <- rast(f, 13)
    b1
    # class       : SpatRaster 
    # dimensions  : 2400, 2400, 1  (nrow, ncol, nlyr)
    # resolution  : 463.3127, 463.3127  (x, y)
    # extent      : -11119505, -10007555, 2223901, 3335852  (xmin, xmax, ymin, ymax)
    # coord. ref. : +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +R=6371007.181 +units=m +no_defs 
    # data source : MOD09GA.A2011025.h08v06.006.2015216102410.hdf:MODIS_Grid_500m_2D:sur_refl_b01_1 
    # names       : sur_refl_b01_1 
    

    也许紧随其后

    bb <-c(b1, b2)
    

    或者像这样创建一个 SpatDataSet

    x <- sds(f, 12:22)
    

    terra的开发版本中,你可以继续做

    y <- collapse(x)
    

    或类似下面的东西来获得一组特定的子数据集(具有相同的空间分辨率)

    r  <- rast(f, 12:18)
    r
    #class       : SpatRaster 
    #dimensions  : 2400, 2400, 7  (nrow, ncol, nlyr)
    #resolution  : 463.3127, 463.3127  (x, y)
    #extent      : -11119505, -10007555, 2223901, 3335852  (xmin, xmax, ymin, ymax)
    #coord. ref. : +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +R=6371007.181 +units=m +no_defs 
    #source(s)   : MOD09GA.A2011025.h08v06.006.2015216102410.hdf:MODIS_Grid_500m_2D:sur_refl_b01_1  
              MOD09GA.A2011025.h08v06.006.2015216102410.hdf:MODIS_Grid_500m_2D:sur_refl_b02_1  
              MOD09GA.A2011025.h08v06.006.2015216102410.hdf:MODIS_Grid_500m_2D:sur_refl_b03_1  
              ... and 4 more source(s)
    #names       : sur_refl_b01_1, sur_refl_b02_1, sur_refl_b03_1, sur_refl_b04_1, sur_refl_b05_1, sur_refl_b06_1, ... 
    

    【讨论】:

    • 非常感谢!!
    猜你喜欢
    • 2021-03-16
    • 2021-08-25
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多