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

问题描述

我使用以下MOdis DSR 1km产品做一些分析:MCD18A1.A2001001.h15v05.061.2020097222704.hdf

但是,我无法从 SpatialGridDataFrame 转换为 Raster,因为像素大小发生了变化...

这是我的脚本:

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,: discarded datum Proj4 定义中未指定(基于 Clarke 1866 球体):+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +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)