首页 > 解决方案 > 如何从多个每日 TRMM netcdf 文件中排序和创建栅格堆栈

问题描述

我试着从trmm每日 nc4 文件中提取数据。

path<-"F:/TRMM/test"
setwd(path)
## open all `trmm` rainfall data files from folder
trmm_files = list.files(path,pattern = '*.nc', full.names = TRUE)
#I want only HQprecipitation variable from nc4 file.
trmm_stack <- stack(trmm_files, varname = "HQprecipitation")

但是trmm_stack堆叠时失去了坐标系。因此,我不得不分配它。此外,如何验证栅格堆栈是否根据日期和顺序排序?我需要一个时间序列数据。

crs(trmm_stack) <- CRS('+init=EPSG:4326')             # also it was rotated
trmm_stack_flip <- t(flip(trmm_stack, direction='y'))

然后我为位置创建一个经纬度坐标矩阵

lat<- c(26.0166666, 25.674444, 25.5666666, 25.6666666, 26.18, 25.57)
lon <- c(91.85, 91.9025, 91.8666666, 91.8833333, 91.75, 91.9)
xym <- cbind(lat, lon)

trmm_stack并从使用中提取单元格值

data2 <- extract(trmm_stack, xym, method='simple', buffer = NULL, small = FALSE, cellnumbers = FALSE,
        fun=NULL, na.rm=TRUE, df = FALSE, factors = FALSE)

看图片

然后我得到一个列名以层号结尾的输出表。但我不知道提取是否按照我想要的时间序列在确切的位置和日期顺序进行。如何验证这一点?任何帮助,将不胜感激。

标签: rr-raster

解决方案


RasterStack 的顺序与文件名的顺序相同。您可以检查您的文件名(并在需要时对其进行排序,但请注意对表示为字符的数字进行排序(10 在 2 之前)。

请注意,您在这里犯了一个错误:

xym <- cbind(lat, lon)

它应该是

xym <- cbind(lon, lat)

推荐阅读