推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

MICAPS第四类数据格式Python处理库的实现和应用

更新时间:2019-12-26 22:13:56 大小:2M 上传用户:songhuahua查看TA发布的资源 标签:python 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

本文基于Python语言设计和实现了MICAPS第四类数据格式的通用接口库Diamond4,包含数据读写,格点到站点的插值,数据格式转换等功能。Diamond4库简洁高效,可有效支持对MICAPS数据的本地开发。最后展示了Diamond4库结合其他Python第三方库在新乡市气象台本地业务应用的两个实例:结合Bokeh库的多模式站点两米温度的自动提取和结合Arcpy库的多模式降水对比邮票图的自动生成。


部分文件列表

文件名 大小
MICAPS第四类数据格式Python处理库的实现和应用.pdf 2M

部分页面预览

(完整内容请下载后查看)
625期第十二期  
201712月  
河南科技  
地球与环境  
Henan Science and Technology  
MICAPS第四类数据格Python处理库的实现和应用  
1 袁鹏2 段中1  
1.新乡市气象局南 新乡 4530032.延津县气象局南 延津 453200)  
本文基Python语言设计和实现MICAPS第四类数据格式的通用接口Diamond4含数据读写,  
格点到站点的插值据格式转换等功能。Diamond4 库简洁高效有效支持对 MICAPS 数据的本地开发。  
最后展示了 Diamond4库结合其他 Python 第三方库在新乡市气象台本地业务应用的两个实例Bokeh 库  
的多模式站点两米温度的自动提取和结Arcpy库的多模式降水对比邮票图的自动生成。  
关键词MICAPS四类数据Diamond4库  
中图分类号P451  
文献标识码A  
文章编号1003-5168201712-0152-03  
The Implementation and Application of a Python Library  
for MICAPS Fourth Format Data  
Zhu Feng1 Yuan Pengyan2 Duan Zhongxia1  
1.Xinxiang Meteorological BureauXinxiang Henan 4530032.Yanjin Meteorological BureauYanjin Henan 453200)  
Abstract: We designed and implemented a Python library named Diamond4 for processing the MICAPS  
fourth format data. The library consists the utilities of data writing and reading, grid-to-station data extrac⁃  
tion, format conversion et al. which will efficiently support the native development on the MICAPS data.  
The last showed Diamond4 library combined with other Python third party libraries in two instances of lo⁃  
cal meteorological station business application in Xinxiang city: Combining site of multi mode Bokeh base  
two meters temperature automatic extraction and combination of Arcpy library multi mode contrast stamp  
for automatic generation of precipitation.  
Keywords: MICAPSfourth format dataDiamod4 library  
分气象信息综合分析和处理系统 MICAPSMeteo⁃  
rology Information Comprehensive Analysis Process Sys⁃  
tem我国气象业务的基础软1中第四类数据  
MICAPS 系统自定义的格点数据格式。国家气象信  
息中心通过 CMACast 卫星系统下发的多种气象实况数  
据和数值预报模式结果通常最终被解码成第四类格  
MICAPS 系统可视化呈现或处理。因此层预  
报员接触最多的气象数据通常以 MICAPS 第四类格式  
呈现。这种格式都是单个的文本文件对于 Grib1、  
Grib2HDF 或者 NetCDF 等高级格式要简单明了许多。  
鉴于 MICAPS 第四类数据使用的简单性和普遍性何  
开发一个通用的洁高效的针对 MICAPS 第四类数据  
格式的程序接口库便基层预报员在这类格式的数  
据基础上定制开发本地化应用本文要解决的主要  
问题。  
1
设计背景和思路  
Python 是一门简洁且功能强大的开源编程语言因  
其活跃的社区支持现了大量优秀的第三方库盖了  
2]  
网络编程据库入式戏等多个领域 其在科  
学计算和机器学习领域Python 变得越来越受欢迎。此  
Python 语言还被应用于气象领域要用于开发绘  
3]  
图 。Python简明易学易快速上手。考虑到需要开发  
的程序接口库主要供基层预报员使用Python  
作为开发语言不仅可以减少开发成本能减少学习和  
使用的难度。本文设计开发的库是纯 Python Py⁃  
thon内置的库外依赖其他第三方库括在科学计算  
领域使用较多的 NumpyPandas 保证其简洁易用。  
收稿日期2017-11-01  
作者简介1988-理工程师究方向期短时天气预报预警。  
12期  
MICAPS第四类数据格式Python处理库的实现和应用  
·153·  
因为 MICAPS 数据格式的头文件大都以英文 Diamond 开  
此将处MICAPS第四类数据格式的库命名Dia⁃  
mond4。  
(month, day, hour, interval) = data_raw4:8]  
year = data_raw3]  
if len(year) == 2:  
MICAPS第四类数据具有统一的定义方体定义  
说明请参见官方论坛网站或 MICAPS 自带的帮助文year)  
每个第四类数据文件的文件头都对特定的属性进行了明  
确规定个属性以空格分割是具体数据不一样。因  
以将 MICAPS 第四类数据看做一个类一个 MI⁃  
CAPS第四类文件视为一个对象。很自然地用面向对  
象的设计方式容易保障代码的结构性和逻辑性。Dia⁃  
year = ('20' + year) if int(year) < 49 else ('19' +  
elif len(year) == 4:  
pass  
else:  
raise Exception('year parameter error!')  
# start_timevalid_time没有统一规定看具  
mond4类根MICAPS第四类数据的格式义了相应属  
个属性作为对象的一个字段际格点数据也是对  
象的一个字段一维列表的方式保存数据部分。格点  
数据是二维数据一维列表保存为了减少内存消  
了更容易获取格点值以定义取值方Value根  
据行列号直接获取对应值而在逻辑上屏蔽数据实际  
存储的组织方式。在此基础上以很方便地再设计定  
义其他方法。  
体情况  
self.start_time = datetime.datetime(int(year),int(month),  
int(day), int(hour))  
self.valid_time = self.start_time + datetime.timedelta  
(hours=int(interval))  
# 数据部分一维数组表示  
self.data = float(i) for i in data_raw22:]  
del data_raw  
def value(self, row, col):  
2
Diamond4库的主要实现  
'''据行列号获取格点值格点数据看成 self.  
cols*self.nums_lat 的二维数组回第 row col 列的  
rowcol必须为整数0开始计数标原点在左上  
'''  
下面的代码给出了 Diamond4实现的主要部分初  
始化方法和取值方法。Diamond4类库的具体实现代码托  
管 在 GitHub 网 址 为
MeteoPlot/blob/master/pyMicaps.py。  
class Diamond4(object):  
if row < 0 or row >= self.rows or col < 0 or col >  
= self.cols:  
diamond = 4  
raise Exception('out of data spatial range')  
return self.datarow * self.cols + col]  
#构造函数  
def __init__(self, file_path):  
3
Diamond4库在本地业务中的应用  
with open(file_path, 'r') as f:  
#读入原始数据  
开发 Diamond4 的主要目的就是方便有开发经验的  
基层预报员直接在 MICAPS 数据基础上进行开发。现在  
将展示两个应用Diamond4库的两个实例别是多模  
2m站点温度的提取和多模式降水对比邮票图绘制这  
两个应用每天定期自动化运行经在新乡市气象台的  
实际业务中使用显著提升了预报员的工作效率。  
3.1 多模2m站点温度的自动提取  
data_raw = word for line in f.readlines() if line:-  
1.strip() for word in  
line.split()]  
#定义相关属性  
self.doc = data_raw2.decode('gbk') # 说明字符串  
(self.size_lon, # x, 一般为正  
self.size_lat, # y正负号  
self.lon_start, # 起始经度  
Diamond4 在多模式 2m 站点温度的自动提取中的应  
用主要是利Diamond4IDW方法格点数据插值  
到特定站点。IDW 的以站点位置经纬度为输入参数可  
以是多个站点必须(lon1,lat1,(lon2,lat2),…(lonN,  
latN)式的一系列站点位置纬度必须是弧度形式,  
返回值是对应各个站点值的列表。具体是利用反距离加  
权的方法据站点距离周围四个格点值的距离进行加  
权计算个点的权重与距离的平方成反IDW  
方法的默认值可以用其他幂。  
self.lon_end, # 终止经度  
self.lat_start, # 起始纬度  
self.lat_end) = (float(i) for i in data_raw9:15)  
终止纬度  
(self.cols, # 纬向格点数目列数  
#
self.rows) = (int(i) for i in data_raw15:17) # 经  
向格点数目行数  
4]  
# 日期时间处理  
Bokeh库 是基于网页绘图Python第三方库绘  

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载