|
第一步:使用anaconda安装carray库: - % a) J: ?/ i$ r4 z' l
" v& e/ E4 g/ A. P& Y8 A; e* }
conda install xarray
$ P7 h u# ~( {" S& c# s5 Y
# \2 l8 r- ^% m# S+ l第二步:使用Spyder(Python3.8)读取数据NetCDF文件(***.nc) 以一套CMIP6的全球气候模式BCC-CSM2-MR(中国北京气候中心研发,分辨率为160*320)输出的tas(表面气温)变量1850-2014年的历史格点资料为例: (数据下载地址:www.52ocean.cn)
读取数据的代码如下: - & n4 w. B3 N3 C; ?: d8 Q: H0 S
2 i. ^: e4 a% o- 5 d& g% z' l7 C6 _! D
) ?/ d5 _* H$ M7 ]2 @
3 s8 Z9 m5 ~: y" s, H
' u# f: I2 n R% R
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); o( |& s9 n0 ^: K
. e2 Q2 d; ?5 T/ F, V, R
文件信息查看如下:
可以看到,文件的坐标有时间time, 经度lon,纬度lat,高度height,变量有表面气温tas。 & }* C3 X9 b- a1 Q
第三步代码如下: 0 Y% c1 ]8 Z: g" [
* a" P6 @! a6 T: X6 G- , B0 `# k" Y- s& s/ W0 a8 p
- - s8 I0 I( s/ L/ d4 z7 P
- 1 P$ U9 Q+ j! W3 q1 ^
6 S) P# t: x6 n9 n( i# ~- + I( L% w5 X$ j" }
h% o- }; z1 o. W- 4 ^% _& o! b9 S7 m9 R8 B" M( S3 G% f
- 1 w: [& ?* Y+ c3 |
$ ^( e7 c. ~( Z" S2 N
#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)$ \' f& C& V+ ^ o1 P# n
) n$ _2 q3 Q/ t$ H @2 ?) M第三步:气温数据取出 Xarray在读取坐标信息时,自动将时间坐标读取为了float64 格式,这对我们挑选目的时间十分方便。Xarray通常与pandas配合使用。
' U2 A* s/ ?2 D; |% z
第四步:选取某时间段内数据 比如我们想选取15.5-74.5(根据数据信息中time格式的规定输入相应格式)时期数据。
6 Q. j+ p8 U6 r1 e+ m
第五步:选取特定经纬度范围(高度)的数据 当我们想选取特定经纬度范围(高度)的数据时,.loc[]函数同样可以解决。
0 X, Q7 X9 ]7 I; P5 c( M% r在这里,我选取了40°N-55°N,115°E-135°E范围的数据
; |5 q# ?- O y. R7 [; c0 f完整代码 ( P& s" H+ [4 O2 T: c& J! W
- 2 w, L" w* c$ q) V0 x0 ^* F
6 U; m( r/ D* p8 t
5 L5 v9 U. I) o) ]- : U# v! M6 Y( D$ @8 S2 e* t
- ) ?; p. L* T% x& f X1 [; T- m
- - z% P2 W7 y B. |
% B/ b) l$ U R! j- 5 a' i1 Y0 I, w' ^. t
( {3 j7 C6 e3 R# ?2 `2 C- 4 I5 w, }! C2 c9 [% ?4 Q9 r! q
6 e6 r. n4 n+ c* p L6 Z9 i- 9 z2 {4 r Y7 n% E1 w3 j8 H
- 5 Z. m7 G3 e F6 x& D, Q3 E; S7 R
- % {* C- d7 b0 m4 N' `5 _( t5 W
% C: d+ m& `. T6 G5 L
# Z' n- w$ F( l. j4 Q1 j0 ~& J- 8 n! p% d, a- i
6 }9 p0 q- q" _3 S; ~2 K$ h4 Z# a# x7 I4 \1 x, R* E1 _
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) , L, G X! ~) n, w+ ` e
|