邻域
<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 pandas as pd
import datetime</code></pre>
<pre><code class="language-python">#生成测试数据
sta_alt= meb.read_sta_alt_from_micaps3(meb.station_国家站) # 获取站点数据
grid0 = meb.grid([70,140,0.1],[15,55,0.1])
meb.tool.plot_tools.scatter_sta(sta_alt) # 站点数据的内容是站点海拔高度。</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/0d4068ca83ff4e314b3c4a1b7ffffd35?showdoc=.jpg" alt="" /></p>
<h1>获取站点R半径内的邻域站号</h1>
<p><font face="黑体" color=blue size = 5><strong>ids_list_list_in_r_of_sta(sta_to, r = 40, sta_from = None,drop_first = False)</strong></font> </p>
<p>查找站点数据sta_to的每个站点附近半径R的范围内的属于sta_from的站点值的列表。如果sta_from 为None,则会将sta_to 赋值给sta_from </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_to</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>r</strong></td>
<td style="text-align: left;">扫描半径,单位km</td>
</tr>
<tr>
<td style="text-align: left;"><strong>sta_from</strong></td>
<td style="text-align: left;">站点数据。如果sta_from 为None,程序中则会将sta_to 赋值给sta_from,即从sta_to站点列表自身中查找邻域站点</td>
</tr>
<tr>
<td style="text-align: left;"><strong>drop_first</strong></td>
<td style="text-align: left;">是否丢弃最邻近的点,通常在sta_from = None时,对每个站点而言,能找到的最近点就是其自身,如果drop_first = True,则会将在结果中将最近点的取值丢弃</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">双层嵌套的列表,外层列表的size 和顺序和sta_to一致, 内层嵌套的size并不固定,顺序按离sta_to中站点的距离有近到远排列</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong> </p>
<pre><code class="language-python">print(&quot;站点数据sta_alt的站点数:&quot;+str(len(sta_alt.index)))
ids = meb.ids_list_list_in_r_of_sta(sta_alt)
print(&quot;列表ids的lenght:&quot;)
print(len(ids))
print(ids[100])</code></pre>
<pre><code>站点数据sta_alt的站点数:2411
列表ids的lenght:
2411
[50963 50964]</code></pre>
<h1>获取站点R半径内的邻域值</h1>
<p><font face="黑体" color=blue size = 5><strong>values_list_list_in_r_of_sta(sta_to, r = 40, sta_from = None,drop_first = False)</strong></font> </p>
<p>查找站点数据sta_to的每个站点附近半径R的范围内的属于sta_from的站点值的列表。如果sta_from 为None,则会将sta_to 赋值给sta_from </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_to</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>r</strong></td>
<td style="text-align: left;">扫描半径,单位km</td>
</tr>
<tr>
<td style="text-align: left;"><strong>sta_from</strong></td>
<td style="text-align: left;">站点数据。如果sta_from 为None,程序中则会将sta_to 赋值给sta_from,即从sta_to站点列表自身中查找邻域站点</td>
</tr>
<tr>
<td style="text-align: left;"><strong>drop_first</strong></td>
<td style="text-align: left;">是否丢弃最邻近的点,通常在sta_from = None时,对每个站点而言,能找到的最近点就是其自身,如果drop_first = True,则会将在结果中将最近点的取值丢弃</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">双层嵌套的列表,外层列表的size 和顺序和sta_to一致, 内层嵌套的size并不固定,顺序按离sta_to中站点的距离有近到远排列</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong> </p>
<pre><code class="language-python">print(&quot;站点数据sta_alt的站点数:&quot;+str(len(sta_alt.index)))
values = meb.values_list_list_in_r_of_sta(sta_alt)
print(&quot;列表values的lenght:&quot;)
print(len(values))
print(values[100])</code></pre>
<pre><code>站点数据sta_alt的站点数:2411
列表values的lenght:
2411
[109. 119.]</code></pre>
<h1>统计邻域内站点值的属性</h1>
<p><font face="黑体" color=blue size = 5><strong>statistic_in_r_of_sta(sta_to,operation, r = 40, sta_from = None,drop_first = False)</strong></font> </p>
<p>查找站点数据sta_to的每个站点附近半径R的范围内的属于sta_from的站点值的列表,再基于列表统计出邻域值的一些属性 </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_to</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>operation</font></strong></td>
<td style="text-align: left;">numpy的统计方法,比如如果需要统计邻域站点中的最大值则operation = numpy.max</td>
</tr>
<tr>
<td style="text-align: left;"><strong>r</strong></td>
<td style="text-align: left;">扫描半径,单位km</td>
</tr>
<tr>
<td style="text-align: left;"><strong>sta_from</strong></td>
<td style="text-align: left;">站点数据。如果sta_from 为None,程序中则会将sta_to 赋值给sta_from,即从sta_to站点列表自身中查找邻域站点</td>
</tr>
<tr>
<td style="text-align: left;"><strong>drop_first</strong></td>
<td style="text-align: left;">是否丢弃最邻近的点,通常在sta_from = None时,对每个站点而言,能找到的最近点就是其自身,如果drop_first = True,则会将在结果中将最近点的取值丢弃</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">站点数据,其站点时空信息属性列和sta_to一致,而数据列则为operation操作的结果</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong> </p>
<pre><code class="language-python">sta_max = meb.statistic_in_r_of_sta(sta_alt,np.max,r = 100)
meb.tool.plot_tools.scatter_sta(sta_max)
# 根据上面的代码计算的sta_max 内涵是每个站点附近100km内所有站点最大值,因此如下图所示在泰山附近的点取值也都一样大</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/4293c9e10867ff349bcc9a538ecf000c?showdoc=.jpg" alt="" /></p>
<h1>统计邻域内的最大值</h1>
<p><font face="黑体" color=blue size = 5><strong>max_in_r_of_sta(sta_to, r = 40, sta_from = None,drop_first = False)</strong></font> </p>
<p>查找站点数据sta_to的每个站点附近半径R的范围内的属于sta_from的站点值的列表,再基于列表统计出邻域值中的最大值 </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_to</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>r</strong></td>
<td style="text-align: left;">扫描半径,单位km</td>
</tr>
<tr>
<td style="text-align: left;"><strong>sta_from</strong></td>
<td style="text-align: left;">站点数据。如果sta_from 为None,程序中则会将sta_to 赋值给sta_from,即从sta_to站点列表自身中查找邻域站点</td>
</tr>
<tr>
<td style="text-align: left;"><strong>drop_first</strong></td>
<td style="text-align: left;">是否丢弃最邻近的点,通常在sta_from = None时,对每个站点而言,能找到的最近点就是其自身,如果drop_first = True,则会将在结果中将最近点的取值丢弃</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">站点数据,其站点时空信息属性列和sta_to一致,而数据列则为邻域内的最大值</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong> </p>
<pre><code class="language-python">sta_max = meb.max_in_r_of_sta(sta_alt,r = 100)
meb.tool.plot_tools.scatter_sta(sta_max)
# 根据上面的代码计算的sta_max 内涵是每个站点附近100km内所有站点最大值,因此如下图所示在泰山附近的点取值也都一样大</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/d7d7fbaafd631754468eb43bb1fb97ca?showdoc=.jpg" alt="" /></p>
<h1>统计邻域内的最小值</h1>
<p><font face="黑体" color=blue size = 5><strong>min_in_r_of_sta(sta_to, r = 40, sta_from = None,drop_first = False)</strong></font> </p>
<p>查找站点数据sta_to的每个站点附近半径R的范围内的属于sta_from的站点值的列表,再基于列表统计出邻域值中的最小值 </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_to</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>r</strong></td>
<td style="text-align: left;">扫描半径,单位km</td>
</tr>
<tr>
<td style="text-align: left;"><strong>sta_from</strong></td>
<td style="text-align: left;">站点数据。如果sta_from 为None,程序中则会将sta_to 赋值给sta_from,即从sta_to站点列表自身中查找邻域站点</td>
</tr>
<tr>
<td style="text-align: left;"><strong>drop_first</strong></td>
<td style="text-align: left;">是否丢弃最邻近的点,通常在sta_from = None时,对每个站点而言,能找到的最近点就是其自身,如果drop_first = True,则会将在结果中将最近点的取值丢弃</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">站点数据,其站点时空信息属性列和sta_to一致,而数据列则为邻域内的最小值</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong> </p>
<pre><code class="language-python">sta_min = meb.min_in_r_of_sta(sta_alt,r = 1000)
meb.tool.plot_tools.scatter_sta(sta_min)
# 根据上面的代码计算的sta_min 内涵是每个站点附近1000km内所有站点最小值,因此如下图所示在青藏高原附近的取值相对sta_alt都明显低</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/6359e387bb32d4cf6746d8765670e087?showdoc=.jpg" alt="" /></p>
<h1>统计邻域内的平均值</h1>
<p><font face="黑体" color=blue size = 5><strong>mean_in_r_of_sta(sta_to, r = 40, sta_from = None,drop_first = False)</strong></font> </p>
<p>查找站点数据sta_to的每个站点附近半径R的范围内的属于sta_from的站点值的列表,再基于列表统计出邻域值中的平均值 </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_to</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>r</strong></td>
<td style="text-align: left;">扫描半径,单位km</td>
</tr>
<tr>
<td style="text-align: left;"><strong>sta_from</strong></td>
<td style="text-align: left;">站点数据。如果sta_from 为None,程序中则会将sta_to 赋值给sta_from,即从sta_to站点列表自身中查找邻域站点</td>
</tr>
<tr>
<td style="text-align: left;"><strong>drop_first</strong></td>
<td style="text-align: left;">是否丢弃最邻近的点,通常在sta_from = None时,对每个站点而言,能找到的最近点就是其自身,如果drop_first = True,则会将在结果中将最近点的取值丢弃</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: left;">站点数据,其站点时空信息属性列和sta_to一致,而数据列则为邻域内的平均值</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong> </p>
<pre><code class="language-python">sta_mean = meb.mean_in_r_of_sta(sta_alt,r = 1000)
meb.tool.plot_tools.scatter_sta(sta_mean)
# 根据上面的代码计算的sta_mean 内涵是每个站点附近1000km内所有站点平均值,因此如下图所示在青藏高原附近的取值相对sta_alt都明显低</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/76c5514179ed02d61df0812f4ecb17e0?showdoc=.jpg" alt="" /></p>
<pre><code class="language-python"></code></pre>
<h1>网点附近站点值之和</h1>
<p><font face="黑体" color=blue size = 5><strong>add_stavalue_to_nearest_grid(sta,grid)</strong></font> </p>
<p>查找站点数据sta最近的网格点,将站点值累加到最近的网格点上。 </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;"><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>grid</font></strong></td>
<td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=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.com.cn/meteva?page_id=3975600815874861">网格数据</a></td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong> </p>
<h1>网点附近站点个数之和</h1>
<p><font face="黑体" color=blue size = 5><strong>add_stacound_to_nearest_grid(sta,grid)</strong></font> </p>
<p>查找站点数据sta最近的网格点,将站点值记为1,再累加到最近的网格点上。可用于将闪电数据转换完网格形式的闪电密度数据 </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;"><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>grid</font></strong></td>
<td style="text-align: left;"><a href="https://www.showdoc.com.cn/meteva?page_id=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.com.cn/meteva?page_id=3975600815874861">网格数据</a></td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong> </p>
<pre><code class="language-python">#生成测试数据
station= meb.read_sta_alt_from_micaps3(meb.station_国家站) # 获取站点数据
meb.tool.plot_tools.scatter_sta(station,title = [&quot;站点分布图&quot;])
grid = meb.grid([70,140,1],[15,55,1])
grd = meb.add_stacount_to_nearest_grid(station,grid)
meb.tool.plot_tools.pcolormesh_2d_grid(grd,title = &quot;站点密度图【1个/(1°×1°)】&quot;)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/c00a15c5b99662f0a698426ff46db986?showdoc=.jpg" alt="" /></p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/81466adeca1cb9d0c7df2faf6fcfcff8?showdoc=.jpg" alt="" /></p>
<h1>获取台风路径附近的站点</h1>
<p><font face="黑体" color=blue size = 5><strong>get_stations_near_by_cyclone_trace(sta_cyclone_trace,station, r = 1000)</strong></font> </p>
<p>根据每个时刻的台风路径定位,用半径r扫描station中的站点,再将每个时刻的扫描结果拼接在一起。 </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_cyclone_trace</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>station</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>r</font></strong></td>
<td style="text-align: left;">扫描半径(单位:km),在半径范围内的站点将被选入</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></td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong> </p>
<pre><code class="language-python">filename = r&quot;H:\test_data\input\meb\babj_2106.dat&quot; #设置台风路径文件
sta1 = meb.read_cyclone_trace(filename,id_cyclone = 2106) #读取台风路径数据(包括定位和预报)
trace_ob = meb.sele_by_para(sta1,dtime = 0) #提取其中定位数据部分(观测)speed_all
station = meb.read_station(meb.station_国家站)
near_sta = meb.fun.nearing.get_stations_near_by_cyclone_trace(trace_ob,station,r = 500) # 获取台风路径附近站点
print(near_sta)</code></pre>
<pre><code> level time dtime id lon lat data0
2123 0 2021-07-23 23:00:00 0 58666 121.90 28.45 0
2124 0 2021-07-23 23:00:00 0 58667 121.27 28.08 0
2157 0 2021-07-23 23:00:00 0 58760 121.15 27.83 0
2123 0 2021-07-24 00:00:00 0 58666 121.90 28.45 0
2124 0 2021-07-24 00:00:00 0 58667 121.27 28.08 0
... ... ... ... ... ... ... ...
1855 0 2021-07-30 17:00:00 0 58045 119.60 34.20 0
1856 0 2021-07-30 17:00:00 0 58047 119.23 34.25 0
1857 0 2021-07-30 17:00:00 0 58048 119.35 34.12 0
1858 0 2021-07-30 17:00:00 0 58049 119.80 34.02 0
1880 0 2021-07-30 17:00:00 0 58131 118.27 33.98 0
[31389 rows x 7 columns]</code></pre>
<pre><code class="language-python">#根据台风定位数据是在时间上是等间距的,则可以从near_sta中统计每个站点受台风影响的时长,方法如下:
near_sta[&quot;data0&quot;] = 1
count = meb.sum_of_sta(near_sta,used_coords=[&quot;time&quot;])
grid0 = meb.grid([105,130,0.05],[25,45,0.05])
axs = meb.creat_axs(1,grid0)
meb.add_cyclone_trace(axs[0],trace_ob,size = 0.2)
meb.add_scatter(axs[0],count,cmap = &quot;rainbow&quot;,point_size=5,title = &quot;站点位于台风烟花附近500km范围内的时长(单位:小时)&quot;)</code></pre>
<pre><code>&lt;matplotlib.collections.PathCollection at 0x2ac91487f08&gt;</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/cea1b52331a786f6c1ff9144305475eb" alt="" /></p>
<pre><code class="language-python">#读取预先收集好的台风期间全国的ECMWF模式预报和对应观测数据
rain24_all = pd.read_hdf(r&quot;H:\test_data\input\meb\cyclone_rain24_test_data.h5&quot;)
print(rain24_all)</code></pre>
<pre><code> level time dtime id lon lat ob \
40987 0 2021-07-20 08:00:00 144 50136 122.52 52.97 0.5
40988 0 2021-07-20 08:00:00 144 50137 122.37 53.47 26.1
40989 0 2021-07-20 08:00:00 144 50246 124.72 52.35 0.0
40990 0 2021-07-20 08:00:00 144 50247 123.57 52.03 0.1
40991 0 2021-07-20 08:00:00 144 50349 124.40 51.67 0.0
... ... ... ... ... ... ... ...
1041531 0 2021-07-31 08:00:00 120 59945 109.70 18.65 0.0
1041532 0 2021-07-31 08:00:00 120 59948 109.58 18.22 0.0
1041533 0 2021-07-31 08:00:00 120 59951 110.33 18.80 0.0
1041534 0 2021-07-31 08:00:00 120 59954 110.03 18.55 0.0
1041535 0 2021-07-31 08:00:00 120 59981 112.33 16.83 0.4
ECMWF
40987 7.636692
40988 14.290881
40989 5.466002
40990 13.473013
40991 9.527965
... ...
1041531 10.543853
1041532 3.784034
1041533 1.900754
1041534 7.155829
1041535 0.000000
[499061 rows x 8 columns]</code></pre>
<pre><code class="language-python"># 通过数据选取功能,设置ob_stadata参数,选取和台风有关的预报和观测样本。
# 选取规则:
#对于rain24_all中的一行数据,其站号为 id1,将起报时间time加上预报时效dtime得到对应的观测时间time1,
#在near_sta列表中判断是否存在time列取值为time1,id列取值为id1的数据,如果有,则上述rain24_all中一行数据被选取保留。
rain24_near_cyclone = meb.sele_by_para(rain24_all,ob_stadata=near_sta)
print(rain24_near_cyclone)</code></pre>
<pre><code> level time dtime id lon lat ob \
2360 0 2021-07-20 08:00:00 96 58559 120.98 29.17 55.000000
2361 0 2021-07-20 08:00:00 96 58566 121.88 29.47 18.600000
2362 0 2021-07-20 08:00:00 96 58567 121.43 29.32 53.400002
2363 0 2021-07-20 08:00:00 96 58568 121.38 29.12 35.799999
2364 0 2021-07-20 08:00:00 96 58569 121.95 29.20 5.700000
... ... ... ... ... ... ... ...
25474 0 2021-07-29 08:00:00 24 58035 118.35 34.33 1.300000
25475 0 2021-07-29 08:00:00 24 58036 118.73 34.52 0.600000
25476 0 2021-07-29 08:00:00 24 58040 119.13 34.85 0.100000
25477 0 2021-07-29 08:00:00 24 58041 119.43 34.78 0.000000
25478 0 2021-07-29 08:00:00 24 58044 119.23 34.53 0.500000
ECMWF
2360 13.146273
2361 31.974769
2362 34.861083
2363 40.813033
2364 22.872963
... ...
25474 2.276917
25475 1.720715
25476 0.777387
25477 0.523834
25478 0.839029
[30868 rows x 8 columns]</code></pre>