Python气象数据处理与绘图(1):数据读取

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python气象数据处理与绘图(1):数据读取相关的知识,希望对你有一定的参考价值。

参考技术A python很多库支持了对nc格式文件的读取,比如NetCDF4,PyNio(PyNio和PyNgl可以看做是NCL的Python版本)以及Xarray等等。

我最初使用PyNio,但是由于NCL到Python的移植并不完全,导致目前远不如直接使用NCL方便,而在接触Xarray库后,发现其功能强大远超NCL(也可能是我NCL太菜的原因)。

安装同其它库一致:

我这里以一套中国逐日最高温度格点资料(CN05.1)为例,其水平精度为0.5°X0.5°。

可以看到,文件的坐标有时间, 经度,纬度,变量有日最高温
我们将最高温数据取出

这与Linux系统中的ncl_filedump指令看到的信息是类似的
Xarray在读取坐标信息时,自动将时间坐标读取为了datetime64 格式,这对我们挑选目的时间十分方便。Xarray通常与pandas配合使用。
比如我们想选取1979.06.01-1979.06.20时期数据,我们只需

再比如我们想选取夏季数据时,只需

更多的时间操作同python的datetime函数类似。
当我们想选取特定经纬度范围(高度)的数据时,.loc[]函数同样可以解决。
在这里,我选取了40°N-55°N,115°E-135°E范围的数据

甚至,我们还可以套娃,同时叠加时间和范围的选取

这足够满足常用到的数据索引要求。

对于这类简单排列的.txt文件,可以通过np.load读取,用pandas的.read_csv更为方便

读取txt的同时,对每列赋予了一个列名,通过data.a可以直接按列名调用相应数据。
对于较复杂的.txt文件,仍可通过该函数读取

skiprows=5跳过了前5行的文件头,sep='\s+'定义了数据间隔为空格,这里用的是正则表达。
pd.read_csv函数有很多的参数,可以处理各种复杂情况下的文本文件读取。

grib文件可通过pygrib库读取
import pygrib
f = pygrib.open('xxx.grb')

数据可视化应用xarray 绘图可视化-二进制GrADS气象数据处理(附代码)

二进制GrADS气象数据处理(Ⅰ)

在GrADS中,数据的读取的逻辑是采用数据文件和数据信息(元信息)分离的方法,因而对于GrADS类数据是由两个独立的文件存储的。

  • 第一个文件——数据文件:这个数据文件是以二进制方式存储的,文件是没有空间或时间标志。这个文件的后缀任意即可,本例使用的数据文件的后缀名为.gdata.

  • 第二个文件——数据信息(元信息)文件:这个元信息文件是以文本方式存储的,具体描述了如何读取二进制数据文件。这个文件的后缀为.ctl.

元数据[2]:描述数据的数据,对数据及信息资源的描述性信息。

GrADS相对于其他地球科学绘图软件(包括Cartopy, NCL)还是具有容易绘图的特点,绘图的代码量小。因为GrADS这个特点,可在Python中对数据进行计算后再转换为GrADS类数据,从而在GrADS中绘图。

在进行读取文件之前,我们先引入以下三个包。

import numpy as np
import xarray as xr
import pandas as pd

单变量二进制数组数据处理

对于单变量二进制数组的数据处理,我们以hgt4817-500数据为例。

以上是关于Python气象数据处理与绘图(1):数据读取的主要内容,如果未能解决你的问题,请参考以下文章

Python气象数据处理与绘图(18):泰勒图

Python气象数据处理与绘图(4):显著性检验

Python气象数据处理与绘图(12):轨迹(台风路径,寒潮路径,水汽轨迹)绘制

Python气象数据处理与绘图(5):气候突变检验(年代际突变检验)

数据可视化应用气象绘图(附Python代码)

数据可视化应用气象绘图(附Python代码)