|
第一步:使用anaconda安装carray库:
- w% E: g; c& E, e6 f$ u3 {' C
conda install xarray) |6 `: t& ~, z- x* T
' L3 w( i& E7 {
第二步:使用Spyder(Python3.8)读取数据NetCDF文件(***.nc) 以一套CMIP6的全球气候模式BCC-CSM2-MR(中国北京气候中心研发,分辨率为160*320)输出的tas(表面气温)变量1850-2014年的历史格点资料为例: (数据下载地址:www.52ocean.cn)
读取数据的代码如下: - 3 R2 V3 y! F, F4 O/ n% m
- 0 ~$ \' D/ O/ O9 d. d) P3 z
8 g0 N" v* D& F- 7 c j4 J. G7 c! }
0 v. i6 h5 e" Q/ O: I, F0 \2 t
k: B4 ?# _- u5 V) D" J4 V
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): S; Y8 `$ ~6 f
3 b g) Q6 }, B7 G t# @文件信息查看如下:
可以看到,文件的坐标有时间time, 经度lon,纬度lat,高度height,变量有表面气温tas。 ! n, h. R0 u/ b# w) o& e, }7 E
第三步代码如下:
7 q" Z2 k5 ]& b! b- 7 a% Z; M7 J+ M" b- \" z# m
- 8 E* } Z5 y1 | z+ w5 T8 r
5 A9 e9 g+ ?) Q- i- ; i' {1 @' Y2 E( @" S$ A: x
b; S8 c. M3 G- 6 l: g* k6 e' `9 C$ F- z
- & l3 x5 o$ n7 t7 [1 k0 o7 u
7 U6 @8 g, [/ J6 F
! @8 o' n3 g, t6 P+ u, V/ Z$ ]9 M! M; b; Y. q7 J& i! p& i
#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) U# G2 {0 S' P
& ^: I! [3 O% A4 |! D
第三步:气温数据取出 Xarray在读取坐标信息时,自动将时间坐标读取为了float64 格式,这对我们挑选目的时间十分方便。Xarray通常与pandas配合使用。
7 ~4 ]% ]( {4 A; W4 ~9 x
第四步:选取某时间段内数据 比如我们想选取15.5-74.5(根据数据信息中time格式的规定输入相应格式)时期数据。
7 N, u q/ f1 T k) Z
第五步:选取特定经纬度范围(高度)的数据 当我们想选取特定经纬度范围(高度)的数据时,.loc[]函数同样可以解决。5 Z; W) ?+ `4 g [* u p& i' a
在这里,我选取了40°N-55°N,115°E-135°E范围的数据
( u" M- P/ Y9 V2 z9 a& }
完整代码 6 R k% `2 X! N* Q
- 5 B" A( L1 [4 A& ?/ h
- 1 u, a+ g* x2 o+ l. w; ?' E
! v+ S2 f- D+ u1 V- |/ m. Y. s/ Z5 a
1 ^3 g! ^" a9 X7 x* [- 3 s/ T% S0 H; A, T4 E( r$ k
- : V; V, @$ L* ~/ ?
* d. ?; y: I2 |" u8 y
, `7 Q0 b: W1 O0 D6 M( b$ ~: D& r2 v- 9 o3 s$ R4 G3 X/ Y5 U5 ?/ `- l
- : u& y& I9 w: v0 _ J" m& N
9 R( H( D0 Z, `2 ]- j- , w! q$ I1 ~3 j: [; b
# a( G( j7 w# m/ V6 r8 g- & r/ M7 |& s% x, ^5 _9 N- j
- 7 l+ b" g+ R6 o2 v6 N6 a2 D5 D: o
- 3 c ^# N7 \8 L) o" p% `
6 u) h, U" J% e/ I8 U/ R& @
3 y) k2 b; z3 p- I/ l+ |, T+ S F) ^$ x4 @3 N! |
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)
9 b) ^- `- B+ a9 V& ^0 u+ U$ W |