
一、知识点
读取NC格式在分析资料里面需要的数据,画填色图和风羽图
小知识点:
1.数据的读取
2.数据的清洗
3.风羽图的设置
二、代码拆分
导入包
#处理数据的包
import xarray as xr
import numpy as np
#画图的包
import matplotlib.pyplot as plt
#地图的包
import cartopy.crs as ccrs
import my_class #一个自己写的画地图的py文件
读取数据
#打开nc文件
ds = xr.open_dataset('download_201305.nc')
# print(ds)
#获取经度,纬度,时间,时间的作用下面讲
lat = ds.latitude#读取维度
lon = ds.longitude#读取经度
u = ds['u']#风场U分量
v = ds['v']#风场V分量
vo = ds['vo']#涡度
注意:这里读取的数据是全部的格点数据,但是我们画图用不了这么多,所以对数据做分割。只需要一部分
数据分割
#设置经纬度范围,我们并不需要画出多余的数据
lat_range = lat[(lat>=22) & (lat<=40)]
lon_range = lon[(lon>=102) & (lon<=126)]
#根据时间,经纬度得到数据,U,V,涡度
u_region = u.sel(longitude=lon_range, latitude=lat_range,time = '2013-06-27T00:00:00.000000000')
v_region = v.sel(longitude=lon_range, latitude=lat_range,time = '2013-06-27T00:00:00.000000000')
vo_region = vo.sel(longitude=lon_range, latitude=lat_range,time = '2013-06-27T00:00:00.000000000')
#涡度乘以100000,因为是10的负5次方,方便呈现效果
vo_region = vo_region*100000
这里涡度乘以了100000,是为了方便观察,让数据绘制出来的效果更好。
数据处理
#下面是数据的简单清洗,本来没有这个,直接填色,发现有很多负值,画图太难看了
#设置条件,找到涡度大于等于2的位置
e = (vo_region >= 2)
#利用np包,把所有不满足条件的位置改写成0
vo_region = np.where(e,vo_region,0)
把涡度小于2的全部置零,这样在填色的时候小于2的地方就白了。
画图设置
#设置画布15*7
fig = plt.figure(figsize=(15,