转换
<p>[TOC]</p>
<pre><code class="language-python">%matplotlib inline
%load_ext autoreload
%autoreload 2
import meteva.base as meb
import numpy as np
import datetime</code></pre>
<p>生成示例数据</p>
<pre><code class="language-python">grid0 = meb.grid([100,104,1],[20,22,1],gtime=[&quot;2019013008&quot;],dtime_list = [24],level_list = [0],member_list = [&quot;GRAPES&quot;,&quot;EC&quot;])
x= np.arange(5)
y= np.arange(3)
dat = np.array(np.meshgrid(x,y))
grd = meb.grid_data(grid0,dat)   #根据网格信息和numpy数组生成网格数
print(grd)</code></pre>
<pre><code>&lt;xarray.DataArray &#039;data0&#039; (member: 2, level: 1, time: 1, dtime: 1, lat: 3,
                           lon: 5)&gt; Size: 240B
array([[[[[[0, 1, 2, 3, 4],
           [0, 1, 2, 3, 4],
           [0, 1, 2, 3, 4]]]]],
       [[[[[0, 0, 0, 0, 0],
           [1, 1, 1, 1, 1],
           [2, 2, 2, 2, 2]]]]]])
Coordinates:
  * member   (member) &lt;U6 48B &#039;GRAPES&#039; &#039;EC&#039;
  * level    (level) int64 8B 0
  * time     (time) datetime64[ns] 8B 2019-01-30T08:00:00
  * dtime    (dtime) int64 8B 24
  * lat      (lat) int64 24B 20 21 22
  * lon      (lon) int64 40B 100 101 102 103 104</code></pre>
<h1>网格数据转站点数据</h1>
<p><font face="黑体" color=blue size = 5><strong>trans_grd_to_sta(grd)</strong></font>  </p>
<p>将网格数据转换为站点数据,</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</font></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;"><a href="https://www.showdoc.cc/meteva?page_id=3975600580125986">站点数据</a>,每一行数据的levl,time,dtime lon,lat等列属性由对应网格点的level,time,dtime,lon,lat等维度的坐标来赋值,id列为顺序生成的整数赋值,第6列之后的数据列赋值为网格数据中相同时空坐标的不同member的值</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong></p>
<pre><code class="language-python">sta = meb.fun.trans_grd_to_sta(grd)
print(sta)</code></pre>
<pre><code>    level                time  dtime  id    lon   lat  GRAPES   EC
0       0 2019-01-30 08:00:00     24   0  100.0  20.0     0.0  0.0
1       0 2019-01-30 08:00:00     24   1  101.0  20.0     1.0  0.0
2       0 2019-01-30 08:00:00     24   2  102.0  20.0     2.0  0.0
3       0 2019-01-30 08:00:00     24   3  103.0  20.0     3.0  0.0
4       0 2019-01-30 08:00:00     24   4  104.0  20.0     4.0  0.0
5       0 2019-01-30 08:00:00     24   5  100.0  21.0     0.0  1.0
6       0 2019-01-30 08:00:00     24   6  101.0  21.0     1.0  1.0
7       0 2019-01-30 08:00:00     24   7  102.0  21.0     2.0  1.0
8       0 2019-01-30 08:00:00     24   8  103.0  21.0     3.0  1.0
9       0 2019-01-30 08:00:00     24   9  104.0  21.0     4.0  1.0
10      0 2019-01-30 08:00:00     24  10  100.0  22.0     0.0  2.0
11      0 2019-01-30 08:00:00     24  11  101.0  22.0     1.0  2.0
12      0 2019-01-30 08:00:00     24  12  102.0  22.0     2.0  2.0
13      0 2019-01-30 08:00:00     24  13  103.0  22.0     3.0  2.0
14      0 2019-01-30 08:00:00     24  14  104.0  22.0     4.0  2.0</code></pre>
<pre><code class="language-python">sta1 = meb.read_stadata_from_micaps3(meb.station_国家站)
import pandas as pd
sta_all = meb.combine_on_obTime_id(sta1,[sta])
print(sta_all)</code></pre>
<pre><code>    level                time  dtime  id    lon   lat     data0  GRAPES   EC
0       0 2019-01-30 08:00:00     24   0  100.0  20.0  999999.0     0.0  0.0
1       0 2019-01-30 08:00:00     24   1  101.0  20.0  999999.0     1.0  0.0
2       0 2019-01-30 08:00:00     24   2  102.0  20.0  999999.0     2.0  0.0
3       0 2019-01-30 08:00:00     24   3  103.0  20.0  999999.0     3.0  0.0
4       0 2019-01-30 08:00:00     24   4  104.0  20.0  999999.0     4.0  0.0
5       0 2019-01-30 08:00:00     24   5  100.0  21.0  999999.0     0.0  1.0
6       0 2019-01-30 08:00:00     24   6  101.0  21.0  999999.0     1.0  1.0
7       0 2019-01-30 08:00:00     24   7  102.0  21.0  999999.0     2.0  1.0
8       0 2019-01-30 08:00:00     24   8  103.0  21.0  999999.0     3.0  1.0
9       0 2019-01-30 08:00:00     24   9  104.0  21.0  999999.0     4.0  1.0
10      0 2019-01-30 08:00:00     24  10  100.0  22.0  999999.0     0.0  2.0
11      0 2019-01-30 08:00:00     24  11  101.0  22.0  999999.0     1.0  2.0
12      0 2019-01-30 08:00:00     24  12  102.0  22.0  999999.0     2.0  2.0
13      0 2019-01-30 08:00:00     24  13  103.0  22.0  999999.0     3.0  2.0
14      0 2019-01-30 08:00:00     24  14  104.0  22.0  999999.0     4.0  2.0</code></pre>
<h1>规则站点数据转网格数据</h1>
<p><font face="黑体" color=blue size = 5><strong>trans_sta_to_grd(grd)</strong></font><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</font></strong></td>
<td style="text-align: left;">站点数据,其中站点的经度、纬度、时间等维度size = 1 或者为等间距的</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">网格数据,其中网格范围是能够包含sta所涉及到的时空范围的最小网格,网格间距或列表有sta中的数据的时空信息列计算得出,member 维对应站点的第6列之后的列名称。网格中的每个格点数据根据时空坐标信息在站点数据中找到对应的行进行赋值,如果找不到对应的行,则赋值为缺省值0.</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong></p>
<pre><code class="language-python">grd1 = meb.trans_sta_to_grd(sta)
print(grd1)</code></pre>
<pre><code>&lt;xarray.DataArray &#039;data0&#039; (member: 2, level: 1, time: 1, dtime: 1, lat: 3,
                           lon: 5)&gt; Size: 240B
