- 积分
- 24
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2018-6-21
- 最后登录
- 1970-1-1
![未绑定新浪微博用户 新浪微博达人勋](source/plugin/sina_login/img/gray.png)
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
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) # 数据保存到本地
|
|