[英]Write raster using nc data in r
我正在使用https://ldas.gsfc.nasa.gov/gldas GLDAS_NOAH10_M:GLDAS 諾亞陸地表面模型(netcdf4 格式)來提取雪水當量和土壤水分。
雪水當量顯示 3 個維度(緯度、經度和時間),我可以輕松地編寫其柵格(tiff 格式),如照片和代碼所示。
土壤水分包含 4 個維度(緯度、經度、深度、時間),這些維度很難導出。 任何人都可以知道在這種情況下如何以 tiff 格式編寫光柵嗎? 謝謝。
圖書館:
library(raster)
library(sp)
library(rgdal)
library(ncdf4)
library(tiff)
小路 :
ncpath <- "D:\\GLDAS Data\\2002_GLDAS\\"
ncname <- "GLDAS_NOAH10_M.A200201.001.grb.SUB"
情況1
ncfname <- paste(ncpath, ncname, ".nc4", sep="")
ncin <- nc_open(ncfname)
檢查:打印(ncin)
變量:
lon <- ncvar_get(ncin, "lon")
lat <- ncvar_get(ncin, "lat")
b_unit <- ncatt_get(ncin,"SWE","units")
swe.array <- ncvar_get(ncin, "SWE")
dim(swe.array)
fillvalue <- ncatt_get(ncin, "SWE", "_FillValue")
nc_close(ncin)
出口 :
b <- raster(swe.array, xmn=min(lon), xmx=max(lon), ymn=min(lat), ymx=max(lat), crs=CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs+ towgs84=0,0,0"))
b <- flip (b, direction = 'y')
writeRaster(b, file = paste0("D:\\GLDAS Data\\2002_GLDAS\\SWE_mm_month_200201",".tif"), overwrite = TRUE)
案例二
ncfname <- paste(ncpath, ncname, ".nc4", sep="")
ncin <- nc_open(ncfname)
print(ncin)
lon <- ncvar_get(ncin, "lon")
lat <- ncvar_get(ncin, "lat")
c_unit <- ncatt_get(ncin,"SoilMoist","units")
sm.array <- ncvar_get(ncin, "SoilMoist")
dim(sm.array)
fillvalue <- ncatt_get(ncin, "SoilMoist", "_FillValue")
nc_close(ncin)
出口 :
c <- raster(sm.array, xmn=min(lon), xmx=max(lon), ymn=min(lat), ymx=max(lat),
crs=CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs+ towgs84=0,0,0"))
c <- flip (c, direction = 'y')
writeRaster(c, file = paste0("D:\\GLDAS Data\\2002_GLDAS\\SM_mm_month_200201",".tif"),overwrite = TRUE)
您可以使用 raster() 直接將 nc 文件作為光柵對象讀取。 要提取土壤濕度 4D 數據中某個級別的數據,您可以通過使用 level 參數指定它們來提取單個級別。
c <- raster(ncfname, level = 1)
writeRaster(c, file = paste0("D:\\GLDAS Data\\2002_GLDAS\\SM_mm_month_200201",".tif"),overwrite = TRUE)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.