meteva

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


数据收集

<p>[TOC]</p> <pre><code class="language-python">%matplotlib inline %load_ext autoreload %autoreload 2 import meteva.base as meb import meteva.product as mpd</code></pre> <p>检验工作的第一步是数据收集处理,micaps分布式数据库是一个非常稳定的数据来源,缺点是它只能提供实时业务数据,可提供的数据序列长度非常有限。检验工作的开展通常需要用到比较长的历史数据,数据序列越长越完整检验工作的开展则越顺利。如果无现成的序列完整又读取方便的数据,为保障检验工作的开展就需要自己收集整理数据。micaps分布式数据库因其稳定性好,且存储规范,读取方便等优点可以作为检验数据收集的稳定数据源。</p> <p>本模块是基于micaps分布式数据库构建的一套数据收集系统,用户根据需要从micaps上下载数据到本地,并保持相对路径的一致,便于后续开发。</p> <h2>从gds服务器备份数据到本地</h2> <p><strong>download_from_gds(para)</strong><br /> 根据参数从micaps服务器中下载数据 </p> <p><strong>参数说明:</strong><br />  <strong>para</strong>: 数据下载配置参数,以下结合系统中集成的一个示例 mpd.application.data_collection.para_example进行阐述<br />  <strong>return</strong>: 无 </p> <pre><code class="language-python">para_example= { "cpu_count":1, # 并行下载的进程数 "ip_port_file":r"H:\test_data\input\input\meb\ip_port.txt", # micaps分布式服务器的ip和port配置文件 "local_binary_dir": r"O:\data\mdfs", # 以二进制micaps格式保存网格数据的根目录 "local_sta_dir": r"O:\data\sta", # 以二进制micaps格式保存站点数据的根目录 "local_grid_dir":r"O:\data\grid", # 以netcdf格式保存网格数据的根目录 "max_save_day": 14, # 二进制micaps网格数据的最长保存日数 "sta_origin_dirs": [ #待下载的站点数据列表 ["mdfs:///SURFACE/QC_BY_FSOL/RAIN01_ALL_STATION/", [[0, 2359]]], #待下载的站点数据的路径和作业配置 ["mdfs:///SURFACE/QC_BY_FSOL/WIND_AVERAGE_2MIN_ALL_STATION/", [[0, 2359]]], ["mdfs:///SURFACE/QC_BY_FSOL/TMP_ALL_STATION/", [[0, 2359]]], ], "grid_origin_dirs": { #待下载的网格数据字典 "NWFD_SCMOC": [ ["NWFD_SCMOC/RAIN03", [[1100, 1200],[2100,2300]]], #待下载的网格数据的路径和作业配置 ["NWFD_SCMOC/TMP/2M_ABOVE_GROUND", [[1100, 1200],[2100,2359]]], ["NWFD_SCMOC/WIND/10M_ABOVE_GROUND", [[1100, 1200],[2100,2300]]], ], "EWMWF": [ ["ECMWF_HR/TMP_2M/", [[1100, 1200],[2200,2300]]], ["ECMWF_HR/APCP/", [[1100, 1200],[2200,2300]]], ["mdfs:///ECMWF_HR/WIND_10M/", [[1100, 1200],[2200,2300]]], ], "GRAPES_GFS": [ ["mdfs:///GRAPES_GFS/WIND/10M_ABOVE_GROUND/", [[1100, 1200],[2200,2300]]], ["GRAPES_GFS/TMP/2M_ABOVE_GROUND", [[1100, 1200],[2200,2300]]], ["GRAPES_GFS/APCP", [[1100, 1200],[2200,2300]]], ], } }</code></pre> <p><strong>参数说明:</strong><br /> 1、micaps分布式服务器的ip和port配置文件格式请参考<a href="https://www.showdoc.cc/meteva?page_id=3975601856475911">gds站点数据读取的说明</a> </p> <p>2、二进制micaps格式网格数据是将micaps服务器上读取的文件字节流原封不动保存到文件中。该文件可以直接在micaps中显示。 同时由于其中它没有进行数据压缩,所以从该格式文件中能够直接指定网格点的值,在对效率要求极高的交互式检验中,需要用到该类格式的数据。</p> <p>3、二进制micaps格式站点数据也是将micaps服务器上读取的文件字节流原封不动的保存到文件中。 该文件也可以直接在micaps中显示。<br /> 4、netcdf格式保存数据通过压缩,可以延长数据存储序列的长度 </p> <p>5、文件下载后在根目录下相对存储目录会自动同分布式服务器中的相对目录保持一致。此外站点数据和nc格式网格数据被下载之后会自动根据文件名自动判断日期,并按日期对数据文件进行归档。 </p> <p>6、由于二进制micaps格式网格数据比较消耗存储空间,因此通常不能存太长时间的序列,max_sava_day是用来控制序列长度的参数 </p> <p>7、待下载的数据参数:不同的数据下载备份的频率和时段是不一样的,对于实况数据需要尽量实时下载,而预报数据最好选择micaps服务器空闲时段下载。下载参数是一个二层列表,以 [&quot;NWFD_SCMOC/RAIN03&quot;, [[1100, 1200],[2100,2300]]], 为例,它代表download(para)函数只有在一天当中的11至12时、21-23时两个时段触发运行时才会从NWFD_SCMOC/RAIN03目录下载数据到本地。 基于该设计,调用download(para)执行下载的主程序在配置系统自动作业时可以简单地设置为逐小时或逐半小时执行,同时保证不同数据的下载时段做一定区分避免,作业拥堵。 </p> <p><strong>调用示例</strong></p> <pre><code class="language-python">mpd.download_from_gds(para_example)</code></pre> <pre><code>于2020-05-21 17:52:17.224865开始下载 Waiting for all subprocesses done... All subprocesses done.</code></pre> <h2>保持本地数据序列长度</h2> <p><strong>remove(dir,save_day)</strong><br /> 如果磁盘空间有限,对于一些特别占据存储空间的数据,可能需要定期删除久远的历史数据。通过每天一次的定时作业调用该函数,根据将dir目录下距今超过save_day天的数据删除,可以保持本地的序列长度。 </p> <p><strong>参数说明:</strong><br />  <strong>dir</strong>: 数据路径的根目录,下面可以有多个子目录<br />  <strong>save_day</strong>: 数据保持的天数<br />  <strong>return</strong>: 无 </p> <p><strong>调用示例</strong></p> <pre><code class="language-python">mpd.remove(para_example["local_binary_dir"],para_example["max_save_day"])</code></pre> <pre><code>O:\data\mdfs目录下14天之前的数据已删除</code></pre>

页面列表

ITEM_HTML