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

基于Python的并行编程技术在海洋数值预报批量二维绘图中的应用

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

资料介绍

针对海洋数值预报产品批量二维绘图占用时间较长的瓶颈问题,在对当前流行的数值模式产品绘图软件进行对比研究的基础上,利用Python语言多种库函数对海洋数值预报产品批量二维绘图进行高效并行优化处理,并对多进程编程方法在不同规模下的并行效率进行了测试分析。实验结果表明:此批量二维绘图方案高效稳定,可为数值模式产品批量二维绘图业务化运行提供有效技术支撑。


部分文件列表

文件名 大小
基于Python的并行编程技术在海洋数值预报批量二维绘图中的应用.pdf 1M

部分页面预览

(完整内容请下载后查看)
海
洋
预
报
第36卷 第5期  
2019年10月  
Vol.36,No.5  
MARINE FORECASTS  
Oct.2019  
DOI:10.11737/j.issn.1003-0239.2019.05.009  
基于Python的并行编程技术在海洋数值预报批量  
二维绘图中的应用  
何锡玉,张志远,林士伟  
(中国人民解放军 91001部队,北京 100161)  
摘
要:针对海洋数值预报产品批量二维绘图占用时间较长的瓶颈问题,在对当前流行的数值模  
式产品绘图软件进行对比研究的基础上,利用 Python 语言多种库函数对海洋数值预报产品批量二  
维绘图进行高效并行优化处理,并对多进程编程方法在不同规模下的并行效率进行了测试分析。  
实验结果表明:此批量二维绘图方案高效稳定,可为数值模式产品批量二维绘图业务化运行提供  
有效技术支撑。  
关键词:Python;海洋数值预报;批量二维绘图;并行优化  
中图分类号:P731 文献标识码:A  
文章编号:1003-0239(2019)05-0071-06  
数值预报科研、业务中重要的工作过程。海洋数值  
1 引言  
预报数据包括初始场、边界场、强迫场和预报场等  
均为 2D/3D/4D 数据,即经度、纬度、深度和时间  
维[8]。将海洋数值预报产品批量二维绘图,制作成  
各种海洋环境保障图形图像,如等值线/面图、流线  
图、矢量图等,为海洋环境预报人员、公众提供丰富  
的图形图像产品,是非常重要的技术环节[9]。  
进入 21世纪,海洋在国际政治、军事、经济中的  
战略地位更加突出,海洋环境安全在维护国家主  
权、安全和可持续发展中的作用也日益凸显。海洋  
环境保障在经济发展、国防安全、基础设施建设等  
方面发挥着越来越重要的作用,涉及到海上安全、  
海洋能源开发与保护、远洋运输和海洋渔业等许多  
领域和方面[1]。海洋数值预报能够快速提供所关注  
海域未来的海洋环境状况,是海洋环境保障的最重要  
手段。海洋数值模式分辨率的不断提高,海量信息的  
不断增长,不断刺激着业务人员对数据可视化的渴望  
和诉求[2-3]。作为一种功能强大的开源编程语言,  
Python包含了丰富的软件包和绘图技术,从而帮助用  
海洋数据可视化在国内外已有大量研究,已经  
广泛应用于海洋科研和业务中,一般是通过专业的  
图像处理软件或编程语言来实现。常见的画图语  
言如 Matlab(https://www.mathworks.com/)、GrADS  
(http://cola.gmu.edu/grads/)、R(https://www.r-pro-  
ject. org/)、NCL()等[9-12]  
Matlab 是大型商业软件,价格不菲,主要用于数学  
工程计算;GrADS 功能相对有限,且画图过程比较  
繁琐;R和 NCL 语言都是处理大气海洋科学数据非  
常优秀、目前国内外流行的免费工具。相比较而  
言 ,近 年 来 在 国 内 外 日 趋 流 行 的 开 源 编 程 语 言  
Python 通用性更好,扩展程序包多,支持面向对象  
编程,数组矩阵处理能力强大,尤其在自动运维端  
。
户完成数据分析、构建统计模型并展现研究结果[4-7]  
。
2 海洋数值预报产品二维图形绘制  
及Python语言介绍  
海洋数值预报产品二维图形绘制是从事海洋  
收稿日期:2018-11-14;修回日期:2019-04-20。  
基金项目:国家重点研发计划项目(2017YFC1404005、2016YFB0201105)  
作者简介:何锡玉(1980-),男,工程师,硕士,主要从事数值预报研究。E-mail:
通讯作者:张志远(1978-),男,高级工程师,博士,主要从事海洋数值预报和信息化工作。E-mail:  
海
洋
预
报
36卷  
72  
和 Web 端 优 势 明 显 。 在 Python 可 视 化 领 域  
matplotlib 是最著名的绘图库,其制图功能不亚于  
Matlab、Grads、R、NCL 等专业绘图工具,并且借助  
于 Python 强大的功能和简洁的语法,使其在编程方  
面也容易得多。  
码获取变量信息,包括产品要素、经度、纬度、深度、  
时间等。其次,利用 numpy 库对数据进行处理,获  
取产品要素数据、处理非有效值、生成经纬网格等。  
第三,利用 basemap 库定义地图信息,包括地图投  
影、分辨率、经纬度范围、地图网格、海岸线、国界  
等。第四,利用 matplotlib 库绘制产品要素等值线/  
面图、矢量图、流线图等和地图信息叠加显示。最  
后,为图像产品添加标注信息,包括参考色标、标题  
信息、文本信息等,保存输出图像产品。图 2为基于  
Python 的海洋数值预报产品(海温)二维图形绘制  
关键步骤代码。  
借助于 Python,可实现对海洋数值预报产品的  
实时快速自动数据处理和批量二维图形产品输出,  
更好地推广海洋数值模式产品的应用服务,同时也  
有助于 Python 这门优秀语言在海洋环境保障领域  
的推广应用。  
3 基于 Python 的海洋数值预报二维  
图 3a 是利用 Python 绘制的西北太平洋有效波  
高、波向数值预报产品图,图 3b 是同一数据目前业  
务化利用 NCL 绘制的西北太平洋有效波高、波向数  
值预报产品图。可以看到,二者在等值线走势、等  
值线间填充、等值线标注、矢量箭头绘制等方面表  
现形式上基本一致。当然,二者也存在一些不同的  
地方,包括自动生成的色标有所差别,默认的地图  
分辨率不一致等,这些都可以在程序脚本中进行手  
动设置以达到美观一致。  
图形绘制  
3.1 技术流程  
采用 Python 语言进行海洋数值预报产品二维  
图形绘制,其技术流程如图 1所示:首先通过 Python  
的 numpy、netCDF4 等库对海洋数值预报产品数据  
(格 式 通 常 为 NetCDF)进 行 读 取 ,然 后 利 用  
matplotlib、basemap 等库绘制地图信息并将海洋数  
值预报产品数据叠加到给定坐标系的地图上,从而  
生 成 最 终 的 二 维 图 形 产 品 。 以 上 功 能 全 部 以  
Python 脚本文件在后台通过搜索匹配数据定时自  
动执行,并以PNG图像格式输出。  
Python 绘图支持中文,字体的默认设置中并没  
有中文字体,所以只要手动添加中文字体的名称即  
可。手动增加如下代码:  
from pylab import *  
mpl.rcParams['font.sans-serif'] = ['SimHei']  
而目前,NCL 绘图暂不支持中文,业务上通过  
合成图的方式以达到在产品图面上添加中文标注,  
即设计好含有汉字的透明背景图和 NCL 绘图通过  
ImageMagick 的 convert 函 数 进 行 合 成 。 在 NCL  
V6.4.0 及 以 上 版 本 可 通 过 导 入 writeslhz for NCL  
Ver 1.0,利用 NCL 的有关函数,完成汉字矢量字体  
的显示处理,支持显示一级字库汉字 3755 个,二级  
字库汉字 3008 个,暂不支持全角字符。而且,NCL  
V6.5.0 以前的版本不支持并行,所以目前业务上使  
用的海洋数值预报产品二维图形绘制 NCL 脚本都  
是串行的,通过多重 for循环绘制多要素、多时次、多  
层次的海洋数值预报产品图,处理效率低下,占用  
时间较多。更为重要的是,NCAR 已决定将 Python  
作为未来可视化和分析软件开发的脚本语言平台,  
NCL 的核心语言和文件 I/O 将进入维护模式,不再  
继 续 新 的 开 发(http://ncl. ucar. edu / open_letter_  
3.2 基于Python的海洋数值预报产品二维图形绘制  
海洋数值预报产品通常为 NetCDF 格式文件。  
首先,利用 Python 的 netCDF4 库对产品文件进行解  
图 1 基于Python的海洋模式产品批量二维图形绘  
制技术流程  

全部评论(0)

暂无评论

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

  • 打赏
  • 30日榜单

推荐下载