簡體   English   中英

使用 R 的 netcdf 光柵堆棧或光柵磚的時間和地理子集

[英]time and geographical subset of netcdf raster stack or raster brick using R

對於以下具有 2016 年每日全球海面溫度的 netcdf 文件,我嘗試 (i) 時間上的子集,(ii) 地理上的子集,(iii) 然后對每個像素采取長期手段並創建一個基本圖。

文件鏈接: 這里

library(raster)
library(ncdf4)

設置我的工作目錄后打開 netcdf

nc_data <- nc_open('sst.day.mean.2016.v2.nc')

更改時間變量以便於解釋

time <- ncdf4::ncvar_get(nc_data, varid="time")
head(time)

更改為我可以解釋的日期

time_d <- as.Date(time, format="%j", origin=as.Date("1800-01-01"))

現在我只想從 9 月 1 日到 10 月 15 日進行子集化,但無法弄清楚......

在時間子集之后,創建柵格磚(或堆棧)和地理子集

b <- brick('sst.day.mean.2016.v2.nc') # I would change this name to my file with time subest

地理子集

b <- crop(b, extent(144, 146, 14, 16))

最后,我想對我所有數據天的每個像素取平均值,將其分配給單個柵格,然后繪制一個簡單的圖...

感謝您的任何幫助和指導。

b <- brick('sst.day.mean.2016.v2.nc') ,我們可以輸入b來查看光柵磚的信息。

b
# class       : RasterBrick 
# dimensions  : 720, 1440, 1036800, 366  (nrow, ncol, ncell, nlayers)
# resolution  : 0.25, 0.25  (x, y)
# extent      : 0, 360, -90, 90  (xmin, xmax, ymin, ymax)
# coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
# data source : C:\Users\basaw\Downloads\sst.day.mean.2016.v2.nc 
# names       : X2016.01.01, X2016.01.02, X2016.01.03, X2016.01.04, X2016.01.05, X2016.01.06, X2016.01.07, X2016.01.08, X2016.01.09, X2016.01.10, X2016.01.11, X2016.01.12, X2016.01.13, X2016.01.14, X2016.01.15, ... 
# Date        : 2016-01-01, 2016-12-31 (min, max)
# varname     : sst 

請注意, Date槽具有從2016-01-012016-12-31 ,這意味着 Z 值已經具有日期信息,我們可以使用它來對柵格磚進行子集化。

我們可以使用getZ函數來訪問存儲在 Z 值中的值。 鍵入getZ(b)我們可以看到一系列日期。

head(getZ(b))
# [1] "2016-01-01" "2016-01-02" "2016-01-03" "2016-01-04" "2016-01-05" "2016-01-06"

class(getZ(b))
# [1] "Date"

因此,我們可以使用以下代碼對光柵磚進行子集化。

b2 <- b[[which(getZ(b) >= as.Date("2016-09-01") & getZ(b) <= as.Date("2016-10-15"))]]

然后我們可以根據您提供的代碼裁剪圖像。

b3 <- crop(b2, extent(144, 146, 14, 16))

要計算平均值,只需使用mean函數。

b4 <- mean(b3, na.rm = TRUE)

最后,我們可以繪制平均值。

plot(b4)

在此處輸入圖片說明

不是在 R 中,而是要指出子集和平均任務很容易在 CDO 中從命令行完成:

cdo timmean -sellonlatbox,lon1,lon2,lat1,lat2 -seldate,date1,date2 in.nc out.nc

其中 lon1,lon2 等定義要切出的 lon-lat 區域,而 date1,date2 是日期范圍。

然后,您可以將生成的文件讀入 R 進行繪圖,或使用 ncview 快速查看。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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