array([[[[[[0., 1., 2., 3., 4.],
           [0., 1., 2., 3., 4.],
           [0., 1., 2., 3., 4.]]]]],
       [[[[[0., 0., 0., 0., 0.],
           [1., 1., 1., 1., 1.],
           [2., 2., 2., 2., 2.]]]]]])
Coordinates:
  * member   (member) &lt;U6 48B &#039;GRAPES&#039; &#039;EC&#039;
  * level    (level) int64 8B 0
  * time     (time) datetime64[ns] 8B 2019-01-30T08:00:00
  * dtime    (dtime) int64 8B 24
  * lat      (lat) float64 24B 20.0 21.0 22.0
  * lon      (lon) float64 40B 100.0 101.0 102.0 103.0 104.0</code></pre>
<h1>等值线数据转站点数据</h1>
<p><font face="黑体" color=blue size = 5><strong>trans_contours_to_sta(m14,station,grade_list)</strong></font><br />
根据一组micasp14类格式的闭合等值线和站点的位置关系,判断每个站点所在位置的数值。 </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>m14</font></strong></td>
<td style="text-align: left;">读入m14类等值线数据后获得的自典型数据</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>station</font></strong></td>
<td style="text-align: left;">站点信息数据,站点数据格式</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;">m14格式的数据中可能包含一些不需要参与反演的等值线,为此需指定参与反演的等值线等级</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">站点数据,长度和station一致,数据列为反演结果</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_国家站)
grade_list = [0.1,10,25,50,100,250,1000]  
sta_from_contours = meb.trans_contours_to_sta(m14,station,grade_list=grade_list)
print(sta_from_contours)</code></pre>
<pre><code>      level                time  dtime     id     lon    lat  data0
0       0.0 2099-01-01 08:00:00      0  50136  122.52  52.97    0.0
1       0.0 2099-01-01 08:00:00      0  50137  122.37  53.47    0.0
2       0.0 2099-01-01 08:00:00      0  50246  124.72  52.35    0.0
3       0.0 2099-01-01 08:00:00      0  50247  123.57  52.03    0.0
4       0.0 2099-01-01 08:00:00      0  50349  124.40  51.67    0.0
...     ...                 ...    ...    ...     ...    ...    ...
2406    0.0 2099-01-01 08:00:00      0  59945  109.70  18.65    0.1
2407    0.0 2099-01-01 08:00:00      0  59948  109.58  18.22    0.1
2408    0.0 2099-01-01 08:00:00      0  59951  110.33  18.80   10.0
2409    0.0 2099-01-01 08:00:00      0  59954  110.03  18.55    0.1
2410    0.0 2099-01-01 08:00:00      0  59981  112.33  16.83    0.1
[2411 rows x 7 columns]</code></pre>
<h1>等值线数据转格点数据</h1>
<p><font face="黑体" color=blue size = 5><strong>trans_contours_to_grd(m14,grid,grade_list)</strong></font><br />
根据一组micasp14类格式的闭合等值线和站点的位置关系,判断每个格点所在位置的数值。 </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>m14</font></strong></td>
<td style="text-align: left;">读入m14类等值线数据后获得的自典型数据</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>grid</font></strong></td>
<td style="text-align: left;">网格信息数据</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;">m14格式的数据中可能包含一些不需要参与反演的等值线,为此需指定参与反演的等值线等级</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">格点数据,网格范围和分辨率由grid参数定义,数据列为反演结果</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong></p>
<pre><code class="language-python">grid0 = meb.grid([70,140,0.5],[15,55,0.5])
grd = meb.trans_contours_to_grd(m14,grid0,grade_list=grade_list)
meb.contourf_xy(grd,cmap = &quot;rain_24h&quot;)
</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=a5da58c7137a2c1d8d2c22dfafb71534&amp;file=file.png" alt="" /></p>
<h1>平移数据时间时效</h1>
<p><font face="黑体" color=blue size = 5><strong>move_fo_time(data,dtime,keep_minus_dtime = True)</strong></font><br />
在检验时,业务发布的主观预报和精细化网格预报制作时能够参考到的数值模式预报通常是6小时或12小时前起报的结果。为了定量对比网格预报相对数值模式预报的改进效果,经常需要将模式数据的时间时效进行平移,例如将 2021010108.036 的预报数据 平移后记为 2021010120.024</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>data</font></strong></td>
<td style="text-align: left;"><a href="https://www.showdoc.cc/nmc?page_id=3744334022014027">站点数据</a> 或<a href="https://www.showdoc.com.cn/meteva/3975600815874861">网格数据</a></td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>dtime</font></strong></td>
<td style="text-align: left;">平移的小时数,例如当dtime = 12时,可将2021年1月1日08时起报的36小时预报,平移成2021年1月1日20时的24小时预报</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>keep_minus_dtime</font></strong></td>
<td style="text-align: left;">003时效平移12小时后会成为-009时效,如果keep_minus_dtime=True,则时效为负的数据会被保留,如果keep_minus_dtime=False,则平移后时效为负的数据会被删除</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;"><a href="https://www.showdoc.cc/nmc?page_id=3744334022014027">站点数据</a> 或<a href="https://www.showdoc.com.cn/meteva/3975600815874861">网格数据</a></td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong></p>
<pre><code class="language-python">sta_fo = meb.sta_data(pd.DataFrame({&quot;level&quot;:np.zeros(10),
        &quot;time&quot;:datetime.datetime(2020,7,1,8),&quot;dtime&quot;:np.arange(6,61,6),
        &quot;id&quot;:np.ones(10),&quot;lon&quot;:np.ones(10),&quot;lat&quot;:np.ones(10),&quot;ec&quot;:np.arange(10)}))
