爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 310885|回复: 416

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

  [复制链接]

新浪微博达人勋

发表于 2018-11-3 20:24:59 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 eeeee 于 2018-12-7 10:44 编辑

一直没有看到有人读取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。

————————————更新(2018.12.7)——————————————
添加存储为NetCDF文件的功能

QQ图片20181207104340.png

  1. from read_mdfs import MDFS_Station, NetCDFWriter
  2. x = MDFS_Station(r'D:\\20181028160000.000')
  3. a = NetCDFWriter('D:\\1.nc')
  4. a.load_data(x)
  5. a.close()
复制代码



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


micaps_mdfs.zip

5.5 KB, 下载次数: 775, 下载积分: 金钱 -5

评分

参与人数 4金钱 +65 贡献 +5 收起 理由
风子 + 20 赞一个!
mofangbao + 15 + 5
zhouling + 10 很给力!
xiaohu1643 + 20 很给力!

查看全部评分

本帖被以下淘专辑推荐:

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2023-9-11 10:54:23 | 显示全部楼层
请问读取mdfs的那个库在哪里下载啊
密码修改失败请联系微信:mofangbao
回复 支持 3 反对 0

使用道具 举报

新浪微博达人勋

发表于 2018-11-6 14:37:39 | 显示全部楼层
学习学习,谢谢分享
密码修改失败请联系微信:mofangbao
回复 支持 0 反对 1

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-2-26 13:49:01 | 显示全部楼层
xiahou90 发表于 2019-2-26 11:45
怎么才能批量下载导出mdfs的数据到本地呢?

你可以在micaps里面操作,或者自己写程序下载
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2019-2-19 18:27:27 | 显示全部楼层
请问楼主,怎么才能下载mdfs的数据呢?
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2018-11-3 20:41:07 | 显示全部楼层
支持楼主!!非常实用{:5_213:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-11-3 21:16:36 | 显示全部楼层
我看看哈
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2018-11-3 21:29:11 来自手机 | 显示全部楼层
楼主这个写的很简便啊,看看
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-11-3 22:02:56 | 显示全部楼层
kankankankankan
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-11-4 09:49:44 | 显示全部楼层
多谢楼主分享!!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-11-4 10:31:54 | 显示全部楼层
很给力的楼主,最近也在学这个,有现成的很好。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-11-4 10:49:56 | 显示全部楼层
楼主实例中的20181028160000.000这个数据是怎么获得的呢?GDS么
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-11-4 10:57:24 | 显示全部楼层
O(∩_∩)O哈哈~,好东西,学习学习!!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-11-4 11:10:53 | 显示全部楼层
学习一个
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

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

本版积分规则

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

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

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