社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python处理全球降水气候数据(GPCP)绘制全球降水四季空间分布图

气象学家 • 2 年前 • 1332 次点击  

全球降水气候数据集(GPCP)由NASA戈达德太空飞行中心制作,数据结合了特殊传感器微波成像仪(SSM/I)项目和散射算法、GOES降水指数(GPI)、输出长波降水指数(OPI)、雨量计和NOAA极轨卫星上的TOVS探测仪的降水估计等数据,数据空间分辨率约为150km。

官网下载链接:http://gpcp.umd.edu


Python处理全球降水气候数据(GPCP):
# -*- coding: utf-8 -*-"""@Features: 空间分布图 季节平均@Date:2022/4/30"""import matplotlib.pyplot as pltimport numpy as npimport netCDF4 as ncimport cartopy.crs as ccrsfrom cartopy.util import add_cyclic_pointimport cartopy.feature as cfeaturefrom cartopy.mpl.ticker import LatitudeFormatter, LongitudeFormatterfrom matplotlib import rcParamsconfig = {"font.family":'Times New Roman',"font.size":10,"mathtext.fontset":'stix'}rcParams.update(config)def sea_mean(start): temp = [] for i in range(start, 468, 12): temp.append(i) temp.append(i + 1) temp.append(i + 2) mean_season = np.nanmean(pre[temp, :, :], 0) return mean_seasonif __name__ == '__main__': dataset = nc.Dataset('F:/RMatlab/data20211219/precip.mon.mean.nc') # 读取数据 print(dataset.variables.keys()) # 输出所有变量 lon = dataset.variables['lon'][:].data # 读取经度 lat = dataset.variables['lat'][:].data # 读取维度 time = dataset.variables['time'] # 读取时间 real_time = nc.num2date(time, time.units).data # 转成时间格式 pre = dataset.variables['precip'][:].data # 读取降水 pre[pre < 0] = np.nan # 绘图 fig = plt.figure() # 设置一个画板,将其返还给fig for i in range(4): mon = [3, 6, 9, 12] title = ['MAM', 'JAS', 'SON', 'DJS'] proj=ccrs.PlateCarree() extent = [-180,180,-90,90] ax = fig.add_subplot(2, 2, i + 1,projection=ccrs.PlateCarree(central_longitude=180),facecolor='gray') ax.set_extent(extent, crs=ccrs.PlateCarree()) # 改动了居中经线后,横坐标的经纬度维持不变!!!后续的绘图要根据原始的-180~180的横坐标绘制 ax.coastlines() # 消除白线 cycle_data, cycle_lon = add_cyclic_point(sea_mean(mon[i]), coord=lon) cycle_LON, cycle_LAT = np.meshgrid(cycle_lon, lat) cs = ax.contourf(cycle_LON-180, cycle_LAT, cycle_data,cmap='rainbow', extend='both',levels=range(0, 12)) ax.add_feature(cfeature.COASTLINE.with_scale('50m'),linewidth=0.2,zorder=2,color='k')# 添加海岸线 plt.title(title[i],fontsize=8) cbar=plt.colorbar(cs,shrink=0.63,orientation='vertical' ,pad=0.02,aspect=30,extend='both') ax.set_xticks(np.arange(extent[0], extent[1] + 1, 60), crs = proj) ax.set_yticks(np.arange(extent[-2], extent[-1] + 1,30), crs = proj) ax.xaxis.set_major_formatter(LongitudeFormatter(zero_direction_label=False)) ax.yaxis.set_major_formatter(LatitudeFormatter())plt.savefig('F:/Rpython/lp37/plot142.png',dpi=800,bbox_inches='tight',pad_inches=0)plt.show()

声明:欢迎转载、转发本号原创内容,可留言区留言或者后台联系小编(微信:gavin7675)进行授权。气象学家公众号转载信息旨在传播交流,其内容由作者负责,不代表本号观点。文中部分图片来源于网络,如涉及作品内容、版权和其他问题,请后台联系小编处理。





往期推荐

 ERA5-Land陆面高分辨率再分析数据(~16TB)

★ ERA5常用变量再分析数据(~11TB)

 TRMM 3B42降水数据(Daily/3h)

 科研数据免费共享: GPM卫星降水数据

 气象圈子有人就有江湖,不要德不配位!

 请某气象公众号不要 “以小人之心,度君子之腹”!

 EC数据商店推出Python在线处理工具箱

★ EC打造实用气象Python工具Metview

★ 机器学习简介及在短临天气预警中的应用

★ AMS推荐|气象学家-海洋学家的Python教程

★ Nature-地球系统科学领域的深度学习及理解

★ 采用神经网络与深度学习来预报降水、温度


   欢迎加入气象学家交流群   

请备注:姓名/昵称-单位/学校-研究方向

未备注的不通过申请



❤️ 「气象学家」 点赞

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/137241
 
1332 次点击