print(sta_fo)</code></pre>
<pre><code>   level                time  dtime  id  lon  lat  ec
0    0.0 2020-07-01 08:00:00      6   1  1.0  1.0   0
1    0.0 2020-07-01 08:00:00     12   1  1.0  1.0   1
2    0.0 2020-07-01 08:00:00     18   1  1.0  1.0   2
3    0.0 2020-07-01 08:00:00     24   1  1.0  1.0   3
4    0.0 2020-07-01 08:00:00     30   1  1.0  1.0   4
5    0.0 2020-07-01 08:00:00     36   1  1.0  1.0   5
6    0.0 2020-07-01 08:00:00     42   1  1.0  1.0   6
7    0.0 2020-07-01 08:00:00     48   1  1.0  1.0   7
8    0.0 2020-07-01 08:00:00     54   1  1.0  1.0   8
9    0.0 2020-07-01 08:00:00     60   1  1.0  1.0   9</code></pre>
<pre><code class="language-python">sta_fo_moved12 = meb.move_fo_time(sta_fo,12)
print(sta_fo_moved12) #时间平移后预报数据</code></pre>
<pre><code>   level                time  dtime  id  lon  lat  ec
0    0.0 2020-07-01 20:00:00     -6   1  1.0  1.0   0
1    0.0 2020-07-01 20:00:00      0   1  1.0  1.0   1
2    0.0 2020-07-01 20:00:00      6   1  1.0  1.0   2
3    0.0 2020-07-01 20:00:00     12   1  1.0  1.0   3
4    0.0 2020-07-01 20:00:00     18   1  1.0  1.0   4
5    0.0 2020-07-01 20:00:00     24   1  1.0  1.0   5
6    0.0 2020-07-01 20:00:00     30   1  1.0  1.0   6
7    0.0 2020-07-01 20:00:00     36   1  1.0  1.0   7
8    0.0 2020-07-01 20:00:00     42   1  1.0  1.0   8
9    0.0 2020-07-01 20:00:00     48   1  1.0  1.0   9</code></pre>
<pre><code class="language-python">grd = meb.read_griddata_from_nc(r&quot;H:\test_data\input\meb\grd_sele_test.nc&quot;)
print(grd)</code></pre>
<pre><code>&lt;xarray.DataArray &#039;data0&#039; (member: 3, level: 1, time: 10, dtime: 4, lat: 81,
                           lon: 101)&gt; Size: 8MB
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]]]]]],
      shape=(3, 1, 10, 4, 81, 101))
