meteva

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


输出站点数据

<p>[TOC]</p> <pre><code class="language-python">%matplotlib inline %load_ext autoreload %autoreload 2 import meteva.base as meb</code></pre> <h1>输出成micaps第3类文件</h1> <p><strong><font face="黑体" color=blue size = 3>write_stadata_to_micaps3(sta,save_path = &quot;a.txt&quot;,creat_dir = False, type = -1,effectiveNum = 4,show = False,title = None)</font></strong><br /> 将站点数据以micaps第3类格式输出 </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;">站点数据</td> </tr> <tr> <td style="text-align: left;"><strong>save_path</strong></td> <td style="text-align: left;">文件输出路径,缺省值为&quot;a.txt&quot;</td> </tr> <tr> <td style="text-align: left;"><strong>creat_dir</strong></td> <td style="text-align: left;">当数据文件路径对应的文件夹不存在时是否新建相应的文件夹</td> </tr> <tr> <td style="text-align: left;"><strong>type</strong></td> <td style="text-align: left;">控制文件在micaps中的显示方式。当type = -1时, 若站点值为0.1-0.9时填一位小数,若站点值大于1时只填整数;当 type = -2时,若站点值小于1时不填,大于等于1时只填整数;当 type = -3 ,只填整数。</td> </tr> <tr> <td style="text-align: left;"><strong>effectiveNum</strong></td> <td style="text-align: left;">文件数据的有效位数,缺省值为4</td> </tr> <tr> <td style="text-align: left;"><strong>show</strong></td> <td style="text-align: left;">是否在屏幕上打印文件成功输出的信息</td> </tr> <tr> <td style="text-align: left;"><strong>title</strong></td> <td style="text-align: left;">micaps文件头中文件描述内容,它将在micaps软件系统中显示,缺省时由系统自动根据文件路径生成</td> </tr> <tr> <td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td> <td style="text-align: left;">成功输出返回True,失败就返回False , 如果sta包含alt列,则输出的数据文件中包含站点高度,否正站点高度都为0</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">filename = r"H:\test_data\input\meb\m1.txt" sta = meb.read_stadata_from_micaps1_2_8(filename,meb.m1_element_column_dict["温度"]) meb.write_stadata_to_micaps3(sta,r"H:\test_data\output\meb_new\m3.txt")</code></pre> <pre><code>True</code></pre> <pre><code class="language-python">meb.write_stadata_to_micaps3(sta,r"H:\test_data\output\meb_new\m3.txt",creat_dir = True,show = True)</code></pre> <pre><code>成功输出至H:\test_data\output\meb_new\m3.txt True</code></pre> <pre><code class="language-python">sta = meb.read_stadata_from_micaps3(r"H:\test_data\output\meb_new\m3.txt") print(sta)</code></pre> <pre><code> level time dtime id lon lat data0 0 0 2018-08-01 08:00:00 0 1009 89.49 3.99 27.9 1 0 2018-08-01 08:00:00 0 29645 86.22 55.25 8.1 2 0 2018-08-01 08:00:00 0 28593 74.63 56.10 15.1 3 0 2018-08-01 08:00:00 0 36022 80.33 52.02 9.5 4 0 2018-08-01 08:00:00 0 29209 77.22 57.81 11.0 ... ... ... ... ... ... ... ... 3994 0 2018-08-01 08:00:00 0 48679 103.67 1.63 24.4 3995 0 2018-08-01 08:00:00 0 16364 16.37 38.76 18.4 3996 0 2018-08-01 08:00:00 0 16415 14.87 38.58 24.1 3997 0 2018-08-01 08:00:00 0 16081 9.26 45.46 26.7 3998 0 2018-08-01 08:00:00 0 16314 16.66 40.68 22.9 [3999 rows x 7 columns]</code></pre> <h1>站点数据转json</h1> <p><strong><font face="黑体" color=blue size = 3>stadata_to_json(sta,effective_num)</font></strong><br /> 将站点数据转换成json格式的字符串 </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;">站点数据,仅支持单一层次、时间、时效和模式的数据</td> </tr> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>effective_num</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;">json格式的字符串变量</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">sta_part = meb.sele_by_para(sta,id = [1009,29645,28593]) print(sta_part)</code></pre> <pre><code> level time dtime id lon lat data0 0 0 2018-08-01 08:00:00 0 1009 89.49 3.99 27.9 2 0 2018-08-01 08:00:00 0 29645 86.22 55.25 8.1 3 0 2018-08-01 08:00:00 0 28593 74.63 56.10 15.1</code></pre> <pre><code class="language-python">json_str = meb.stadata_to_json(sta_part,3) print(json_str)</code></pre> <pre><code>{"attrs": {"dtime_units": "hour", "data_source": "", "data_type": "", "var_name": "", "var_cn_name": "", "var_units": "", "valid_time": 0, "data_start_columns": 6, "time": "20180801080000", "dtime": "0", "level": "0", "model": "data0"}, "data": {"0": {"id": 1009, "lon": 89.49, "lat": 3.99, "data0": 27.9}, "2": {"id": 29645, "lon": 86.22, "lat": 55.25, "data0": 8.1}, "3": {"id": 28593, "lon": 74.63, "lat": 56.1, "data0": 15.1}}}</code></pre> <h1>站点数据转json字节流</h1> <p><strong><font face="黑体" color=blue size = 3>stadata_to_json_bytes(sta,effective_num)</font></strong><br /> 将站点数据转换成json格式的字符串,之后转换成字节流,再用gzip.compress对字节流进行压缩后返回结果 </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;">站点数据,仅支持单一层次、时间、时效和模式的数据</td> </tr> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>effective_num</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;">json格式的字符串变量转换成字节数据,再经过gzip.compress(json_str.encode(&quot;GBK&quot;))函数压缩后的结果</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">json_bytes = meb.stadata_to_json_bytes(sta_part,3) print(json_bytes)</code></pre> <pre><code>b"\x1f\x8b\x08\x00\x9d\xdf\x9f`\x02\xffe\x8f\xe1\n\x83 \x14F_%\xfc\x1d\xa2\x96\xa6{\x19\x91\x0c\x16\x94\x8dv\x0b\xc6\xe8\xddwue\x8d\t*\xe7\xd3s\xaf\xbe\x89\x03\x98\x9f\xe4V\xbc\x89\x87~\xec\xec\x12z\x88L\xee\xd32\x93\xb2 \xde\x81\xb3O\x84\xb6\x8bq\x8e\xe0\xf5\xc8\xc1\xeaf\x1b\xdc\xf8\xc3m\xf8\x8br\xedo0\xf4\xde\xc6\x9e\x98\xb0\xdc\x08\xdc\x0c\xb6\x9d\x86e\x0c\xf1\xaa\xc2\x83\xfd\x0e\x11\x8ck\xa6\x19\xc7\x89#=\xe48J4tk7d\x1a'\xff\xa5X\x97\x91m\xef\x90\xbe\xca\xd2\xda{\xdc8c&amp;\xbaS@\xd0\x86\xd6\x89\x1c U\xd4\x98\xf2\xf0o\x85h\xa8\x89U\xc4)\x0b\xa3jy\xda\x8a\n\x91m)\xa9\x90\x17]S\x1e\xed\xeabki\xaal75U\xd5i+\xca/2\x97ho\xdb\x07\x0f\xf0\x85\xa0\xaf\x01\x00\x00"</code></pre> <h1>站点数据输出成json文本文件</h1> <p><strong><font face="黑体" color=blue size = 3>write_stadata_to_json_file(sta,filename,effective_num = 3)</font></strong><br /> 将站点数据转换成json格式字符串,并以文本格式输出</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;">站点数据,仅支持单一层次、时间、时效和模式的数据</td> </tr> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>filename</font></strong></td> <td style="text-align: left;">输出文件路径</td> </tr> <tr> <td style="text-align: left;"><strong>effective_num</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;">无</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">meb.write_stadata_to_json_file(sta_part,r"H:\test_data\output\meb\json.txt")</code></pre> <h1>站点数据输出成json字节文件</h1> <p><strong><font face="黑体" color=blue size = 3>write_stadata_to_json_byte_file(sta,filename,effective_num = 3)</font></strong><br /> 将站点数据转换成json格式的字符串,之后转换成字节流,再用gzip.compress对字节流进行压缩后输出到文件当中</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;">站点数据,仅支持单一层次、时间、时效和模式的数据</td> </tr> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>filename</font></strong></td> <td style="text-align: left;">输出文件路径</td> </tr> <tr> <td style="text-align: left;"><strong>effective_num</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;">无</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">meb.write_stadata_to_json_byte_file(sta_part,r"H:\test_data\output\meb\json.bin")</code></pre> <h1>将站点数据显示在micaps当中</h1> <p><strong><font face="黑体" color=blue size = 3>put_stadata_to_micaps(sta,effective_num = 3,layer_description = None)</font></strong><br /> 将站点数据转换成json格式的字符串,之后转换成字节流,再用gzip.compress对字节流进行压缩后输出到文件当中</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;">站点数据,可以包含多个模式,但仅限于单一层次、时间和时效的数据</td> </tr> <tr> <td style="text-align: left;"><strong>effective_num</strong></td> <td style="text-align: left;">生成的结果中数据(包括经纬度)保留的有效位数</td> </tr> <tr> <td style="text-align: left;"><strong>layer_description</strong></td> <td style="text-align: left;">设置每列数据在micaps上显示的图层名称</td> </tr> <tr> <td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td> <td style="text-align: left;">无</td> </tr> </tbody> </table> <p><strong>调用示例</strong></p> <pre><code class="language-python">meb.put_stadata_to_micaps(sta_part) # (该功能需要特定版本的micaps软件以及Mpython包的支持,未安装Mpython的情况下执行效果如下:)</code></pre> <pre><code>--------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) &lt;ipython-input-10-c53a19f4e3f3&gt; in &lt;module&gt; ----&gt; 1 meb.put_stadata_to_micaps(sta_part) 2 # (该功能需要特定版本的micaps软件以及Mpython包的支持,未安装Mpython的情况下执行效果如下:) h:\task\develop\python\git\meteva\meteva\base\io\write_stadata.py in put_stadata_to_micaps(sta, effective_num, layer_description) 206 def put_stadata_to_micaps(sta,effective_num = 3,layer_description = None): 207 --&gt; 208 import MPython 209 pyclient = MPython.MICAPSPython() 210 if (pyclient.GetConnectStatus()): ModuleNotFoundError: No module named 'MPython'</code></pre>

页面列表

ITEM_HTML