【发布时间】:2017-08-15 16:10:42
【问题描述】:
我正在处理一个非常大的三个维度(纬度/经度/时间)的 netCDF 文件。分辨率为 300 米,时间变量为 25 步,即 64800x129600x25 个单元。
文件中包含的一个变量是一个整数(范围从 -36 到 120),但代表了一个潜在因素,这就是问题所在。 它是一个土地覆盖数据集,例如:-20 表示该单元格属于土地类型 Forest 或 10 表示该单元格被 水。
我想重塑 netCDF 文件,以便有一个额外的维度来表示原始变量的每个因子水平。然后变量将只是每个单元格的 1 或 0,表示在某个纬度/经度/时间存在每个因子水平。 然后维度将是纬度/经度/时间/土地类型。
Here 是一个示例数据集,它与土地类型无关,但足够小,可以用于测试。这里有一些代码可以阅读:
library(ncdf4)
# Download the data
download.file("http://schubert.atmos.colostate.edu/~cslocum/code/air.sig995.2012.nc",
mode="wb", destfile = "test.nc")
test.ncdf <- nc_open("test.nc", write=TRUE)
# See the lon,lat,time dimensions
print(test.ncdf)
tmp.array <- ncvar_get(test.ncdf, varid="air")
我不确定raster 包是否更适合这项任务。对于非常小的 netCDF 文件,我通过提取数据然后将其堆叠为 data.frame,在某种程度上管理了预期的结果。
任何帮助或指出正确的方向将不胜感激。 提前致谢。
【问题讨论】: