请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

新浪微博登陆

只需一步, 快速开始

QQ登录

只需一步,快速开始

搜索
查看: 501|回复: 29

[源代码] Python读取micaps mdfs数据

[复制链接] |关注本帖

新浪微博达人勋

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

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

x
本帖最后由 eeeee 于 2018-11-13 13:39 编辑

一直没有看到有人读取mdfs的站点数据,于是今天就按照数据说明自己写了一个小程序来读MDFS数据。
传入文件路径实例化即可。

  1. mdfs = MDFS_Station(文件路径)
复制代码
MDFS_Station类含有的属性:
data_dsc:描述信息
level:数据层面
level_dsc:层面描述信息
utc_time:数据时间(世界时),为datetime.datetime类型
data:主体数据,为dict类型,含有的键值有'ID'(站号),'Lon'(经度),'Lat'(纬度)以及数据里对应的物理量数据的编号(见dtype_link.xml)
演示:
QQ截图20181103202231.png


  1. from read_mdfs import MDFS_Station
  2. import matplotlib.pyplot as plt
  3. import matplotlib.colors as ccolor
  4. import matplotlib.cm as cmx
  5. import cartopy.crs as ccrs
  6. import cartopy.feature as cfeature

  7. x = MDFS_Station(r'D:\20181028160000.000')
  8. lon = x.data['Lon']
  9. lat = x.data['Lat']
  10. var = x.data[603]

  11. cm = plt.get_cmap('jet')
  12. cNorm = ccolor.Normalize(vmin=min(var), vmax=max(var))
  13. scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=cm)
  14. c = scalarMap.to_rgba(var)
  15. ax = plt.axes(projection=ccrs.PlateCarree())
  16. ax.scatter(lon, lat, s=5, c=c)
  17. ax.coastlines(resolution='10m')
  18. ax.add_feature(cfeature.BORDERS)
  19. plt.show()
复制代码
Figure_1-1.png
————————————更新(2018.11.4)——————————————
加入格点数据的读取

  1. from read_mdfs import MDFS_Grid
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. import cartopy.crs as ccrs
  5. import cartopy.feature as cfeature
  6. import metpy.calc as mpcalc
  7. from metpy.units import units
  8. filepath = r'D:\18110408.000'
  9. f = MDFS_Grid(filepath)
  10. lon = f.data['Lon']
  11. lat = f.data['Lat']
  12. norm = f.data['Norm']
  13. dir = f.data['Direction']
  14. u, v = mpcalc.wind_components(norm * units('m/s'), dir * units.degree)
  15. ax = plt.axes(projection=ccrs.PlateCarree())
  16. ax.streamplot(lon, lat, u, v, density=3)
  17. ax.coastlines(resolution='10m')
  18. ax.add_feature(cfeature.BORDERS)
  19. plt.show()
复制代码
注:data里面向量数据的键值是Norm和Direction,网格数据是Grid

Figure_1-2.png
————————————更新(2018.11.9)——————————————
修复了读取站点数据时返回要素长度不同的bug。


游客,如果您要查看本帖隐藏内容请回复


micaps_mdfs.zip

4.96 KB, 下载次数: 23, 下载积分: 金钱 -5

评分

参与人数 3金钱 +45 贡献 +5 收起 理由
mofangbao + 15 + 5
zhouling + 10 很给力!
xiaohu1643 + 20 很给力!

查看全部评分

已有1人关注本帖

beesfly

本帖被以下淘专辑推荐:

密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2018-11-3 20:41:07 | 显示全部楼层 |取消关注该作者的回复
支持楼主!!非常实用{:5_213:}
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2018-11-3 21:16:36 | 显示全部楼层 |取消关注该作者的回复
我看看哈
密码修改失败请联系qq:937062711
回复

使用道具 举报

新浪微博达人勋

发表于 2018-11-3 21:29:11 来自手机 | 显示全部楼层 |取消关注该作者的回复
楼主这个写的很简便啊,看看
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2018-11-3 22:02:56 | 显示全部楼层 |取消关注该作者的回复
kankankankankan
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2018-11-4 09:49:44 | 显示全部楼层 |取消关注该作者的回复
多谢楼主分享!!
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2018-11-4 10:31:54 | 显示全部楼层 |取消关注该作者的回复
很给力的楼主,最近也在学这个,有现成的很好。
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2018-11-4 10:49:56 | 显示全部楼层 |取消关注该作者的回复
楼主实例中的20181028160000.000这个数据是怎么获得的呢?GDS么
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2018-11-4 10:57:24 | 显示全部楼层 |取消关注该作者的回复
O(∩_∩)O哈哈~,好东西,学习学习!!
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2018-11-4 11:10:53 | 显示全部楼层 |取消关注该作者的回复
学习一个
密码修改失败请联系qq:937062711
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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