- 积分
- 8807
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-5-23
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 eeeee 于 2018-12-7 10:44 编辑
一直没有看到有人读取mdfs的站点数据,于是今天就按照数据说明自己写了一个小程序来读MDFS数据。
传入文件路径实例化即可。
- mdfs = MDFS_Station(文件路径)
复制代码 MDFS_Station类含有的属性:
data_dsc:描述信息
level:数据层面
level_dsc:层面描述信息
utc_time:数据时间(世界时),为datetime.datetime类型
data:主体数据,为dict类型,含有的键值有'ID'(站号),'Lon'(经度),'Lat'(纬度)以及数据里对应的物理量数据的编号(见dtype_link.xml)
演示:
- from read_mdfs import MDFS_Station
- import matplotlib.pyplot as plt
- import matplotlib.colors as ccolor
- import matplotlib.cm as cmx
- import cartopy.crs as ccrs
- import cartopy.feature as cfeature
- x = MDFS_Station(r'D:\20181028160000.000')
- lon = x.data['Lon']
- lat = x.data['Lat']
- var = x.data[603]
- cm = plt.get_cmap('jet')
- cNorm = ccolor.Normalize(vmin=min(var), vmax=max(var))
- scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=cm)
- c = scalarMap.to_rgba(var)
- ax = plt.axes(projection=ccrs.PlateCarree())
- ax.scatter(lon, lat, s=5, c=c)
- ax.coastlines(resolution='10m')
- ax.add_feature(cfeature.BORDERS)
- plt.show()
复制代码
————————————更新(2018.11.4)——————————————
加入格点数据的读取
- from read_mdfs import MDFS_Grid
- import numpy as np
- import matplotlib.pyplot as plt
- import cartopy.crs as ccrs
- import cartopy.feature as cfeature
- import metpy.calc as mpcalc
- from metpy.units import units
- filepath = r'D:\18110408.000'
- f = MDFS_Grid(filepath)
- lon = f.data['Lon']
- lat = f.data['Lat']
- norm = f.data['Norm']
- dir = f.data['Direction']
- u, v = mpcalc.wind_components(norm * units('m/s'), dir * units.degree)
- ax = plt.axes(projection=ccrs.PlateCarree())
- ax.streamplot(lon, lat, u, v, density=3)
- ax.coastlines(resolution='10m')
- ax.add_feature(cfeature.BORDERS)
- plt.show()
复制代码 注:data里面向量数据的键值是Norm和Direction,网格数据是Grid
————————————更新(2018.11.9)——————————————
修复了读取站点数据时返回要素长度不同的bug。
————————————更新(2018.12.7)——————————————
添加存储为NetCDF文件的功能
- from read_mdfs import MDFS_Station, NetCDFWriter
- x = MDFS_Station(r'D:\\20181028160000.000')
- a = NetCDFWriter('D:\\1.nc')
- a.load_data(x)
- a.close()
复制代码
|
评分
-
查看全部评分
|