空间分布对比
<p>[TOC]</p>
<pre><code class="language-python">%matplotlib inline
%load_ext autoreload
%autoreload 2
import meteva.base as meb
import meteva.product as mpd
import numpy as np
import datetime</code></pre>
<h1>预报和观测分布对比图</h1>
<p><strong><font face="黑体" color=blue size = 3>compare_sg(sta_ob,grd_fo,grade_list,cmap_sta = None,cmap_grid= None,extend = "both",save_path=None,show = False,dpi = 200,add_county_line = False,x_y = "dtime_member",sup_fontsize = 10,
height = None,width = None,add_worldmap =False,sup_title = None,point_size = None,ts_grade = None):</font></strong><br />
根据输入的站点观测数据和网格预报数据,绘制对比图 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>sta_ob </font></strong></td>
<td style="text-align: left;">实况<a href="https://www.showdoc.cc/meteva?page_id=3975600580125986">站点数据</a>,数据中只能有单个起报时刻,单个时效的数据</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grd_fo </font></strong></td>
<td style="text-align: left;">预报<a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格数据</a>,数据中可以包含多种预报,多种起报时间和预报时效的预报</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grade_list </font></strong></td>
<td style="text-align: left;">对比图中的要素等级</td>
</tr>
<tr>
<td style="text-align: left;">cmap_sta</td>
<td style="text-align: left;">站点实况数据的cmap</td>
</tr>
<tr>
<td style="text-align: left;">cmap_grid</td>
<td style="text-align: left;">格点预报数据的cmap</td>
</tr>
<tr>
<td style="text-align: left;">extend</td>
<td style="text-align: left;">colorbar的类型,默认两头是尖的</td>
</tr>
<tr>
<td style="text-align: left;"><strong>save_path</strong></td>
<td style="text-align: left;">图片输出文件路径</td>
</tr>
<tr>
<td style="text-align: left;"><strong>show</strong></td>
<td style="text-align: left;">是否在屏幕显示图片,如果save_path 为None时,程序内部会自动将show设置True</td>
</tr>
<tr>
<td style="text-align: left;"><strong>dpi</strong></td>
<td style="text-align: left;">控制输出输出图片的清晰度,和matplotlib参数dpi设置方式一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>add_county_line</strong></td>
<td style="text-align: left;">绘制底图时是否添加县界</td>
</tr>
<tr>
<td style="text-align: left;"><strong>x_y</strong></td>
<td style="text-align: left;">当包含多个子图对比时,该参数取为dtime_member时,列向是不同时效的对比,纵向是不同预报成员的对比</td>
</tr>
<tr>
<td style="text-align: left;"><strong>sup_fontsize</strong></td>
<td style="text-align: left;">图片标题的字体大小,其它字体将根据标题字体大小自动设置,其中坐标轴字体大小 = sup_fontsize <em> 0.9, 坐标刻度的字体大小 = sup_fontsize </em> 0.8</td>
</tr>
<tr>
<td style="text-align: left;"><strong>width</strong></td>
<td style="text-align: left;">图片的宽度,缺省时程序自动设置</td>
</tr>
<tr>
<td style="text-align: left;"><strong>height</strong></td>
<td style="text-align: left;">图片的高度,缺省时程序自动设置</td>
</tr>
<tr>
<td style="text-align: left;"><strong>add_worldmap</strong></td>
<td style="text-align: left;">是否添加世界地图</td>
</tr>
<tr>
<td style="text-align: left;"><strong>sup_title</strong></td>
<td style="text-align: left;">sub_plot 不为None图片中包含多个子图时起作用,sup_title可以时None,字符串或字符串列表,当取值为字符时,所有批量制作的图片会有相同的sup_title,当其为列表时,会逐一为每张图片设置sup_title</td>
</tr>
<tr>
<td style="text-align: left;"><strong>point_size</strong></td>
<td style="text-align: left;">观测散点的大小</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ts_grade</strong></td>
<td style="text-align: left;">在多模式多时效对比的图形中,每个子图左下角会标注一个等级的TS评分,以便对比,Ts评分的降水等级由该参数确定,缺省时ts_grade = grade_list[0]确定</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">无返回值</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong></p>
<h2>固定实况时间的示例</h2>
<p>固定一个实况时间,对比该实况时间匹配的不同模式的不同时效的预报场</p>
<pre><code class="language-python">grd_m = meb.read_griddata_from_nc(r&quot;H:\test_data\input\meb\grd_sele_test.nc&quot;)
print(grd_m)</code></pre>
<pre><code>&lt;xarray.DataArray &#039;data0&#039; (member: 3, level: 1, time: 10, dtime: 4, lat: 81, lon: 101)&gt;
array([[[[[[ 2.59400e+00, 2.88400e+00, 1.60200e+00, ...,
7.60000e-02, 3.21000e-01, 4.58000e-01],
[ 4.63900e+00, 5.85900e+00, 9.62000e-01, ...,
1.60000e-02, 2.59000e-01, 8.24000e-01],
[ 6.62200e+00, 3.31100e+00, 1.81500e+00, ...,
0.00000e+00, 4.50000e-02, 4.12000e-01],
...,
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
9.10900e+00, 1.01930e+01, 1.11390e+01],
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
1.12450e+01, 1.05900e+01, 8.63600e+00],
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
7.20200e+00, 1.03300e+01, 9.93300e+00]],
[[ 2.36050e+01, 2.25220e+01, 1.80360e+01, ...,
6.10000e-02, 3.00000e-02, 1.50000e-02],
[ 2.42310e+01, 2.88090e+01, 2.12860e+01, ...,
4.60000e-02, 7.60000e-02, 1.99000e-01],
[ 1.75020e+01, 2.56500e+01, 2.76190e+01, ...,
7.60000e-02, 6.10000e-02, 1.38000e-01],
...
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00],
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00],
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00]],
[[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00],
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00],
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00],
...,
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00],
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00],
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00]]]]]])
Coordinates:
* member (member) object &#039;ECMWF&#039; &#039;网格预报指导报&#039; &#039;国省融合预报&#039;
* level (level) float64 0.0
* time (time) datetime64[ns] 2021-07-15T20:00:00 ... 2021-07-20T08:00:00
* dtime (dtime) int32 24 48 72 96
* lat (lat) float64 30.0 30.1 30.2 30.3 30.4 ... 37.6 37.7 37.8 37.9 38.0
* lon (lon) float64 108.0 108.1 108.2 108.3 ... 117.7 117.8 117.9 118.0
Attributes:
dtime_units: hour</code></pre>
<pre><code class="language-python">rain24_ob = meb.read_stadata_from_micaps3(r&quot;H:\test_data\input\mpd\rain24h_21072108.000&quot;)
print(rain24_ob)</code></pre>
<pre><code> level time dtime id lon lat data0
0 0 2021-07-21 08:00:00 0 45007 113.91 22.30 97.5
1 0 2021-07-21 08:00:00 0 45032 113.98 22.47 100.0
2 0 2021-07-21 08:00:00 0 45035 114.16 22.53 67.5
3 0 2021-07-21 08:00:00 0 45039 114.21 22.40 159.0
4 0 2021-07-21 08:00:00 0 45044 114.03 22.20 90.5
... ... ... ... ... ... ... ...
2713 0 2021-07-21 08:00:00 0 59981 112.33 16.83 1.2
2714 0 2021-07-21 08:00:00 0 59985 111.60 16.53 0.0
2715 0 2021-07-21 08:00:00 0 59993 114.22 10.21 0.0
2716 0 2021-07-21 08:00:00 0 59994 114.29 9.71 0.0
2717 0 2021-07-21 08:00:00 0 59996 114.50 9.91 0.0
[2718 rows x 7 columns]</code></pre>
<pre><code class="language-python">mpd.compare_sg(rain24_ob,grd_m, grade_list = [0.1,3,5,10,20,50],cmap_sta = &quot;Reds&quot;,cmap_grid = &quot;Blues&quot;,point_size=3,show = False,ts_grade=50)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=464393fd9ca5fd1ad3498cbc4a0c7b6f&amp;file=file.png" alt="" /></p>
<h2>固定起报时间的示例</h2>
<p>固定一个起报时间,对比不同模式的不同时效的预报场和对应实况站点数据</p>
<pre><code class="language-python">time_fo= datetime.datetime(2022,6,12,20,0)
station = meb.read_stadata_from_micaps3(meb.station_国家站)
station.iloc[:,-1] = meb.IV
##读取收集观测数据
dir1 = r&quot;D:\book\test_data\input\OBS_with_noise\rain01\YYYYMMDDHH.000&quot;
sta_list = []
for dh in range(1,13,1):
time_ob = time_fo + datetime.timedelta(hours = dh)
path = meb.get_path(dir1,time_ob)
sta = meb.read_stadata_from_micaps3(path,station = station,time = time_ob,dtime = 0,data_name = &quot;OBS&quot;,show = True)
sta_list.append(sta)
ob_rain01 = meb.concat(sta_list)
ob_rain01 = meb.sele_by_para(ob_rain01,value=[0,300]) #保留取值合理的样本
#由逐小时降水计算逐3小时降水
ob_rain03 = meb.sum_of_sta(ob_rain01,used_coords=[&quot;time&quot;],span = 3)
</code></pre>
<pre><code>success read from D:\book\test_data\input\OBS_with_noise\rain01\2022061221.000
success read from D:\book\test_data\input\OBS_with_noise\rain01\2022061222.000
success read from D:\book\test_data\input\OBS_with_noise\rain01\2022061223.000
success read from D:\book\test_data\input\OBS_with_noise\rain01\2022061300.000
success read from D:\book\test_data\input\OBS_with_noise\rain01\2022061301.000
success read from D:\book\test_data\input\OBS_with_noise\rain01\2022061302.000
success read from D:\book\test_data\input\OBS_with_noise\rain01\2022061303.000
success read from D:\book\test_data\input\OBS_with_noise\rain01\2022061304.000
success read from D:\book\test_data\input\OBS_with_noise\rain01\2022061305.000
success read from D:\book\test_data\input\OBS_with_noise\rain01\2022061306.000
success read from D:\book\test_data\input\OBS_with_noise\rain01\2022061307.000
success read from D:\book\test_data\input\OBS_with_noise\rain01\2022061308.000</code></pre>
<pre><code class="language-python">dir_A = r&quot;D:\book\test_data\input\MODEL_A\ACPC\YYYYMMDD\YYMMDDHH.TTT.nc&quot;
grd_list =[]
for dh in range(0,13,3):
path = meb.get_path(dir_A,time_fo,dh)
grd = meb.read_griddata_from_nc(path,time = time_fo,dtime = dh,
data_name = &quot;MODEL_A&quot;,show = True)
if grd is not None:
grd_list.append(grd)
MODEL_A_ACPC = meb.concat(grd_list)
MODEL_A_rain03 = meb.change(MODEL_A_ACPC,used_coords=[&quot;dtime&quot;],delta=3)
</code></pre>
<pre><code>success read from D:\book\test_data\input\MODEL_A\ACPC\20220612\22061220.000.nc
success read from D:\book\test_data\input\MODEL_A\ACPC\20220612\22061220.003.nc
success read from D:\book\test_data\input\MODEL_A\ACPC\20220612\22061220.006.nc
success read from D:\book\test_data\input\MODEL_A\ACPC\20220612\22061220.009.nc
success read from D:\book\test_data\input\MODEL_A\ACPC\20220612\22061220.012.nc</code></pre>
<pre><code class="language-python">dir_B = r&quot;D:\book\test_data\input\MODEL_B\rain03\YYYYMMDD\YYMMDDHH.TTT.nc&quot;
grd_list =[]
for dh in range(0,13,3):
path = meb.get_path(dir_B,time_fo,dh)
grd = meb.read_griddata_from_nc(path,time = time_fo,dtime = dh,
data_name = &quot;MODEL_B&quot;,show = True)
if grd is not None:
grd_list.append(grd)
MODEL_B_rain03 = meb.concat(grd_list)
</code></pre>
<pre><code>D:\book\test_data\input\MODEL_B\rain03\20220612\22061220.000.nc not exists
success read from D:\book\test_data\input\MODEL_B\rain03\20220612\22061220.003.nc
success read from D:\book\test_data\input\MODEL_B\rain03\20220612\22061220.006.nc
success read from D:\book\test_data\input\MODEL_B\rain03\20220612\22061220.009.nc
success read from D:\book\test_data\input\MODEL_B\rain03\20220612\22061220.012.nc</code></pre>
<pre><code class="language-python">grd_all = meb.combine_griddata([MODEL_A_rain03,MODEL_B_rain03],dtime_list=[3,6,9,12])
print(grd_all)</code></pre>
<pre><code>&lt;xarray.DataArray &#039;data0&#039; (member: 2, level: 1, time: 1, dtime: 4, lat: 25, lon: 41)&gt;
array([[[[[[ 0. , 0. , 0. , ..., 0. , 0. , 0. ],
[ 0.1, 0. , 0.9, ..., 0. , 0. , 0. ],
[ 0. , 0. , 0.1, ..., 0. , 0. , 0. ],
...,
[ 0.1, 0.2, 0.2, ..., 10. , 12.6, 19.7],
[ 0. , 0.1, 0.1, ..., 20. , 25.3, 19.3],
[ 0. , 0. , 0. , ..., 4.8, 5. , 5. ]],
[[ 0. , 0.2, 0.1, ..., 0. , 0. , 0. ],
[ 0.3, 0. , 0. , ..., 0. , 0. , 0. ],
[ 2.7, 0.6, 0.3, ..., 0. , 0. , 0. ],
...,
[ 0. , 0. , 0. , ..., 0. , 0.4, 4.2],
[ 0. , 0. , 0. , ..., 0.2, 0.2, 0.4],
[ 0. , 0. , 0. , ..., 0.6, 0.1, 0.2]],
[[ 0. , 0.3, 0. , ..., 0. , 0. , 0. ],
[ 0.1, 0. , 0. , ..., 0. , 0. , 0. ],
[ 0.6, 0.6, 0. , ..., 0. , 0. , 0. ],
...,
...
...,
[ 0.5, 0.5, 0.6, ..., 0.4, 0.4, 0.4],
[ 0.2, 0.3, 0.6, ..., 0.4, 0.5, 0.6],
[ 0. , 0. , 0. , ..., 0.2, 0.3, 0.5]],
[[ 1.4, 1.2, 0.9, ..., 0. , 0. , 0. ],
[ 2.7, 2.5, 1.7, ..., 0.3, 0.1, 0. ],
[ 4.5, 4.4, 3. , ..., 1.7, 1.1, 0.4],
...,
[ 0. , 0. , 0. , ..., 0.3, 0.4, 0.4],
[ 0. , 0. , 0. , ..., 0.2, 0.2, 0.3],
[ 0. , 0. , 0. , ..., 0.3, 0.4, 0.4]],
[[ 4.7, 3.3, 2.5, ..., 0.1, 0.1, 0.1],
[ 6.6, 5.8, 4.4, ..., 0.5, 0.4, 0.2],
[ 9.1, 9.3, 9. , ..., 1.6, 0.9, 0.3],
...,
[ 0. , 0. , 0. , ..., 0.4, 0.4, 0.5],
[ 0. , 0. , 0. , ..., 0.5, 0.6, 0.8],
[ 0. , 0. , 0. , ..., 0.7, 0.9, 1.1]]]]]])
Coordinates:
* member (member) &lt;U7 &#039;MODEL_A&#039; &#039;MODEL_B&#039;
* level (level) float64 0.0
* time (time) datetime64[ns] 2022-06-12T20:00:00
* dtime (dtime) int32 3 6 9 12
* lat (lat) float64 24.0 24.25 24.5 24.75 25.0 ... 29.25 29.5 29.75 30.0
* lon (lon) float64 110.0 110.2 110.5 110.8 ... 119.2 119.5 119.8 120.0</code></pre>
<pre><code class="language-python">print(ob_rain03)</code></pre>
<pre><code> level time dtime id lon lat OBS
0 0 2022-06-12 23:00:00 0 50136 122.52 52.97 0.49
1 0 2022-06-12 23:00:00 0 50137 122.37 53.47 0.00
2 0 2022-06-12 23:00:00 0 50246 124.72 52.35 1.04
3 0 2022-06-12 23:00:00 0 50247 123.57 52.03 0.18
4 0 2022-06-12 23:00:00 0 50349 124.40 51.67 0.36
... ... ... ... ... ... ... ...
24085 0 2022-06-13 08:00:00 0 59945 109.70 18.65 0.00
24086 0 2022-06-13 08:00:00 0 59948 109.58 18.22 0.00
24087 0 2022-06-13 08:00:00 0 59951 110.33 18.80 0.00
24088 0 2022-06-13 08:00:00 0 59954 110.03 18.55 0.00
24089 0 2022-06-13 08:00:00 0 59981 112.33 16.83 0.00
[24090 rows x 7 columns]</code></pre>
<pre><code class="language-python">mpd.compare_sg(ob_rain03,grd_all,grade_list = [0.1,5,10,25,50,100,250],ts_grade=25,point_size=3)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c52f062b27133cb716488526892680e6&amp;file=file.png" alt="" /></p>
<h1>降水预报和观测分布对比图</h1>
<p><strong><font face="黑体" color=blue size = 3>rain_sg(sta_ob,grd_fo,grade_list,save_path=None,show = False,dpi = 200,add_county_line = False,x_y = "dtime_member",sup_fontsize = 10,height = None,width = None,add_worldmap =False,sup_title = None,point_size = None,ts_grade = None):</font></strong><br />
根据输入的站点观测数据和网格预报数据,绘制对比图 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>sta_ob </font></strong></td>
<td style="text-align: left;">实况<a href="https://www.showdoc.cc/meteva?page_id=3975600580125986">站点数据</a>,数据中只能有单个时刻的数据</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grd_fo </font></strong></td>
<td style="text-align: left;">预报<a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格数据</a>,数据中可以包含多种预报,多种起报时间和预报时效的预报</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grade_list </font></strong></td>
<td style="text-align: left;">长度为7的列表,包含小雨、中雨、大雨、暴雨、大暴雨、特大暴雨以及一个降水上限值</td>
</tr>
<tr>
<td style="text-align: left;"><strong>save_path</strong></td>
<td style="text-align: left;">图片输出文件路径</td>
</tr>
<tr>
<td style="text-align: left;"><strong>show</strong></td>
<td style="text-align: left;">是否在屏幕显示图片,如果save_path 为None时,程序内部会自动将show设置True</td>
</tr>
<tr>
<td style="text-align: left;"><strong>dpi</strong></td>
<td style="text-align: left;">控制输出输出图片的清晰度,和matplotlib参数dpi设置方式一致</td>
</tr>
<tr>
<td style="text-align: left;"><strong>add_county_line</strong></td>
<td style="text-align: left;">绘制底图时是否添加县界</td>
</tr>
<tr>
<td style="text-align: left;"><strong>x_y</strong></td>
<td style="text-align: left;">当包含多个子图对比时,该参数取为dtime_member时,列向是不同时效的对比,纵向是不同预报成员的对比</td>
</tr>
<tr>
<td style="text-align: left;"><strong>sup_fontsize</strong></td>
<td style="text-align: left;">图片标题的字体大小,其它字体将根据标题字体大小自动设置,其中坐标轴字体大小 = sup_fontsize <em> 0.9, 坐标刻度的字体大小 = sup_fontsize </em> 0.8</td>
</tr>
<tr>
<td style="text-align: left;"><strong>width</strong></td>
<td style="text-align: left;">图片的宽度,缺省时程序自动设置</td>
</tr>
<tr>
<td style="text-align: left;"><strong>height</strong></td>
<td style="text-align: left;">图片的高度,缺省时程序自动设置</td>
</tr>
<tr>
<td style="text-align: left;"><strong>add_worldmap</strong></td>
<td style="text-align: left;">是否添加世界地图</td>
</tr>
<tr>
<td style="text-align: left;"><strong>sup_title</strong></td>
<td style="text-align: left;">sub_plot 不为None图片中包含多个子图时起作用,sup_title可以时None,字符串或字符串列表,当取值为字符时,所有批量制作的图片会有相同的sup_title,当其为列表时,会逐一为每张图片设置sup_title</td>
</tr>
<tr>
<td style="text-align: left;"><strong>point_size</strong></td>
<td style="text-align: left;">观测散点的大小</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ts_grade</strong></td>
<td style="text-align: left;">在多模式多时效对比的图形中,每个子图左下角会标注一个等级的TS评分,以便对比,Ts评分的降水等级由该参数确定,缺省时ts_grade = grade_list[0]确定</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">无返回值</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong></p>
<pre><code class="language-python">grd_m = meb.read_griddata_from_nc(r&quot;H:\test_data\input\meb\grd_sele_test.nc&quot;)
print(grd_m)</code></pre>
<pre><code>&lt;xarray.DataArray &#039;data0&#039; (member: 3, level: 1, time: 10, dtime: 4, lat: 81, lon: 101)&gt;
array([[[[[[ 2.59400e+00, 2.88400e+00, 1.60200e+00, ...,
7.60000e-02, 3.21000e-01, 4.58000e-01],
[ 4.63900e+00, 5.85900e+00, 9.62000e-01, ...,
1.60000e-02, 2.59000e-01, 8.24000e-01],
[ 6.62200e+00, 3.31100e+00, 1.81500e+00, ...,
0.00000e+00, 4.50000e-02, 4.12000e-01],
...,
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
9.10900e+00, 1.01930e+01, 1.11390e+01],
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
1.12450e+01, 1.05900e+01, 8.63600e+00],
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
7.20200e+00, 1.03300e+01, 9.93300e+00]],
[[ 2.36050e+01, 2.25220e+01, 1.80360e+01, ...,
6.10000e-02, 3.00000e-02, 1.50000e-02],
[ 2.42310e+01, 2.88090e+01, 2.12860e+01, ...,
4.60000e-02, 7.60000e-02, 1.99000e-01],
[ 1.75020e+01, 2.56500e+01, 2.76190e+01, ...,
7.60000e-02, 6.10000e-02, 1.38000e-01],
...
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00],
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00],
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00]],
[[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00],
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00],
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00],
...,
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00],
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00],
[ 0.00000e+00, 0.00000e+00, 0.00000e+00, ...,
0.00000e+00, 0.00000e+00, 0.00000e+00]]]]]])
Coordinates:
* member (member) object &#039;ECMWF&#039; &#039;网格预报指导报&#039; &#039;国省融合预报&#039;
* level (level) float64 0.0
* time (time) datetime64[ns] 2021-07-15T20:00:00 ... 2021-07-20T08:00:00
* dtime (dtime) int32 24 48 72 96
* lat (lat) float64 30.0 30.1 30.2 30.3 30.4 ... 37.6 37.7 37.8 37.9 38.0
* lon (lon) float64 108.0 108.1 108.2 108.3 ... 117.7 117.8 117.9 118.0</code></pre>
<pre><code class="language-python">rain24_ob = meb.read_stadata_from_micaps3(r&quot;H:\test_data\input\mpd\rain24h_21072108.000&quot;)</code></pre>
<pre><code class="language-python">mpd.rain_sg(rain24_ob,grd_m, grade_list = [25,50,100,250,400,600,800],point_size=3,show = True,ts_grade=50)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/30bc606bc13739aeb52b54d84cf8d355" alt="" /></p>
<h1>降水预报和观测分布综合对比图</h1>
<p><strong><font face="黑体" color=blue size = 3>rain_comprehensive_sg(sta_ob,grd_fo,grade_list, save_path=None,show = False,add_county_line = False): </font></strong><br />
根据输入的站点观测数据和网格预报数据,绘制对比图 </p>
<h1>降水预报和观测分布综合对比图(中国范围)</h1>
<p><strong><font face="黑体" color=blue size = 3>rain_comprehensive_chinaland_sg(sta_ob,grd_fo,grade_list, save_path=None,show = False,add_county_line = False):</font></strong><br />
根据输入的站点观测数据和网格预报数据,绘制对比图 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明(上述三个函数参数意义和用法完全相同)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>sta_ob </font></strong></td>
<td style="text-align: left;">实况<a href="https://www.showdoc.cc/meteva?page_id=3975600580125986">站点数据</a>,数据中只能有单个起报时刻,单个时效的数据</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grd_fo </font></strong></td>
<td style="text-align: left;">预报<a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格数据</a>,数据中只能有单个起报时刻,单个时效的数据</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grade_list </font></strong></td>
<td style="text-align: left;">长度为7的列表,包含小雨、中雨、大雨、暴雨、大暴雨、特大暴雨以及一个降水上限值</td>
</tr>
<tr>
<td style="text-align: left;"><strong>save_path</strong></td>
<td style="text-align: left;">图片输出文件路径</td>
</tr>
<tr>
<td style="text-align: left;"><strong>show</strong></td>
<td style="text-align: left;">是否在屏幕显示图片,如果save_path 为None时,程序内部会自动将show设置True</td>
</tr>
<tr>
<td style="text-align: left;"><strong>add_county_line</strong></td>
<td style="text-align: left;">绘制底图时是否添加县界</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">无返回值</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong></p>
<pre><code class="language-python">#降水预报和实况的测试数据
grid0 = meb.grid([73,135,0.25],[18,55,0.25])
grd_fo = meb.read_griddata_from_micaps4(r&#039;H:\test_data\input\mpd\ec_rain24_BT19123008.024&#039;,grid = grid0)
meb.set_griddata_coords(grd_fo,gtime = [datetime.datetime(2019,12,30,8,0)],dtime_list= [24],member_list= [&quot;ECMWF&quot;])
sta = meb.read_stadata_from_micaps3(r&#039;H:\test_data\input\mpd\ob_rain24_BT19123108.000&#039;)
sta = meb.between_value_range(sta, 0, 1000)
sta_ob_rain03 = sta.copy()
meb.set_stadata_attrs(sta_ob_rain03,var_name = &quot;rain03&quot;)
sta_ob_rain24 = sta.copy()
meb.set_stadata_attrs(sta_ob_rain24,var_name = &quot;rain24&quot;)</code></pre>
<pre><code class="language-python">print(sta) #打印降水观测数据</code></pre>
<pre><code> level time dtime id lon lat data0
0 0 2019-12-31 08:00:00 0 45004 114.17 22.31 0.0
1 0 2019-12-31 08:00:00 0 45005 114.17 22.30 0.0
2 0 2019-12-31 08:00:00 0 45007 113.91 22.30 0.0
7 0 2019-12-31 08:00:00 0 45032 114.15 22.52 0.0
8 0 2019-12-31 08:00:00 0 45035 113.98 22.47 0.0
... ... ... ... ... ... ... ...
2736 0 2019-12-31 08:00:00 0 59981 112.33 16.83 0.0
2737 0 2019-12-31 08:00:00 0 59985 111.62 16.53 0.0
2738 0 2019-12-31 08:00:00 0 59993 114.22 10.21 0.4
2739 0 2019-12-31 08:00:00 0 59994 114.29 9.71 0.4
2740 0 2019-12-31 08:00:00 0 59996 114.50 9.91 0.0
[2444 rows x 7 columns]</code></pre>
<pre><code class="language-python">print(grd_fo) #打印降水预报数据</code></pre>
<pre><code>&lt;xarray.DataArray &#039;data0&#039; (member: 1, level: 1, time: 1, dtime: 1, lat: 149, lon: 249)&gt;
array([[[[[[0. , 0. , 0. , ..., 0.2, 0.4, 0.8],
[0. , 0. , 0. , ..., 0.4, 0.3, 1. ],
[0. , 0. , 0. , ..., 0.5, 0.5, 0.6],
...,
[0.5, 0.6, 0.7, ..., 5. , 5.9, 6.8],
[0.4, 0.5, 0.6, ..., 6.3, 7. , 7.4],
[0.3, 0.4, 0.4, ..., 6.2, 6.9, 8.2]]]]]])
Coordinates:
* member (member) &lt;U5 &#039;ECMWF&#039;
* level (level) float64 0.0
* time (time) datetime64[ns] 2019-12-30T08:00:00
* dtime (dtime) int32 24
* lat (lat) float64 18.0 18.25 18.5 18.75 19.0 ... 54.25 54.5 54.75 55.0
* lon (lon) float64 73.0 73.25 73.5 73.75 ... 134.2 134.5 134.8 135.0</code></pre>
<pre><code class="language-python">mpd.rain_comprehensive_chinaland_sg(sta_ob_rain03,grd_fo,grade_list = [0.1,4,13,25,60,120,500],show = True)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/9bb82b14deba94d3728fa593a835f2ff" alt="" /></p>
<pre><code class="language-python">grid_jx = meb.grid([113,119,0.25],[24,31,0.25])
grd_fo_jx = meb.interp_gg_linear(grd_fo,grid_jx)
print(grd_fo_jx)</code></pre>
<pre><code>&lt;xarray.DataArray &#039;data0&#039; (member: 1, level: 1, time: 1, dtime: 1, lat: 29, lon: 25)&gt;
array([[[[[[ 0. , 0. , 0. , 0. , 0. , 0.1, 0.1, 0. , 0. ,
0. , 0.1, 0.8, 2. , 6. , 1.2, 4.9, 1.6, 3.6,
3. , 2.9, 4. , 1.9, 4.4, 7.3, 13.5],
[ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0.3, 0.5, 0.8, 5.2, 3. , 2.8, 2.5,
5.2, 2.5, 2.2, 2.4, 3.5, 2.9, 6.1],
[ 0.1, 0.2, 0. , 0.1, 0. , 0. , 0.1, 0.1, 0. ,
0. , 0. , 0.1, 0.4, 0.8, 1.1, 2.5, 3.3, 6. ,
2.5, 9.1, 6. , 3. , 1.6, 3.7, 4.2],
[ 1.5, 0.2, 0. , 0.2, 0.1, 0.1, 0. , 0.1, 0. ,
0. , 0. , 0. , 0.2, 0.2, 0.1, 2. , 3.2, 4.9,
4.7, 3.2, 3.4, 6.7, 4. , 1.8, 1.7],
[ 3.8, 3.8, 1.4, 0.3, 0.1, 0. , 0.1, 0.1, 0.1,
0.1, 0. , 0.1, 0. , 0.1, 0.1, 2. , 0.2, 4.1,
8.9, 5.7, 0.9, 1.9, 5.3, 8.4, 2.7],
[ 2.9, 4.2, 2.4, 2.2, 2. , 0.4, 0.7, 0.6, 0.3,
0.2, 0.3, 0.3, 0.1, 0.1, 0.1, 0.1, 3.1, 0.4,
1.1, 8.7, 4.1, 3.5, 2. , 3.8, 5.5],
[ 4. , 1.8, 2.4, 3.7, 3.5, 1.6, 1.6, 1.5, 1.5,
1.6, 0.7, 0.5, 0.2, 0.2, 0.2, 0.1, 0.4, 0.4,
...
0.3, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.1,
0.3, 0.6, 0.8, 1.4, 2.3, 1.1, 1.8],
[ 0. , 0.1, 0. , 0.2, 0.6, 1.1, 1.1, 1.4, 0.9,
0.5, 0.1, 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0.5, 0.6, 0.1, 0.4, 0.6, 0.4],
[ 0. , 0. , 0. , 0. , 0.5, 0.2, 0.3, 0.4, 1. ,
1.8, 0.5, 0. , 0. , 0. , 0. , 0. , 0. , 0.2,
0.4, 0.5, 0.6, 0.8, 0.4, 0.3, 0.9],
[ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.2,
0.5, 0.6, 1.2, 0. , 0. , 0. , 0. , 0. , 0. ,
0.1, 0.2, 0.5, 1.1, 0.5, 0.9, 1.5],
[ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0.4, 0.4, 0. , 0. , 0. , 0. , 0. ,
0.1, 0.3, 0.2, 0.2, 0.3, 0.5, 0.3],
[ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0.1, 0.6, 0.2, 0. , 0. , 0. ,
0. , 0.1, 0. , 0. , 0.1, 0.2, 0.1],
[ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0.1, 0.2, 0.1, 0.7, 1.3, 1.1, 0.4, 0. , 0. ,
0. , 0.2, 0. , 0. , 0. , 0. , 0.1]]]]]])
Coordinates:
* member (member) &lt;U5 &#039;ECMWF&#039;
* level (level) float64 0.0
* time (time) datetime64[ns] 2019-12-30T08:00:00
* dtime (dtime) int32 24
* lat (lat) float64 24.0 24.25 24.5 24.75 25.0 ... 30.25 30.5 30.75 31.0
* lon (lon) float64 113.0 113.2 113.5 113.8 ... 118.2 118.5 118.8 119.0</code></pre>
<pre><code class="language-python">mpd.rain_comprehensive_sg(sta_ob_rain03,grd_fo_jx,grade_list = [0.1,4,13,25,60,120,500],show = True)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/4e90c0b49968cb27fc4a3676bd2cd47f" alt="" /></p>
<h2>24h降水预报和观测分布对比图</h2>
<p><strong><font face="黑体" color=blue size = 3>rain_24h_sg(sta_ob,grd_fo,save_path=None,show = False,add_county_line = False):</font></strong><br />
根据输入的站点观测数据和网格预报数据,绘制对比图 </p>
<h2>24h降水预报和观测分布综合对比图</h2>
<p><strong><font face="黑体" color=blue size = 3>rain_24h_comprehensive_sg(sta_ob,grd_fo, save_path=None,show = False,add_county_line = False): </font></strong><br />
根据输入的站点观测数据和网格预报数据,绘制对比图 </p>
<h2>24h降水预报和观测分布综合对比图(中国范围)</h2>
<p><strong><font face="黑体" color=blue size = 3>rain_24h_comprehensive_chinaland_sg(sta_ob,grd_fo, save_path=None,show = False,add_county_line = False):</font></strong><br />
根据输入的站点观测数据和网格预报数据,绘制对比图 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明(上述三个函数参数意义和用法完全相同)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>sta_ob </font></strong></td>
<td style="text-align: left;">实况<a href="https://www.showdoc.cc/meteva?page_id=3975600580125986">站点数据</a>,数据中只能有单个起报时刻,单个时效的数据</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grd_fo </font></strong></td>
<td style="text-align: left;">预报<a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格数据</a>,数据中只能有单个起报时刻,单个时效的数据</td>
</tr>
<tr>
<td style="text-align: left;"><strong>save_path</strong></td>
<td style="text-align: left;">图片输出文件路径</td>
</tr>
<tr>
<td style="text-align: left;"><strong>show</strong></td>
<td style="text-align: left;">是否在屏幕显示图片,如果save_path 为None时,程序内部会自动将show设置True</td>
</tr>
<tr>
<td style="text-align: left;"><strong>add_county_line</strong></td>
<td style="text-align: left;">绘制底图时是否添加县界</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">无返回值</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong></p>
<pre><code class="language-python">mpd.rain_24h_sg(sta_ob_rain24,grd_fo,r&quot;H:\test_data\output\mpd\program\rain_24h_sg.png&quot;,show = True)</code></pre>
<p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/f9621290a7bd7869beacd7891dcb3cf8?showdoc=.jpg" alt="" /></p>
<pre><code class="language-python">mpd.rain_24h_comprehensive_sg(sta_ob_rain24,grd_fo,r&quot;H:\test_data\output\mpd\program\rain_24h_comp.png&quot;,show = True)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/08727fe5bbfce48970a03f6578a5b85a" alt="" /></p>
<pre><code class="language-python">mpd.rain_24h_comprehensive_chinaland_sg(sta_ob_rain24,grd_fo,r&quot;H:\test_data\output\mpd\program\rain_24h_comp_c.png&quot;,show = True)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/4495ee48422397011ea90163e3b772e2" alt="" /></p>
<pre><code class="language-python">mpd.rain_24h_comprehensive_sg(sta_ob_rain24,grd_fo_jx,r&quot;H:\test_data\output\mpd\program\rain_24h_jx.png&quot;,show = True)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/9138e71a2882e083d32bebdbad3d5167" alt="" /></p>
<h2>24h主观落区和观测分布综合对比图</h2>
<p><strong><font face="黑体" color=blue size = 3>rain_comprehensive_sl(sta_ob,m14,map_extend,grade_list,save_path=None,show = False,dpi = 200,add_county_line = False,fontsize = None):</font></strong><br />
根据输入的站点观测数据和主观落区,绘制对比图 </p>
<h2>24h主观落区和观测分布综合对比图(中国范围)</h2>
<p><strong><font face="黑体" color=blue size = 3>rain_comprehensive_chinaland_sl(sta_ob,m14,grade_list, save_path=None,show = False,dpi = 200,add_county_line = False,point_size = None,fontsize = None):</font></strong><br />
根据输入的站点观测数据和主观落区,绘制对比图 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明(上述三个函数参数意义和用法完全相同)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>sta_ob </font></strong></td>
<td style="text-align: left;">实况<a href="https://www.showdoc.cc/meteva?page_id=3975600580125986">站点数据</a>,数据中只能有单个起报时刻,单个时效的数据</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>m14 </font></strong></td>
<td style="text-align: left;">读取micaps14文件所得的字典型变量</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>map_extend </font></strong></td>
<td style="text-align: left;">底图的范围,采用[slon,elon,slat,elat] 列表作为参数,也可也接受网格信息类变量作为地图范围的参数,注意该参数仅rain_comprehensive_sl 函数包含</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grade_list </font></strong></td>
<td style="text-align: left;">需要检验的落区等值线的等级</td>
</tr>
<tr>
<td style="text-align: left;"><strong>save_path</strong></td>
<td style="text-align: left;">图片输出文件路径</td>
</tr>
<tr>
<td style="text-align: left;"><strong>show</strong></td>
<td style="text-align: left;">是否在屏幕显示图片,如果save_path 为None时,程序内部会自动将show设置True</td>
</tr>
<tr>
<td style="text-align: left;"><strong>dpi</strong></td>
<td style="text-align: left;">输出图片的dpi</td>
</tr>
<tr>
<td style="text-align: left;"><strong>add_county_line</strong></td>
<td style="text-align: left;">绘制底图时是否添加县界</td>
</tr>
<tr>
<td style="text-align: left;"><strong>point_size</strong></td>
<td style="text-align: left;">散点的大小</td>
</tr>
<tr>
<td style="text-align: left;"><strong>fontsize</strong></td>
<td style="text-align: left;">等值线标注的大小</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">无返回值</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong></p>
<pre><code class="language-python">path = r&quot;H:\test_data\input\mpd\rr073008.024&quot;
time1 = datetime.datetime(2021,1,5,8,0)
m14 = meb.read_micaps14(path,time = time1,dtime = 24,data_name = &quot;主观落区&quot;)
station = meb.read_station(meb.station_国家站)
sta = meb.read_stadata_from_micaps3(r&quot;H:\test_data\input\mpd\ob21053108.000&quot;,station = station)
meb.set_stadata_names(sta,[&quot;rr&quot;])
sta = meb.sele_by_para(sta,value = [0,500])
grade_list = [0.1,10,25,50,100,250,1000]
mpd.rain_comprehensive_chinaland_sl(sta,m14,grade_list = grade_list,dpi = 300,point_size = 3,fontsize = 8)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=bc62f95290d908da2522925f13a46d1a" alt="" /></p>
<pre><code class="language-python">mpd.rain_comprehensive_sl(sta,m14,map_extend = [110,120,20,30],grade_list = grade_list)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=2ffa307771c900b40a621ea83446e017" alt="" /></p>
<h1>温度预报观测对比图(gg)</h1>
<p><strong><font face="黑体" color=blue size = 4>temper_gg(grd_ob,grd_fo,save_path = None,show = False,add_county_line = False,unit = "c",ob_name = "实况",fo_name = "预报"): </font></strong><br />
根据输入的站点观测数据和预报数据,绘制对比图 </p>
<h1>温度预报观测综合对比图(gg)</h1>
<p><strong><font face="黑体" color=blue size = 4> temper_comprehensive_gg(grd_ob,grd_fo,save_path = None,show = False,add_county_line = False,unit = "c",ob_name = "实况",fo_name = "预报"):</font></strong><br />
根据输入的观测数据和预报数据,绘制对比图 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明(上述两个函数参数意义和用法完全相同)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grd_ob</font></strong></td>
<td style="text-align: left;">实况<a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格数据</a>,数据中只能有单个起报时刻,单个时效的数据</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grd_fo</font></strong></td>
<td style="text-align: left;">预报<a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格数据</a>,数据中只能有单个起报时刻,单个时效的数据</td>
</tr>
<tr>
<td style="text-align: left;"><strong>save_path</strong></td>
<td style="text-align: left;">图片输出文件路径</td>
</tr>
<tr>
<td style="text-align: left;"><strong>show</strong></td>
<td style="text-align: left;">是否在屏幕显示图片,如果save_path 为None时,程序内部会自动将show设置True</td>
</tr>
<tr>
<td style="text-align: left;"><strong>add_county_line</strong></td>
<td style="text-align: left;">绘制底图时是否添加县界</td>
</tr>
<tr>
<td style="text-align: left;"><strong>unit</strong></td>
<td style="text-align: left;">温度的单位,默认时温度colorbar以摄氏度作为单位,覆盖范围为-50℃到44℃,若utint = "k",则以开尔文温度作为单位,colorbar的覆盖范围为223.15k 到 317.15k</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ob_name</strong></td>
<td style="text-align: left;">观测场的名称,将在左上角子图和右侧子图的标注中出现</td>
</tr>
<tr>
<td style="text-align: left;"><strong>fo_name</strong></td>
<td style="text-align: left;">预报场的名称,将在左下角子图和右侧子图的标注中出现</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">无返回值</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong></p>
<pre><code class="language-python">grd_fo48 = meb.read_griddata_from_nc(r&#039;H:\test_data\input\mpd\grapes_t2m_BT20020108.048.nc&#039;,
grid = grid0,time = &quot;2020020108&quot;,dtime = 48,data_name = &quot;GRAPES_GFS&quot;)
grd_fo00 = meb.read_griddata_from_nc(r&#039;H:\test_data\input\mpd\grapes_t2m_BT20020308.000.nc&#039;,
grid = grid0,time = &quot;2020020308&quot;,dtime = 0,data_name = &quot;GRAPES_GFS&quot;)
mpd.temper_gg(grd_fo00,grd_fo48,r&quot;H:\test_data\output\mpd\program\temp.png&quot;,show = True)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/690f0add489e155b98efcfb076760317" alt="" /></p>
<pre><code class="language-python">mpd.temper_comprehensive_gg(grd_fo00,grd_fo48,r&quot;H:\test_data\output\mpd\program\temp_comp.png&quot;,show = True,
ob_name = &quot;分析&quot;,fo_name = &quot;零场&quot;)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/6ee09c2a2d9fc2eb319ac0a537e871d7" alt="" /></p>
<h1>温度预报观测对比图(sg)</h1>
<p><strong><font face="黑体" color=blue size = 4>temper_sg(sta_ob,grd_fo,save_path = None,show = False,add_county_line = False,unit = "c",ob_name = "观测",fo_name = "预报"): </font></strong><br />
根据输入的站点观测数据和预报数据,绘制对比图 </p>
<h1>温度预报观测综合对比图(sg)</h1>
<p><strong><font face="黑体" color=blue size = 4> temper_comprehensive_sg(sta_ob,grd_fo,save_path = None,show = False,add_county_line = False,unit = "c",ob_name = "观测",fo_name = "预报"):</font></strong><br />
根据输入的观测数据和预报数据,绘制对比图 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明(上述两个函数参数意义和用法完全相同)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>sta_ob</font></strong></td>
<td style="text-align: left;">实况<a href="https://www.showdoc.com.cn/meteva?page_id=3975600580125986">站点数据</a>,数据中只能有单个起报时刻,单个时效的数据</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grd_fo</font></strong></td>
<td style="text-align: left;">预报<a href="https://www.showdoc.cc/meteva?page_id=3975600815874861">网格数据</a>,数据中只能有单个起报时刻,单个时效的数据</td>
</tr>
<tr>
<td style="text-align: left;"><strong>save_path</strong></td>
<td style="text-align: left;">图片输出文件路径</td>
</tr>
<tr>
<td style="text-align: left;"><strong>show</strong></td>
<td style="text-align: left;">是否在屏幕显示图片,如果save_path 为None时,程序内部会自动将show设置True</td>
</tr>
<tr>
<td style="text-align: left;"><strong>add_county_line</strong></td>
<td style="text-align: left;">绘制底图时是否添加县界</td>
</tr>
<tr>
<td style="text-align: left;"><strong>unit</strong></td>
<td style="text-align: left;">温度的单位,默认时温度colorbar以摄氏度作为单位,覆盖范围为-50℃到44℃,若utint = "k",则以开尔文温度作为单位,colorbar的覆盖范围为223.15k 到 317.15k</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ob_name</strong></td>
<td style="text-align: left;">观测场的名称,将在左上角子图和右侧子图的标注中出现</td>
</tr>
<tr>
<td style="text-align: left;"><strong>fo_name</strong></td>
<td style="text-align: left;">预报场的名称,将在左下角子图和右侧子图的标注中出现</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">无返回值</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong></p>
<pre><code class="language-python">station = meb.read_station(meb.station_国家站)
sta_fo00 = meb.interp_gs_linear(grd_fo00,station)
mpd.temper_sg(sta_fo00,grd_fo48,r&quot;H:\test_data\output\mpd\program\temp_comp_sg.png&quot;,show = True)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/8a9dbfa8a56e7834b6bcc1042bbe1309" alt="" /></p>
<pre><code class="language-python">mpd.temper_comprehensive_sg(sta_fo00,grd_fo48,r&quot;H:\test_data\output\mpd\program\temp_comp_sg.png&quot;,show = True)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/2ed74ce6f2aa4a02ff2268662265ecbd" alt="" /></p>
<h1>温度预报观测对比图(ss)</h1>
<p><strong><font face="黑体" color=blue size = 4>temper_ss(sta_ob,sta_fo,save_path = None,show = False,add_county_line = False,unit = "c",ob_name = "观测",fo_name = "预报"): </font></strong><br />
根据输入的站点观测数据和预报数据,绘制对比图 </p>
<h1>温度预报观测综合对比图(ss)</h1>
<p><strong><font face="黑体" color=blue size = 4> temper_comprehensive_ss(sta_ob,sta_fo,save_path = None,show = False,add_county_line = False,unit = "c",ob_name = "观测",fo_name = "预报"):</font></strong>
根据输入的观测数据和预报数据,绘制对比图 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: left;">说明(上述两个函数参数意义和用法完全相同)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>sta_ob</font></strong></td>
<td style="text-align: left;">实况<a href="https://www.showdoc.com.cn/meteva?page_id=3975600580125986">站点数据</a>,数据中只能有单个起报时刻,单个时效的数据</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>sta_fo</font></strong></td>
<td style="text-align: left;">预报<a href="https://www.showdoc.com.cn/meteva?page_id=3975600580125986">站点数据</a>,数据中只能有单个起报时刻,单个时效的数据</td>
</tr>
<tr>
<td style="text-align: left;"><strong>save_path</strong></td>
<td style="text-align: left;">图片输出文件路径</td>
</tr>
<tr>
<td style="text-align: left;"><strong>show</strong></td>
<td style="text-align: left;">是否在屏幕显示图片,如果save_path 为None时,程序内部会自动将show设置True</td>
</tr>
<tr>
<td style="text-align: left;"><strong>add_county_line</strong></td>
<td style="text-align: left;">绘制底图时是否添加县界</td>
</tr>
<tr>
<td style="text-align: left;"><strong>unit</strong></td>
<td style="text-align: left;">温度的单位,默认时温度colorbar以摄氏度作为单位,覆盖范围为-50℃到44℃,若utint = "k",则以开尔文温度作为单位,colorbar的覆盖范围为223.15k 到 317.15k</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ob_name</strong></td>
<td style="text-align: left;">观测场的名称,将在左上角子图和右侧子图的标注中出现</td>
</tr>
<tr>
<td style="text-align: left;"><strong>fo_name</strong></td>
<td style="text-align: left;">预报场的名称,将在左下角子图和右侧子图的标注中出现</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">无返回值</td>
</tr>
</tbody>
</table>
<p><strong>调用示例:</strong></p>
<pre><code class="language-python">station = meb.read_station(meb.station_国家站)
sta_fo00 = meb.interp_gs_linear(grd_fo00,station)
sta_fo48 = meb.interp_gs_linear(grd_fo48,station)
mpd.temper_ss(sta_fo00,sta_fo48,r&quot;H:\test_data\output\mpd\program\temp_comp_ss.png&quot;,show = True)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/53f93a88a6554f8a3ec396f829d704b4" alt="" /></p>
<pre><code class="language-python">mpd.temper_comprehensive_ss(sta_fo00,sta_fo48,r&quot;H:\test_data\output\mpd\program\temp_comp_ss.png&quot;,show = True)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/30650fd2ed668656591765eddc29c78e" alt="" /></p>
<pre><code class="language-python"></code></pre>