爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 398953|回复: 1560

[源代码] 重磅推出,利用matplotlib和basemap绘制micaps数据

  [复制链接]

新浪微博达人勋

发表于 2017-4-7 15:01:45 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 非对称 于 2023-4-18 13:43 编辑


重要提示:本帖不定期更新,请下载最新版本。

2019-11-21
更新到 Python3.7+
2023-04-18 适应py3.7最新版的matplotlib、pyshp

2018-03-21 修复一个在无投影下绘制shp文件的bug

2017-04-19 裁切区对流线和风矢也有效,修复1个自定义绘图区的BUG

2017-04-18 修复在投影下绘制第11类数据当纬度步长为负数时出不了图的BUG

2017-04-15 修复等值线标注在裁切区外还显示的BUG。

                      增加一种快捷包含shp文件中所有闭合区域作为裁切区的配置参数。

2017-04-14 增加Micaps第17类数据的绘制。

2017-04-13 增加Micaps第11类数据的绘制,修复数个小BUG,优化配置文件逻辑。

                      统一边界txt文件的格式为:

                      经度 纬度 经度 纬度 经度 纬度 ......
                     
                      或

                      经度 纬度
                      经度 纬度
                      经度 纬度
                      ......

MicapsDataDraw

一个python语言编写的超级实用生产图片工具,用matplotlib和basemap绘制micaps数据【源码共享】

利用配置文件config.xml定制参数,结合micaps具体数据,可实现一种或多种类型(in the future)的micaps数据的叠加绘制

并自动输出相应图像到指定文件。

主要功能

1、支持Micaps第3、4和11类数据的绘制

目前实现了某类数据的单独绘制,多类数据叠加在不久的将来实现。

2、支持多种投影

sall:无投影,lcc:兰波托投影,mill,ortho,stere:极射赤面投影,npstere:北半球极射赤面投影, hammer,kav7,

merc:麦卡托投影,gnom, cyl:等经纬度投影。

3、支持底图叠加

用多个shp格式或者定制的txt文件叠加到底图。

4、支持任意区域完美白化

用shp或者定制的txt文件所形成的单个或多个闭合区域切图(也叫白化),轻松实现分省绘图。

利用多个裁切边界对象的path构建复合路径作为裁切区的一个方法,代码如下

@staticmethod
def MergePaths(clipborders):
    if clipborders is None or len(clipborders) < 1:
        return None
    path_clips = [x.path for x in filter(lambda clip: clip.using, clipborders)]
    if not path_clips:
        return None
    else:
        path = Path.make_compound_path(*path_clips)
    return path

5、支持灵活配置色标

可以自己定义色标,同时支持NCL色标

6、高度可定制化

包括但不限于标题内容、样式、位置;色标选择、位置、放置方式;

色版图、等值线、标注、格点着色的显隐等都实现了高度自定义。

程序运行

python main.py config.xml

项目参考的代码及的用到的一些库

代码

气象家园帖子完美白化作者平流层的萝卜的片段代码

第三方库
matplotlib>=3.0.3
安装方法:
conda安装 conda install matplotlib==3.0.3
pip安装 pip install matplotlib==3.0.3

basemap

numpy

natgrid
安装包见.\lib\natgrid-0.2.1-cp37-cp37m-win_amd64.whl
安装方法:pip install natgrid-0.2.1-cp37-cp37m-win_amd64.whl

scipy

sympy

pyshp>=1.2.10

nclcmaps
安装包见.\lib\nclcmaps-master.zip
安装方法:解压后在当前目录运行python setup.py install

cchardet

【matplotlib,basemap,numpy,natgrid,scipy,sympy,pyshp,nclcmapscchardet

版主又是那隻貓的一个支持NCL colorbar的python库。

一并感谢2位大师!

以下是利用示例数据结合适当配置文件输出的图片

Micaps第11类数据 等经纬度和兰波托投影、自定义区域、中国区作为裁切区(流线风场也有效)

10.png
17032520.001.png

Micaps第11类数据等经纬度投影:
17032520.001.png

Micaps第11类数据ortho投影:
7.png

Micaps第四类数据ortho投影:

以下源码和示例数据回复可见:

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


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

点评

你要写一个environment.yml文件啊,我装了好几次都没装成功  发表于 2018-8-19 03:26

评分

参与人数 10金钱 +150 贡献 +18 收起 理由
linlinouc + 10 赞一个!
pixi + 5
931404656 + 20
电视机 + 5 很给力!
adam_5 + 20 + 1 赞一个!
风往北吹 + 10 + 2 很棒~
mofangbao + 20 + 5
又是那隻貓 + 30 + 6 不错
云知道 + 10 + 2 赞一个!
风子 + 20 + 2 很给力!

查看全部评分

本帖被以下淘专辑推荐:

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

新浪微博达人勋

发表于 2017-4-7 15:47:38 | 显示全部楼层
666666666666666666666666666666666
密码修改失败请联系微信:mofangbao
回复 支持 0 反对 1

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2017-5-12 23:15:15 | 显示全部楼层
adam_5 发表于 2017-5-10 09:53
恩,已经看到了,谢谢,多要素填值我也画出来了,现在就想能不能把总云量画出来,marker=‘o’时有个参数 ...

用不着这么麻烦,直接调用WMO的字体库文件wx_symbols.ttf, 可以直接 显示天气现象、总云量、低中高云状,过去天气现象等等
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2017-4-7 15:08:55 | 显示全部楼层
源码回复可见
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-4-7 15:22:42 | 显示全部楼层
blabla
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2017-4-7 15:22:44 | 显示全部楼层
喜闻乐见
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2017-4-7 15:23:05 | 显示全部楼层
吃瓜群众前来围观
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-4-7 15:36:28 | 显示全部楼层
好资源,感谢分享111111
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-4-7 15:42:52 | 显示全部楼层
很给力哈哈
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-4-7 15:45:16 | 显示全部楼层
非常好学习下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-4-7 15:58:14 | 显示全部楼层
z赞{:5_213:}{:5_213:}{:5_213:}{:5_213:}{:5_213:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

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

本版积分规则

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

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

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