转换
<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 'data0' (member: 2, level: 1, time: 1, dtime: 1, lat: 3, lon: 5)&gt;
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 'GRAPES' 'EC'
* level (level) int32 0
* time (time) datetime64[ns] 2019-01-30T08:00:00
* dtime (dtime) int32 24
* lat (lat) int32 20 21 22
* lon (lon) int32 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 'data0' (member: 2, level: 1, time: 1, dtime: 1, lat: 3, lon: 5)&gt;
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 'GRAPES' 'EC'
* level (level) int32 0
* time (time) datetime64[ns] 2019-01-30T08:00:00
* dtime (dtime) int32 24
* lat (lat) float64 20.0 21.0 22.0
* lon (lon) float64 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 2099-01-01 08:00:00 0 50136 122.52 52.97 0.0
1 0 2099-01-01 08:00:00 0 50137 122.37 53.47 0.0
2 0 2099-01-01 08:00:00 0 50246 124.72 52.35 0.0
3 0 2099-01-01 08:00:00 0 50247 123.57 52.03 0.0
4 0 2099-01-01 08:00:00 0 50349 124.40 51.67 0.0
... ... ... ... ... ... ... ...
2406 0 2099-01-01 08:00:00 0 59945 109.70 18.65 0.1
2407 0 2099-01-01 08:00:00 0 59948 109.58 18.22 0.1
2408 0 2099-01-01 08:00:00 0 59951 110.33 18.80 10.0
2409 0 2099-01-01 08:00:00 0 59954 110.03 18.55 0.1
2410 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>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 'data0' (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 'ECMWF' '网格预报指导报' '国省融合预报'
* 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">grd1 = meb.move_fo_time(grd,dtime = 12)
print(grd1)</code></pre>
<pre><code>&lt;xarray.DataArray 'data0' (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 'ECMWF' '网格预报指导报' '国省融合预报'
* level (level) float64 0.0
* time (time) datetime64[ns] 2021-07-16T08:00:00 ... 2021-07-20T20:00:00
* dtime (dtime) int32 12 36 60 84
* 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>
<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 'data0' (member: 3, level: 1, time: 10, dtime: 5, lat: 81, lon: 101)&gt;
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, ...,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]]]]])
Coordinates:
* member (member) &lt;U7 'ECMWF' '网格预报指导报' '国省融合预报'
* level (level) float64 0.0
* time (time) datetime64[ns] 2021-07-16T08:00:00 ... 2021-07-20T20:00:00
* dtime (dtime) int32 0 12 36 60 84
* 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>
<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 2022-08-08 0 1492 11.20 60.58 94.0
1 0 2022-08-08 0 2464 18.58 59.58 14.3
2 0 2022-08-08 0 2974 25.62 60.53 51.0
3 0 2022-08-08 0 3334 358.20 53.58 0.0
4 0 2022-08-08 0 3772 359.92 51.70 25.0
.. ... ... ... ... ... ... ...
238 0 2022-08-08 0 7105022 190.45 -19.03 0.0
239 0 2022-08-08 0 7105023 301.90 6.46 0.0
240 0 2022-08-08 0 7105024 15.14 -4.14 0.0
241 0 2022-08-08 0 7105025 13.20 -8.50 0.0
242 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 2022-08-08 01:00:00 0 1492 11.20 60.58 94.0
1 0 2022-08-08 01:00:00 0 2464 18.58 59.58 14.3
2 0 2022-08-08 02:00:00 0 2974 25.62 60.53 51.0
3 0 2022-08-08 00:00:00 0 3334 358.20 53.58 0.0
4 0 2022-08-08 00:00:00 0 3772 359.92 51.70 25.0
.. ... ... ... ... ... ... ...
238 0 2022-08-07 13:00:00 0 7105022 190.45 -19.03 0.0
239 0 2022-08-07 20:00:00 0 7105023 301.90 6.46 0.0
240 0 2022-08-08 01:00:00 0 7105024 15.14 -4.14 0.0
241 0 2022-08-08 01:00:00 0 7105025 13.20 -8.50 0.0
242 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 2022-08-08 01:00:00 0 1492 11.20 60.58 94.0
1 0 2022-08-08 01:00:00 0 2464 18.58 59.58 14.3
2 0 2022-08-08 02:00:00 0 2974 25.62 60.53 51.0
3 0 2022-08-08 00:00:00 0 3334 358.20 53.58 0.0
4 0 2022-08-08 00:00:00 0 3772 359.92 51.70 25.0
.. ... ... ... ... ... ... ...
238 0 2022-08-07 13:00:00 0 7105022 190.45 -19.03 0.0
239 0 2022-08-07 19:00:00 0 7105023 301.90 6.46 0.0
240 0 2022-08-08 01:00:00 0 7105024 15.14 -4.14 0.0
241 0 2022-08-08 01:00:00 0 7105025 13.20 -8.50 0.0
242 0 2022-08-07 20:00:00 0 7105026 298.77 15.18 0.0
[243 rows x 7 columns]</code></pre>