爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 389|回复: 0

[求助] meteva库的使用

[复制链接]

新浪微博达人勋

发表于 2024-6-24 09:46:40 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
meteva库的使用中,想通过meb.read_stadata_from_gdsfile函数去读取二进制站点文件,全国的站点太多了,只想读取想要的站点数据。
参考了meteva说明文档 , 当中的station参数可以实现这个功能,但是不知道怎么设置station。

代码如下:

import meteva.base as meb      # 该模块用于IO和基础计算
import os
import numpy as np
import pandas as pd

def Read_m4file(filepath):  # 读取一个文件里所有要素
    """
    :param filepath: 单个文件的路径
    :return: dataframe
    """
    data = {
        "id": np.array([56151, 56152, 56187, 56188]).tolist(),
            # "lon": np.array([100.7399979, 56152, 56187, 56188]).tolist(),
            # "lat": np.array([32.93000031, 56152, 56187, 56188]).tolist(),
            # "alt": np.array([32.93000031, 56152, 56187, 56188]).tolist(),
            # "降水_1小时": np.random.randn(4)
            }
    sta = pd.DataFrame(data)
    print(sta)


    if os.path.isfile(filepath):

        ele_d = meb.print_gds_file_values_names(filepath)  # 打印文件中的要素内容
        ele_d_keys = list(ele_d.keys())
        ele_d_values = list(ele_d.values())

        if 601 in ele_d_values:  # 读温度
            ele_d_keys = ['降水_1小时', '平均风速_2分钟', '温度']
            ele_d_values = [1003, 211, 601]
            for i in range(0, len(ele_d_values)):  # 全部要素读取
                if i == 0:
                    grd0 = meb.read_stadata_from_gdsfile(filepath,
                                                         station=sta,
                                                         data_name=ele_d_keys, element_id=ele_d_values, show=True)
                else:
                    grd = meb.read_stadata_from_gdsfile(filepath,
                                                        station=sta,
                                                        data_name=ele_d_keys, element_id=ele_d_values, show=True)
                    grd0 = meb.combine_on_obTime_id(grd0, [grd], need_match_ob=False)

        else:
            for i in range(0, len(ele_d_values)):  # 全部要素读取
                if i == 0:
                    grd0 = meb.read_stadata_from_gdsfile(filepath,
                                                         station=sta,
                                                         data_name=ele_d_keys, element_id=ele_d_values, show=True)
                else:
                    grd = meb.read_stadata_from_gdsfile(filepath,
                                                        station=sta,
                                                        data_name=ele_d_keys, element_id=ele_d_values, show=True)
                    grd0 = meb.combine_on_obTime_id(grd0, [grd], need_match_ob=False)
        return grd0

if __name__ == '__main__':

    file_path= r"../data/micaps_data/SURFACE/PLOT_ALL/20240501210000.000"
    grd = Read_m4file(file_path)
    print(grd)
    grd.to_excel('2.xlsx', sheet_name='sheet1', index=False)  # 数据保存到本地




密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表