meteva

提供气象产品检验相关python程序


高空要素统计检验

<p>[TOC]</p> <pre><code class="language-python">%matplotlib inline %load_ext autoreload %autoreload 2 import pandas as pd import meteva.method as mem import meteva.base as meb import meteva.product as mpd import meteva.perspact as mps # 透视分析模块 import datetime import meteva import numpy as np import os import copy</code></pre> <pre><code>The autoreload extension is already loaded. To reload it, use: %reload_ext autoreload</code></pre> <h1>高空格点场统计检验</h1> <p>在对数值模式和AI大模型数据进行检验时,经常要对长序列的多层次高空数据进行统计检验。这种长序列的统计非常耗时,并且在批量数据统计时,时常会因为各种原因导致程序中断,完成统计并非易事。改进的策略时及时的将中间结果进行保存,出错后再重复启动的时候不必从头再来。本模块的目标就是实现这样的功能。 该模块可以根据设定的实况和预报数据路径等参数,读取多个层次、多个时效、一段时间、多个模式的高空要素,生成数值型检验指标计算所需的中间量。如果程序因异常中断,重新启动后,程序能够重新加载此前已经统计过的大部分结果,对其余部分进行补齐。 之所以只能加载此前的大部分结果,是因为考虑到输出频次过高会影响效率,程序默认是完成约500个单时刻单时次单层次的中间量统计时 输出一次。</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>&lt;font face=&quot;黑体&quot; color=blue size = 5&gt;para&lt;/font&gt;</strong></td> <td style="text-align: left;">统计的参数</td> </tr> <tr> <td style="text-align: left;">&lt;font face=&quot;黑体&quot; color=blue size=5&gt;return&lt;/font&gt;</td> <td style="text-align: left;">统计量中间结果输出到文件中,函数不返回结果</td> </tr> </tbody> </table> <p><strong> 参数示例和说明</strong> </p> <pre><code class="language-python">para = { &amp;quot;mid_method&amp;quot;:mem.tase, # 统计检验的总量计算函数, &amp;quot;grade_list&amp;quot;:None, #二分类检验所需的等级参数 &amp;quot;compare&amp;quot;:None, #二分类检验所需的对比方式参数 &amp;quot;middle_result_path&amp;quot;: r&amp;quot;H:\test_data\output\mps\tase_z.h5&amp;quot;, #检验中间量数据的存储路径 &amp;quot;begin_time&amp;quot;: datetime.datetime(2018,8,1,0), #统计起始时刻, 它是预报的起报时间,而不是实况实况 &amp;quot;end_time&amp;quot;: datetime.datetime(2018,8,2,0), #统计结束时刻,它是预报的起报时间,而不是实况实况 &amp;quot;time_type&amp;quot;:&amp;quot;UT&amp;quot;, # 最终检验结果呈现时,采用北京时还是世界时,UT代表世界时,BT代表北京时 &amp;quot;time_step&amp;quot;:12, #起报时间间隔 &amp;quot;grid&amp;quot; : meteva.base.grid([70,140,0.25],[10,60,0.25]), # 检验区域 &amp;quot;level_list&amp;quot;: [ 850, 700, 500], #检验的层次 &amp;quot;step&amp;quot;:5, #masker间隔(单位:°) &amp;quot;recover&amp;quot;:False, #False表示保留已经收集好的中间量,补齐未收集的数据,True表示删除已有的统计结果文件,重新开始收集 &amp;quot;ob_data&amp;quot;: { #支持多个实况数据 &amp;quot;CRA40&amp;quot;:{ #实况数据名称之一 &amp;quot;dirm&amp;quot;: r&amp;quot;\\10.28.16.234\data2\AI\CRA40\2018\Z\LLL\YYYYMMDDHH.nc&amp;quot;, # 实况场数据路径 &amp;quot;read_method&amp;quot;: meteva.base.read_griddata_from_nc, #读取数据的函数 &amp;quot;read_para&amp;quot;: {}, #读取数据的函数参数 &amp;quot;time_type&amp;quot;: &amp;quot;UT&amp;quot;, # 数据文件中的时间类型,UT代表世界时 &amp;quot;multiple&amp;quot;: 1, # 用于单位转换的系数,例如将比湿由kg/kg 转换成g/kg时, 该参数设置为10000 } }, &amp;quot;fo_data&amp;quot;: { &amp;quot;ECMWF&amp;quot;:{ #模式名称之一 &amp;quot;dirm&amp;quot;: r&amp;quot;\\10.28.16.234\data2\AI\ECMWF\grib\YYMMDD\YYMMDDHH.TTT.grib&amp;quot;, # 数据路径 &amp;quot;dtime&amp;quot;: [12, 240, 12], #检验的时效 &amp;quot;read_method&amp;quot;: meteva.base.read_griddata_from_grib, #读取数据的函数 &amp;quot;read_para&amp;quot;: {&amp;quot;level_type&amp;quot;:&amp;quot;isobaricInhPa&amp;quot;,&amp;quot;value_name&amp;quot;:&amp;quot;gh&amp;quot;}, #读取数据的函数参数 &amp;quot;time_type&amp;quot;: &amp;quot;UT&amp;quot;, # 预报数据时间类型是北京时,即08时起报 &amp;quot;multiple&amp;quot;: 1, # 用于单位转换的系数,例如将比湿由kg/kg 转换成g/kg时, 该参数设置为10000 &amp;quot;move_fo_time&amp;quot;:12, #是否对预报的时效进行平移,12 表示将1月1日08时的36小时预报转换成1月1日20时的24小时预报后参与对比 &amp;quot;veri_by&amp;quot;:&amp;quot;self&amp;quot; #self表示用自己的零场作为真值进行检验 }, &amp;quot;NMC1&amp;quot;: { #模式名称之 &amp;quot;dirm&amp;quot;: r&amp;quot;\\10.28.16.177\NMC_Tsinghua_reforecast\cra40\YYYYMMDDHH.nc&amp;quot;, #数据路径 &amp;quot;dtime&amp;quot;: [12, 240, 12], #检验时效 &amp;quot;read_method&amp;quot;: meteva.base.read_griddata_from_nc, #读取数据的函数 &amp;quot;read_para&amp;quot;: {&amp;quot;value_name&amp;quot;: &amp;quot;GPH&amp;quot;}, #读取数据的函数参数 &amp;quot;time_type&amp;quot;: &amp;quot;UT&amp;quot;,#预报数据时间类型是北京时,即08时起报 &amp;quot;multiple&amp;quot;:1, #用于单位转换的系数,例如文件数据的单位是位势米,通过乘以9.8可转换成位势 &amp;quot;move_fo_time&amp;quot;: 0, &amp;quot;veri_by&amp;quot;: &amp;quot;CRA40&amp;quot; #指定某一个实况数据作为真值进行检验 }, }, } </code></pre> <h2>关于para的补充说明:</h2> <ol> <li>mid_method 参数常用的选项包括 mem.tase,mem.tmmsss,mem.hfmc等。如果要统计平均误差、平均绝对误差、均方根误差就选mem.tase;如果要计算二分类的指标,如TS、BIAS等就选择mem.hfmc; 如果要选相关系数就选mem.tmmsss,大部分情况下高空要素一般要计算距平相关系数,而非普通的相关系数。在meteva中计算距平相关系数有专门的ACC模块。</li> <li>grade_list 和compare参数只有当mid_method = mem.hfmc时才需要设置,它们是二分类检验要用到的参数</li> <li>统计形成的中间量数据文件中包含但未报仅包含begin_time 至end_time 时段内的数据,如果recover=False,它还会包含上一次运行留下来的统计数据。</li> <li>time_step参数一般用于起报时间的间隔,例如全球模式一般是12小时间隔报一次。在调试阶段,time_step也可以设置得大一些,例如1200, 这样程序会跳跃着读取部分日期的数据进行统计,用户可以根据部分数据的统计结果来计算评分和绘图,如果检验结果合理,在重新将dtime 设置为12进行统计。避免花费很长时间完成统计后,结果是错误的,则又要重新返工,浪费大量时间。 对于非常长的时间序列,time_step 也未必一定要根据实际的预报起报时间间隔来进行设置,例如时间间隔是12小时,那将time_step 设置成60小时,也可以得到很有代表性的统计结果。此处只所以设置为60而不是48或72,是考虑到后面两种设置方法不能遍历到00和12时两种起报时间。</li> <li>read_method对应的读取数据函数应该包含参数time,level,dtime,本模块的程序会自动循环采用不同的time,dtime,level参数调用read_method。read_para 中则不必包含time,dtime,level相关的内容,因为本程序会自动设置这些参数。</li> <li>veri_by 用于指定检验实况,每个模式可用选择相同的实况,也可以选择不同的实况。</li> </ol> <h2>调用方法</h2> <pre><code class="language-python"># 统计rmse,me,mae 相关的中间量 mps.middle_of_score(para)</code></pre> <pre><code>\\10.28.16.234\data2\AI\ECMWF\grib\180808\18080800.000.grib not exist \\10.28.16.234\data2\AI\ECMWF\grib\180808\18080800.000.grib not exist \\10.28.16.234\data2\AI\ECMWF\grib\180808\18080800.000.grib not exist \\10.28.16.234\data2\AI\ECMWF\grib\180808\18080800.000.grib not exist \\10.28.16.234\data2\AI\ECMWF\grib\180808\18080800.000.grib not exist \\10.28.16.234\data2\AI\ECMWF\grib\180808\18080800.000.grib not exist \\10.28.16.234\data2\AI\ECMWF\grib\180808\18080800.000.grib not exist \\10.28.16.234\data2\AI\ECMWF\grib\180808\18080800.000.grib not exist \\10.28.16.234\data2\AI\ECMWF\grib\180808\18080800.000.grib not exist 中间量统计程序运行完毕 中间结果已输出至H:\test_data\output\mps\tase_z.h5</code></pre> <pre><code class="language-python">#加载中结果数据 df_mid = pd.read_hdf(para[&amp;quot;middle_result_path&amp;quot;]) print(df_mid)</code></pre> <pre><code> level time dtime member id T E \ 0 850 2018-08-01 12 ECMWF 30080 1446.777004 -8817.015932 0 850 2018-08-01 12 ECMWF 20100 1542.615732 -7113.460043 0 850 2018-08-01 12 ECMWF 40070 32.674467 -123.065719 0 850 2018-08-01 12 ECMWF 10120 39.392310 -62.056353 0 850 2018-08-01 12 ECMWF 30090 1446.777004 -2326.123738 .. ... ... ... ... ... ... ... 0 500 2018-08-02 240 NMC1 20080 1542.615732 19958.427028 0 500 2018-08-02 240 NMC1 10100 39.392310 404.537590 0 500 2018-08-02 240 NMC1 30070 36.169425 352.785362 0 500 2018-08-02 240 NMC1 20090 1542.615732 33132.055382 0 500 2018-08-02 240 NMC1 10110 39.392310 296.846196 A S 0 8848.364657 62897.818132 0 7347.701158 44004.340204 0 125.558343 655.077934 0 77.316545 248.773984 0 3373.974168 15554.391699 .. ... ... 0 19958.427028 315540.812378 0 404.537590 4536.645029 0 356.379313 6054.641830 0 33132.055382 737601.176270 0 296.846196 2334.247619 [16848 rows x 9 columns]</code></pre> <pre><code class="language-python">#根据中间量结果绘制误差曲线 result = mps.score_df(df_mid,mem.rmse,g = [&amp;quot;level&amp;quot;,&amp;quot;member&amp;quot;,&amp;quot;dtime&amp;quot;],plot =&amp;quot;line&amp;quot;,ncol = 3,sup_title = &amp;quot;RMSE&amp;quot;)</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=7dc1c8ab5294d0c89a428c863ced33f6&amp;amp;file=file.png" alt="" /></p> <p>上面是对比不同模式的rmse的实现方式。如果需要对比模式对副高的预报性能,则可以用二分类检验指标来实现</p> <pre><code class="language-python"># 设置统计参数 para_hfmc = copy.deepcopy(para) para_hfmc[&amp;quot;mid_method&amp;quot;] = mem.hfmc para_hfmc[&amp;quot;grade_list&amp;quot;] = [5880,5920] # 副高区域 para_hfmc[&amp;quot;middle_result_path&amp;quot;] = r&amp;quot;H:\test_data\output\mps\hfmc_500.h5&amp;quot; para_hfmc[&amp;quot;level_list&amp;quot;] = [500] # 统计rmse,me,mae 相关的中间量 mps.middle_of_score(para_hfmc)</code></pre> <pre><code>success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.024.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180802\18080200.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.036.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180802\18080212.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.048.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180803\18080300.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.060.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180803\18080312.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.072.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180804\18080400.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.084.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180804\18080412.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.096.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180805\18080500.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.108.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180805\18080512.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.120.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180806\18080600.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.132.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180806\18080612.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.144.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180807\18080700.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.156.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180807\18080712.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.168.grib \\10.28.16.234\data2\AI\ECMWF\grib\180808\18080800.000.grib not exist success read from \\10.28.16.234\data2\AI\ECMWF\grib\180808\18080812.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.192.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180809\18080900.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.204.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180809\18080912.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.216.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180810\18081000.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.228.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180810\18081012.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.240.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180811\18081100.000.grib Traceback (most recent call last): File &amp;quot;h:\task\develop\python\git\meteva\meteva\base\io\read_griddata.py&amp;quot;, line 346, in read_griddata_from_grib ds0 = xr.open_dataset(filename, engine=&amp;quot;cfgrib&amp;quot;, backend_kwargs={'filter_by_keys': filter_by_keys,&amp;quot;indexpath&amp;quot;: &amp;quot;&amp;quot;},) File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\xarray\backends\api.py&amp;quot;, line 495, in open_dataset backend_ds = backend.open_dataset( File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\xarray\backends\cfgrib_.py&amp;quot;, line 127, in open_dataset store = CfGribDataStore( File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\xarray\backends\cfgrib_.py&amp;quot;, line 66, in __init__ self.ds = cfgrib.open_file(filename, **backend_kwargs) File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\dataset.py&amp;quot;, line 782, in open_file index = open_fileindex(stream, indexpath, index_keys, filter_by_keys=filter_by_keys) File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\dataset.py&amp;quot;, line 761, in open_fileindex index = messages.FileIndex.from_indexpath_or_filestream( File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\messages.py&amp;quot;, line 529, in from_indexpath_or_filestream return cls.from_fieldset(filestream, index_keys, computed_keys) File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\messages.py&amp;quot;, line 378, in from_fieldset return cls.from_fieldset_and_iteritems(fieldset, iteritems, index_keys, computed_keys) File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\messages.py&amp;quot;, line 391, in from_fieldset_and_iteritems for field_id, raw_field in iteritems: File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\messages.py&amp;quot;, line 291, in __iter__ for message in self.itervalues(): File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\messages.py&amp;quot;, line 267, in itervalues with open(self.filestream.path, &amp;quot;rb&amp;quot;) as file: FileNotFoundError: [Errno 2] No such file or directory: '\\\\10.28.16.234\\data2\\AI\\ECMWF\\grib\\180731\\18073112.252.grib' [Errno 2] No such file or directory: '\\\\10.28.16.234\\data2\\AI\\ECMWF\\grib\\180731\\18073112.252.grib' faild to read \\10.28.16.234\data2\AI\ECMWF\grib\180731\18073112.252.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180802\18080200.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.024.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180802\18080212.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.036.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180803\18080300.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.048.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180803\18080312.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.060.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180804\18080400.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.072.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180804\18080412.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.084.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180805\18080500.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.096.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180805\18080512.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.108.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180806\18080600.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.120.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180806\18080612.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.132.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180807\18080700.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.144.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180807\18080712.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.156.grib \\10.28.16.234\data2\AI\ECMWF\grib\180808\18080800.000.grib not exist success read from \\10.28.16.234\data2\AI\ECMWF\grib\180808\18080812.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.180.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180809\18080900.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.192.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180809\18080912.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.204.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180810\18081000.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.216.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180810\18081012.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.228.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180811\18081100.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.240.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180811\18081112.000.grib Traceback (most recent call last): File &amp;quot;h:\task\develop\python\git\meteva\meteva\base\io\read_griddata.py&amp;quot;, line 346, in read_griddata_from_grib ds0 = xr.open_dataset(filename, engine=&amp;quot;cfgrib&amp;quot;, backend_kwargs={'filter_by_keys': filter_by_keys,&amp;quot;indexpath&amp;quot;: &amp;quot;&amp;quot;},) File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\xarray\backends\api.py&amp;quot;, line 495, in open_dataset backend_ds = backend.open_dataset( File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\xarray\backends\cfgrib_.py&amp;quot;, line 127, in open_dataset store = CfGribDataStore( File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\xarray\backends\cfgrib_.py&amp;quot;, line 66, in __init__ self.ds = cfgrib.open_file(filename, **backend_kwargs) File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\dataset.py&amp;quot;, line 782, in open_file index = open_fileindex(stream, indexpath, index_keys, filter_by_keys=filter_by_keys) File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\dataset.py&amp;quot;, line 761, in open_fileindex index = messages.FileIndex.from_indexpath_or_filestream( File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\messages.py&amp;quot;, line 529, in from_indexpath_or_filestream return cls.from_fieldset(filestream, index_keys, computed_keys) File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\messages.py&amp;quot;, line 378, in from_fieldset return cls.from_fieldset_and_iteritems(fieldset, iteritems, index_keys, computed_keys) File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\messages.py&amp;quot;, line 391, in from_fieldset_and_iteritems for field_id, raw_field in iteritems: File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\messages.py&amp;quot;, line 291, in __iter__ for message in self.itervalues(): File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\messages.py&amp;quot;, line 267, in itervalues with open(self.filestream.path, &amp;quot;rb&amp;quot;) as file: FileNotFoundError: [Errno 2] No such file or directory: '\\\\10.28.16.234\\data2\\AI\\ECMWF\\grib\\180801\\18080100.252.grib' [Errno 2] No such file or directory: '\\\\10.28.16.234\\data2\\AI\\ECMWF\\grib\\180801\\18080100.252.grib' faild to read \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080100.252.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180802\18080212.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.024.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180803\18080300.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.036.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180803\18080312.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.048.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180804\18080400.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.060.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180804\18080412.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.072.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180805\18080500.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.084.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180805\18080512.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.096.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180806\18080600.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.108.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180806\18080612.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.120.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180807\18080700.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.132.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180807\18080712.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.144.grib \\10.28.16.234\data2\AI\ECMWF\grib\180808\18080800.000.grib not exist success read from \\10.28.16.234\data2\AI\ECMWF\grib\180808\18080812.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.168.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180809\18080900.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.180.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180809\18080912.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.192.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180810\18081000.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.204.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180810\18081012.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.216.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180811\18081100.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.228.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180811\18081112.000.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.240.grib success read from \\10.28.16.234\data2\AI\ECMWF\grib\180812\18081200.000.grib Traceback (most recent call last): File &amp;quot;h:\task\develop\python\git\meteva\meteva\base\io\read_griddata.py&amp;quot;, line 346, in read_griddata_from_grib ds0 = xr.open_dataset(filename, engine=&amp;quot;cfgrib&amp;quot;, backend_kwargs={'filter_by_keys': filter_by_keys,&amp;quot;indexpath&amp;quot;: &amp;quot;&amp;quot;},) File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\xarray\backends\api.py&amp;quot;, line 495, in open_dataset backend_ds = backend.open_dataset( File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\xarray\backends\cfgrib_.py&amp;quot;, line 127, in open_dataset store = CfGribDataStore( File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\xarray\backends\cfgrib_.py&amp;quot;, line 66, in __init__ self.ds = cfgrib.open_file(filename, **backend_kwargs) File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\dataset.py&amp;quot;, line 782, in open_file index = open_fileindex(stream, indexpath, index_keys, filter_by_keys=filter_by_keys) File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\dataset.py&amp;quot;, line 761, in open_fileindex index = messages.FileIndex.from_indexpath_or_filestream( File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\messages.py&amp;quot;, line 529, in from_indexpath_or_filestream return cls.from_fieldset(filestream, index_keys, computed_keys) File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\messages.py&amp;quot;, line 378, in from_fieldset return cls.from_fieldset_and_iteritems(fieldset, iteritems, index_keys, computed_keys) File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\messages.py&amp;quot;, line 391, in from_fieldset_and_iteritems for field_id, raw_field in iteritems: File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\messages.py&amp;quot;, line 291, in __iter__ for message in self.itervalues(): File &amp;quot;C:\Users\admin\.conda\envs\python38\lib\site-packages\cfgrib\messages.py&amp;quot;, line 267, in itervalues with open(self.filestream.path, &amp;quot;rb&amp;quot;) as file: FileNotFoundError: [Errno 2] No such file or directory: '\\\\10.28.16.234\\data2\\AI\\ECMWF\\grib\\180801\\18080112.252.grib' [Errno 2] No such file or directory: '\\\\10.28.16.234\\data2\\AI\\ECMWF\\grib\\180801\\18080112.252.grib' faild to read \\10.28.16.234\data2\AI\ECMWF\grib\180801\18080112.252.grib success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080112.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080200.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080212.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080300.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080312.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080400.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080412.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080500.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080512.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080600.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080612.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080700.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080712.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080800.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080812.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080900.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080912.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018081000.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018081012.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018081100.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080100.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080200.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080212.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080300.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080312.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080400.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080412.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080500.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080512.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080600.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080612.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080700.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080712.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080800.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080812.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080900.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080912.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018081000.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018081012.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018081100.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018081112.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080112.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080212.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080300.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080312.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080400.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080412.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080500.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080512.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080600.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080612.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080700.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080712.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080800.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080812.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080900.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018080912.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018081000.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018081012.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018081100.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018081112.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc success read from \\10.28.16.234\data2\AI\CRA40\2018\Z\500\2018081200.nc success read from \\10.28.16.177\NMC_Tsinghua_reforecast\cra40\2018080200.nc 中间量统计程序运行完毕 中间结果已输出至H:\test_data\output\mps\hfmc_500.h5</code></pre> <pre><code class="language-python">#加载中结果数据 df_mid = pd.read_hdf(para_hfmc[&amp;quot;middle_result_path&amp;quot;]) print(df_mid)</code></pre> <pre><code> level time dtime member id grade H F M C 0 500 2018-08-01 12 ECMWF 30080 5880 0.0 0.0 0.0 1600.0 1 500 2018-08-01 12 ECMWF 30080 5920 0.0 0.0 0.0 1600.0 0 500 2018-08-01 12 ECMWF 20100 5880 0.0 0.0 0.0 1600.0 1 500 2018-08-01 12 ECMWF 20100 5920 0.0 0.0 0.0 1600.0 0 500 2018-08-01 12 ECMWF 40070 5880 0.0 0.0 0.0 40.0 .. ... ... ... ... ... ... ... ... ... ... 1 500 2018-08-02 240 NMC1 30070 5920 0.0 0.0 0.0 40.0 0 500 2018-08-02 240 NMC1 20090 5880 0.0 0.0 0.0 1600.0 1 500 2018-08-02 240 NMC1 20090 5920 0.0 0.0 0.0 1600.0 0 500 2018-08-02 240 NMC1 10110 5880 0.0 0.0 0.0 40.0 1 500 2018-08-02 240 NMC1 10110 5920 0.0 0.0 0.0 40.0 [10944 rows x 10 columns]</code></pre> <pre><code class="language-python">#根据实况和预报的频次(累计格点数)的对比 result = mps.score_df(df_mid,mem.ob_fo_hc,g = [&amp;quot;grade&amp;quot;,&amp;quot;member&amp;quot;,&amp;quot;dtime&amp;quot;],plot =&amp;quot;line&amp;quot;,ncol = 2,sup_title = &amp;quot;RMSE&amp;quot;)</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=e835a194aff3b5f3667b906c0e7f57ba&amp;amp;file=file.png" alt="" /></p> <p>如果数据时段很长,实况的副高累计格点数随时效基本是不变化的,但上面的数据集只包含一小段时间的数据,因此实况的副高累计格点数随时效变化非常剧烈。从上面的结果还可以看出,两种模式对副高面积(格点数)的预报都是偏低的。</p>

页面列表

ITEM_HTML