├── 20190320-0800.png ├── README.md ├── README_zh.md ├── china_scs.py ├── surf_cli_chn_merge_cmp_pre_hour_grid_0.10SURF_CLI_CHN_MERGE_CMP_PRE_HOUR_GRID_0.10-2019032000.gif └── surf_cli_chn_merge_cmp_pre_hour_grid_0.10SURF_CLI_CHN_MERGE_CMP_PRE_HOUR_GRID_0.10-2019032000.grd /20190320-0800.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laishenggx/CMORPH/ea68850313db34ecc3dddaf0acfb975a9e85eed7/20190320-0800.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CMORPH 2 | Python3 script for reading and ploting China Hourly Merged Precipitation Analysis(CMORPH) Data. 3 | * Coder: Lai Sheng @ College of Atmospheric Science, Chengdu University of Information Technology. 4 |

5 | CMORPH Sample 6 |

7 | 8 | -------------------------------------------------------------------------------- /README_zh.md: -------------------------------------------------------------------------------- 1 | # CMORPH 2 | 读取中国自动站与CMORPH降水产品融合的逐时降水量网格数据集(1.0版)的Python3程序 3 | -------------------------------------------------------------------------------- /china_scs.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import matplotlib.pyplot as plt 3 | from mpl_toolkits.basemap import Basemap 4 | import matplotlib.colors as colors 5 | import matplotlib as mpl 6 | from dateutil.relativedelta import * 7 | import datetime as dt 8 | 9 | data_root='C:\\pyproject\\CMORPH\\data\\' 10 | 11 | utc_time=dt.datetime(2019,3,20,0) 12 | delta = relativedelta(hours=8) 13 | bjt=utc_time+delta 14 | 15 | file='surf_cli_chn_merge_cmp_pre_hour_grid_0.10SURF_CLI_CHN_MERGE_CMP_PRE_HOUR_GRID_0.10-%04d%02d%02d%02d.grd'\ 16 | %(utc_time.year,utc_time.month,utc_time.day,utc_time.hour) 17 | data=np.fromfile(data_root+file,dtype=np.float32) 18 | data=data.reshape(2,440,700) 19 | pre=np.maximum(data[0,:,:],0) 20 | 21 | lon_leftup=70;lat_leftup=59 22 | lon_rightdown=140;lat_rightdown=15 23 | res=0.1 24 | lon=np.arange(lon_leftup,lon_rightdown,res) 25 | lat=np.arange(lat_rightdown,lat_leftup,res) 26 | fig, ax = plt.subplots() 27 | lon_leftup=70;lat_leftup=59 28 | lon_rightdown=140;lat_rightdown=15 29 | m = Basemap(projection='cyl', llcrnrlat=lat_rightdown, urcrnrlat=lat_leftup, llcrnrlon=lon_leftup, urcrnrlon=lon_rightdown, resolution='l') 30 | m.readshapefile('C:\\dt\\bou2_4l', 'bou2_4l.shp', color='black',linewidth=0.3) 31 | m.readshapefile('C:\\dt\\hyd1_4l', 'hyd1_4l', color=(0,120/255,1),linewidth=0.2) 32 | m.drawcoastlines(linewidth=0.3, color='black') 33 | 34 | parallels = np.arange(20,90,10) #纬线 35 | m.drawparallels(parallels,labels=[True,False,False,False],linewidth=0.2,dashes=[1,4]) 36 | meridians = np.arange(0,200,10) #经线 37 | m.drawmeridians(meridians,labels=[False,False,False,True],linewidth=0.2,dashes=[1,4]) 38 | 39 | cdict = [(151 / 255, 250 / 255, 151 / 255), (49/ 255, 204 / 255, 49/ 255), (126/ 255, 191 / 255, 237 / 255) 40 | , (0 / 255, 0 / 255, 255 / 255), (237/ 255, 0 / 255, 237 / 255)] 41 | my_cmap = colors.ListedColormap(cdict,'pre3h') 42 | my_cmap.set_under('w') 43 | my_cmap.set_over((135/ 255, 25 / 255, 25 / 255)) 44 | lev=np.array([0.1,0.5,1,5,10,20]) 45 | norm3 = mpl.colors.BoundaryNorm(lev, my_cmap.N) 46 | 47 | lons, lats = np.meshgrid(lon,lat) 48 | x, y = m(lons, lats) 49 | pp=m.contourf(x,y,pre,cmap=my_cmap,levels=lev,norm=norm3,extend='both') 50 | cb=fig.colorbar(pp,ax=ax,pad=0.07,shrink=0.7,aspect=25,orientation='horizontal') 51 | # cb=fig.colorbar(pp,ax=ax,pad=0.02,shrink=0.7,aspect=20) 52 | 53 | font1={'family':'SimHei','size':8,'color':'b'} 54 | font2={'family':'SimHei','size':8,'color':'k'} 55 | font3={'family':'SimHei','size':8,'color':'r'} 56 | ax.text(0.005, 1.02, '全国自动站&CMORPH降水融合产品:逐小时降水量(单位:mm)',fontdict=font2,transform=ax.transAxes) 57 | ax.text(0.67, 1.06,'%04d年%02d月%02d日 %02d:00(北京时)'%(bjt.year,bjt.month,bjt.day,bjt.hour), transform=ax.transAxes, fontdict=font3) 58 | ax.text(0.67, 1.015,'%04d年%02d月%02d日 %02d:00(世界时)'%(utc_time.year,utc_time.month,utc_time.day,utc_time.hour), transform=ax.transAxes, fontdict=font1) 59 | 60 | 61 | #南海小图 62 | a = plt.axes([0.753, 0.28, 0.12, 0.23]) 63 | lon_leftup=107;lat_leftup=24 64 | lon_rightdown=121.3;lat_rightdown=2.4 65 | m = Basemap(projection='cyl', llcrnrlat=lat_rightdown, urcrnrlat=lat_leftup, llcrnrlon=lon_leftup, urcrnrlon=lon_rightdown, resolution='l') 66 | m.drawcoastlines(linewidth=0.3, color='gray') 67 | m.contourf(x,y,pre,cmap=my_cmap,levels=lev,norm=norm3,extend='both') 68 | 69 | 70 | m.readshapefile('C:\\dt\\bou2_4l', 'bou2_4l.shp', color='black',linewidth=0.3) 71 | font1={'family':'SimHei','size':6,'color':'black'} 72 | a.text(0.92,0.012,'南海诸岛',transform=ax.transAxes,fontdict=font1,bbox=dict(boxstyle='square',ec='k',fc='w',pad=0.3)) 73 | plt.savefig('%04d%02d%02d-%02d00.png'%(bjt.year,bjt.month,bjt.day,bjt.hour),dpi=300,bbox_inches='tight') 74 | plt.show() -------------------------------------------------------------------------------- /surf_cli_chn_merge_cmp_pre_hour_grid_0.10SURF_CLI_CHN_MERGE_CMP_PRE_HOUR_GRID_0.10-2019032000.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laishenggx/CMORPH/ea68850313db34ecc3dddaf0acfb975a9e85eed7/surf_cli_chn_merge_cmp_pre_hour_grid_0.10SURF_CLI_CHN_MERGE_CMP_PRE_HOUR_GRID_0.10-2019032000.gif -------------------------------------------------------------------------------- /surf_cli_chn_merge_cmp_pre_hour_grid_0.10SURF_CLI_CHN_MERGE_CMP_PRE_HOUR_GRID_0.10-2019032000.grd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laishenggx/CMORPH/ea68850313db34ecc3dddaf0acfb975a9e85eed7/surf_cli_chn_merge_cmp_pre_hour_grid_0.10SURF_CLI_CHN_MERGE_CMP_PRE_HOUR_GRID_0.10-2019032000.grd --------------------------------------------------------------------------------