Coordinates:
  * member   (member) &lt;U7 84B &#039;ECMWF&#039; &#039;网格预报指导报&#039; &#039;国省融合预报&#039;
  * level    (level) float64 8B 0.0
  * time     (time) datetime64[ns] 80B 2021-07-15T20:00:00 ... 2021-07-20T08:...
  * dtime    (dtime) int32 16B 24 48 72 96
  * lat      (lat) float64 648B 30.0 30.1 30.2 30.3 30.4 ... 37.7 37.8 37.9 38.0
  * lon      (lon) float64 808B 108.0 108.1 108.2 108.3 ... 117.8 117.9 118.0
Attributes:
    dtime_units:  hour</code></pre>
<pre><code class="language-python">grd1 = meb.move_fo_time(grd,dtime = 12)
print(grd1)</code></pre>
<pre><code>&lt;xarray.DataArray &#039;data0&#039; (member: 3, level: 1, time: 10, dtime: 4, lat: 81,
                           lon: 101)&gt; Size: 8MB
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]]]]]],
      shape=(3, 1, 10, 4, 81, 101))
Coordinates:
  * member   (member) &lt;U7 84B &#039;ECMWF&#039; &#039;网格预报指导报&#039; &#039;国省融合预报&#039;
  * level    (level) float64 8B 0.0
  * lat      (lat) float64 648B 30.0 30.1 30.2 30.3 30.4 ... 37.7 37.8 37.9 38.0
  * lon      (lon) float64 808B 108.0 108.1 108.2 108.3 ... 117.8 117.9 118.0
  * time     (time) datetime64[ns] 80B 2021-07-16T08:00:00 ... 2021-07-20T20:...
  * dtime    (dtime) int32 16B 12 36 60 84
Attributes:
    dtime_units:  hour</code></pre>
<h1>添加0时效</h1>
<p><font face="黑体" color=blue size = 5><strong>add_dtime_0(data)</strong></font><br />
在根据累计降水量计算逐时段降水量时,如果累计降水量不包含0时效的变量,则不方便计算,此时可以通过该函数添加上取值为0时效为0的数据</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>data</font></strong></td>
<td style="text-align: left;"><a href="https://www.showdoc.cc/nmc?page_id=3744334022014027">站点数据</a> 或<a href="https://www.showdoc.com.cn/meteva/3975600815874861">网格数据</a></td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;"><a href="https://www.showdoc.cc/nmc?page_id=3744334022014027">站点数据</a> 或<a href="https://www.showdoc.com.cn/meteva/3975600815874861">网格数据</a></td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong></p>
<pre><code class="language-python">grd2 = meb.add_dtime_0(grd1)
print(grd2)</code></pre>
<pre><code>&lt;xarray.DataArray &#039;data0&#039; (member: 3, level: 1, time: 10, dtime: 5, lat: 81,
                           lon: 101)&gt; Size: 10MB
