簡體   English   中英

在r中使用nc數據寫入光柵

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM