├── 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 |
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
--------------------------------------------------------------------------------