array([[[[[[ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00, ...,
             0.00000000e+00,  0.00000000e+00,  0.00000000e+00],
           [ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00, ...,
             0.00000000e+00,  0.00000000e+00,  0.00000000e+00],
           [ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00, ...,
             0.00000000e+00,  0.00000000e+00,  0.00000000e+00],
           ...,
           [ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00, ...,
             0.00000000e+00,  0.00000000e+00,  0.00000000e+00],
           [ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00, ...,
             0.00000000e+00,  0.00000000e+00,  0.00000000e+00],
           [ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00, ...,
             0.00000000e+00,  0.00000000e+00,  0.00000000e+00]],
          [[ 2.59400000e+00,  2.88400000e+00,  1.60200000e+00, ...,
             7.60000000e-02,  3.21000000e-01,  4.58000000e-01],
           [ 4.63900000e+00,  5.85900000e+00,  9.62000000e-01, ...,
             1.60000000e-02,  2.59000000e-01,  8.24000000e-01],
           [ 6.62200000e+00,  3.31100000e+00,  1.81500000e+00, ...,
             5.40012479e-16,  4.50000000e-02,  4.12000000e-01],
...
             0.00000000e+00,  0.00000000e+00,  0.00000000e+00],
           [ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00, ...,
             0.00000000e+00,  0.00000000e+00,  0.00000000e+00],
           [ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00, ...,
             0.00000000e+00,  0.00000000e+00,  0.00000000e+00]],
          [[ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00, ...,
             0.00000000e+00,  0.00000000e+00,  0.00000000e+00],
           [ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00, ...,
             0.00000000e+00,  0.00000000e+00,  0.00000000e+00],
           [ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00, ...,
             0.00000000e+00,  0.00000000e+00,  0.00000000e+00],
           ...,
           [ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00, ...,
             0.00000000e+00,  0.00000000e+00,  0.00000000e+00],
           [ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00, ...,
             0.00000000e+00,  0.00000000e+00,  0.00000000e+00],
           [ 0.00000000e+00,  0.00000000e+00,  0.00000000e+00, ...,
             0.00000000e+00,  0.00000000e+00,  0.00000000e+00]]]]]],
      shape=(3, 1, 10, 5, 81, 101))
Coordinates:
  * member   (member) &lt;U7 84B &#039;ECMWF&#039; &#039;网格预报指导报&#039; &#039;国省融合预报&#039;
  * level    (level) float64 8B 0.0
  * time     (time) datetime64[ns] 80B 2021-07-16T08:00:00 ... 2021-07-20T20:...
  * dtime    (dtime) int64 40B 0 12 36 60 84
  * lat      (lat) float64 648B 30.0 30.1 30.2 30.3 30.4 ... 37.7 37.8 37.9 38.0
  * lon      (lon) float64 808B 108.0 108.1 108.2 108.3 ... 117.8 117.9 118.0</code></pre>
