R:从 SpatialGridDF 转换时 raster() 更改像素大小

R: raster() changes pixel size when converting from SpatialGridDF

我正在使用以下 MODIS DSR 1km 产品进行一些分析:MCD18A1.A2001001.h15v05.061.2020097222704.hdf

但是,我在从 SpatialGridDataFrame 转换为栅格时遇到了问题,因为像素大小发生了变化...

这是我的脚本:

Filename <- "ModisProductsOriginal/MCD18A1.A2001001.h15v05.061.2020097222704.hdf"
SDSs <- getSds(Filename)
GMT_1200_DSR_sgdf <- readGDAL(SDSs$SDS4gdal[8], as.is = TRUE)
GMT_1200_DSR_rast <- raster(GMT_1200_DSR_sgdf)

警告如下:

1: 在 getProjectionRef(x, OVERRIDE_PROJ_DATUM_WITH_TOWGS84 = OVERRIDE_PROJ_DATUM_WITH_TOWGS84, : Proj4 定义中未指定(基于 Clarke 1866 球体)的废弃数据:+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=clrk66 +units=米+no_defs

2: 在 showSRID(uprojargs, format = "PROJ", multiline = "NO", prefer_proj = prefer_proj) 中: 基于 Proj4 定义中的 Clarke 1866 椭球的丢弃数据未知

结果如下:

GMT_1200_DSR_sgdf

GMT_1200_DSR_rast

我找不到这个问题的解决方案,我想知道这是否应该发生,如果不是,我该如何解决?指定 CRS?使用正弦投影时("+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6371007.181 +b=6371007.181 +units=m +no_defs") 只出现警告,可能我没有正确使用 CRS。

你说像素大小发生变化的原因是什么?我只看到有关 CRS 的警告。该警告是因为较新版本的 PROJ 库不喜欢具有非 WGS84 数据的 PROJ 字符串。

具有子数据集的 HDF 使用 terra 更容易处理。

library(terra)
f <- "ModisProductsOriginal/MCD18A1.A2001001.h15v05.061.2020097222704.hdf"
s <- sds(f)
s8 <- s[8] 

# or
r <- rast(f)