|
第一步:使用anaconda安装carray库: - : X; ]7 f) K0 X# u
6 t' e6 p: w% o; N
conda install xarray
8 t% N- u. h; }
: M8 z* l, c/ R! L& Q4 \第二步:使用Spyder(Python3.8)读取数据NetCDF文件(***.nc) 以一套CMIP6的全球气候模式BCC-CSM2-MR(中国北京气候中心研发,分辨率为160*320)输出的tas(表面气温)变量1850-2014年的历史格点资料为例: (数据下载地址:www.52ocean.cn)
读取数据的代码如下: - * v0 w- U) c$ p
- + f0 H8 M# z9 w1 |6 K& a6 f
- 4 f) H! ^9 f3 U2 R' C, h, w5 P
- n) c C1 m! p% R, Q* G& l) i- 0 D( X& |8 z6 c" s8 i2 f
0 o {% a5 i; C8 p; K9 z A
import xarray as xr#step1 read dataf_tas = xr.open_dataset('tas_Amon_BCC-CSM2-MR_historical_r1i1p1f1_gn_185001-201412.nc', decode_times=False)#step2 look at data's informationprint(f_tas)
, [# p# l9 t8 R' ]1 D
: G6 g% b6 b) w5 s文件信息查看如下:
可以看到,文件的坐标有时间time, 经度lon,纬度lat,高度height,变量有表面气温tas。
X5 D, t. l! d9 M第三步代码如下: 4 O; x4 l" i: Z5 J0 ~7 I5 |
5 {1 K1 H" E% |& e* h4 G+ r( l- % O: ^" U4 x: \7 ]
- 2 M! X' }# W! p' M& p( F
3 ^( e' B' J# B- 1 j. d2 a. s7 t
- # ~2 f/ G3 O0 V! n; P! x
- : H+ \7 N' M! ?& n* ?$ E7 V! X
$ p5 Q- I. h" z. L1 x" l
4 i: ], m8 S# I9 ?) R) U$ J6 A5 P! s& u3 w' w1 D/ u* N+ G- `
#step3tas = f_tas['tas']print(tas)#step4a = tas.loc[15.5:74.5]print(a)#tep5b = tas.loc[15.5:74.5, 40:55, 115:135]print(b)# ?- E, Q& k, C, Q. ?
- T# ~. ^4 J. F* T9 ~
第三步:气温数据取出 Xarray在读取坐标信息时,自动将时间坐标读取为了float64 格式,这对我们挑选目的时间十分方便。Xarray通常与pandas配合使用。
% }0 u7 G' A; j# w5 h% ?
第四步:选取某时间段内数据 比如我们想选取15.5-74.5(根据数据信息中time格式的规定输入相应格式)时期数据。
0 m8 K1 X6 ^* ~4 p$ |# U- C
第五步:选取特定经纬度范围(高度)的数据 当我们想选取特定经纬度范围(高度)的数据时,.loc[]函数同样可以解决。
% k: c E, k" N% B% H3 f在这里,我选取了40°N-55°N,115°E-135°E范围的数据
0 h. e5 f7 [7 [$ u: ^
完整代码
- r. Y! L* d1 i9 q8 T- " m/ |3 n( _5 k5 W) L
- # R) z; a8 _ k% \' |+ ~7 _# f
# x9 N3 n# p* t |5 ?' Z- ' m L/ s8 V+ T' S) }
- 3 }1 U1 P8 C( N+ v" S$ `5 ]
- T( J5 `8 f- P6 Z
- ' p3 m5 Y: G5 X. a& \
- . ]+ u. C$ w1 t' `7 L, }+ r* }
a" ]* l2 o- ^$ V- @+ p2 t
, ?- }5 t, ~: Z, N2 T6 k- ^- : t+ K, q* P9 k! p5 b6 a
" O4 y7 X2 x7 x7 a. G5 O1 \$ Y2 h
! n0 {6 a9 R+ C# Y" b0 C- ) V7 R6 M8 z; V' F
- 6 N1 X; `+ `- O7 z: }" O G+ s1 J( D+ x
) u r4 P- m" Z" I- f: U
! S2 d. n8 Q. N
8 W3 p: D7 F6 P1 a$ ^% e+ r8 z# |. u- U& Q! E/ s
import xarray as xr#step1 read dataf_tas = xr.open_dataset('tas_Amon_BCC-CSM2-MR_historical_r1i1p1f1_gn_185001-201412.nc', decode_times=False)#step2 look at data's informationprint(f_tas)#step3tas = f_tas['tas']print(tas)#step4a = tas.loc[15.5:74.5]print(a)#tep5b = tas.loc[15.5:74.5, 40:55, 115:135]print(b) 5 K7 a9 n& p" r0 d. m
|