<h1>世界时转当地时(自然时区)</h1>
<p><font face="黑体" color=blue size = 5><strong>tran_ut_local_time(sta)</strong></font><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>data</font></strong></td>
<td style="text-align: left;"><a href="https://www.showdoc.cc/nmc?page_id=3744334022014027">站点数据</a>  ,数据中的time列中可以包含单个或多种取值,即数据数据可以是多个时刻数据拼接的结果</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">time列取值转换后的<a href="https://www.showdoc.cc/nmc?page_id=3744334022014027">站点数据</a></td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong></p>
<pre><code class="language-python">station = meb.read_station(meb.station_全球重点城市)
path = r&quot;H:\test_data\input\meb\temp_ut_2022080800.000&quot;
temp_ut = meb.read_sta_alt_from_micaps3(path,station=station)
print(temp_ut)</code></pre>
<pre><code>     level       time  dtime       id     lon    lat   alt
0      0.0 2022-08-08      0     1492   11.20  60.58  94.0
1      0.0 2022-08-08      0     2464   18.58  59.58  14.3
2      0.0 2022-08-08      0     2974   25.62  60.53  51.0
3      0.0 2022-08-08      0     3334  358.20  53.58   0.0
4      0.0 2022-08-08      0     3772  359.92  51.70  25.0
..     ...        ...    ...      ...     ...    ...   ...
238    0.0 2022-08-08      0  7105022  190.45 -19.03   0.0
239    0.0 2022-08-08      0  7105023  301.90   6.46   0.0
240    0.0 2022-08-08      0  7105024   15.14  -4.14   0.0
241    0.0 2022-08-08      0  7105025   13.20  -8.50   0.0
242    0.0 2022-08-08      0  7105026  298.77  15.18   0.0
[243 rows x 7 columns]</code></pre>
<pre><code class="language-python">temp_nature_local_time = meb.tran_ut_nature_local_time(temp_ut)
print(temp_nature_local_time)</code></pre>
<pre><code>     level                time  dtime       id     lon    lat   alt
0      0.0 2022-08-08 01:00:00      0     1492   11.20  60.58  94.0
1      0.0 2022-08-08 01:00:00      0     2464   18.58  59.58  14.3
2      0.0 2022-08-08 02:00:00      0     2974   25.62  60.53  51.0
3      0.0 2022-08-08 00:00:00      0     3334  358.20  53.58   0.0
4      0.0 2022-08-08 00:00:00      0     3772  359.92  51.70  25.0
..     ...                 ...    ...      ...     ...    ...   ...
238    0.0 2022-08-07 13:00:00      0  7105022  190.45 -19.03   0.0
239    0.0 2022-08-07 20:00:00      0  7105023  301.90   6.46   0.0
240    0.0 2022-08-08 01:00:00      0  7105024   15.14  -4.14   0.0
241    0.0 2022-08-08 01:00:00      0  7105025   13.20  -8.50   0.0
242    0.0 2022-08-07 20:00:00      0  7105026  298.77  15.18   0.0
[243 rows x 7 columns]</code></pre>
<h1>世界时转当地时(行政时区)</h1>
<p><font face="黑体" color=blue size = 5><strong>tran_ut_Administrative_local_time(sta)</strong></font><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>data</font></strong></td>
<td style="text-align: left;"><a href="https://www.showdoc.cc/nmc?page_id=3744334022014027">站点数据</a> ,数据中的time列中可以包含单个或多种取值,即数据数据可以是多个时刻数据拼接的结果</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">time列取值转换后的<a href="https://www.showdoc.cc/nmc?page_id=3744334022014027">站点数据</a></td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong></p>
<pre><code class="language-python">#读取每个站点的行政时区数值
path = r&quot;H:\task\develop\python\git\meteva_\build\lib\meteva\resources\stations\site_timezone_245.txt&quot;
timezone = pd.read_csv(path,header=None,sep = &quot;\s+&quot;)
timezone.columns=[&quot;id&quot;,&quot;zone&quot;]
print(timezone)  #打印各站号对应的行政时区数值</code></pre>
<pre><code>         id  zone
0    001492     1
1    002464     1
2    002974     2
3    003334     0
4    003772     0
..      ...   ...
240  G05023    -5
241  G05024     1
242  G05025     1
243  G05026    -4
244  043003     5
[245 rows x 2 columns]</code></pre>
<pre><code class="language-python">temp_admin_local_time = meb.tran_ut_Administrative_local_time(temp_ut,timezone)
print(temp_admin_local_time)  </code></pre>
<pre><code>     level                time  dtime       id     lon    lat   alt
0      0.0 2022-08-08 01:00:00      0     1492   11.20  60.58  94.0
1      0.0 2022-08-08 01:00:00      0     2464   18.58  59.58  14.3
2      0.0 2022-08-08 02:00:00      0     2974   25.62  60.53  51.0
3      0.0 2022-08-08 00:00:00      0     3334  358.20  53.58   0.0
4      0.0 2022-08-08 00:00:00      0     3772  359.92  51.70  25.0
..     ...                 ...    ...      ...     ...    ...   ...
238    0.0 2022-08-07 13:00:00      0  7105022  190.45 -19.03   0.0
239    0.0 2022-08-07 19:00:00      0  7105023  301.90   6.46   0.0
240    0.0 2022-08-08 01:00:00      0  7105024   15.14  -4.14   0.0
241    0.0 2022-08-08 01:00:00      0  7105025   13.20  -8.50   0.0
242    0.0 2022-08-07 20:00:00      0  7105026  298.77  15.18   0.0
[243 rows x 7 columns]</code></pre>