Code Monkey home page Code Monkey logo

pymicaps's Introduction

PyMICAPS(原名:MicapsDataDraw)更新到 Python3.7 python2.7 版见分支 v2.2-py2.7-20191119

一个超级实用生产图片工具,用 matplotlib 和 basemap 绘制 micaps 数据

利用配置文件config.xml定制参数,结合micaps具体数据,

可实现多种 micaps 数据类型的单独绘制或叠加绘制(in the future)

并自动输出相应图像到指定文件。
Author:Xianyao Liu | Version:3.0.20191120 | E-mail:[email protected] | Language:Python3.7

更新日志

2023-04-18 升级python3.7中的matplotlib和pyshp到最新版

2019-11-20 升级到python3.7

2019-11-19 准备升级到python3.7

2018-07-09 更改工程名称为PyMicaps

2018-03-25 修复一个扩大多边形区域类PolygonEx.py中的bug

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文件的格式为:

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

           或

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

主要功能

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

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

2、支持多种投影

sall:无投影,lcc:兰波托投影,mill,ortho,stere:极射赤面投影,

npstere:北半球极射赤面投影,

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

3、支持底图叠加

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

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

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

5、支持灵活配置色标

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

NCL 色标

6、高度可定制化

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

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

程序运行

python main.py config.xml

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

气象家园帖子作者的片段代码

第三方库nclcmaps

作者的一个支持NCL colorbar的python库。

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

欢迎大家star和fork,一并感谢2位作者!

示例数据结合适当配置文件输出的图片

Micaps第三类数据-等经纬度投影:

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

Micaps第11类数据-等经纬度投影:

Micaps第11类数据-ortho投影:

Micaps第四类数据ortho投影:

Micaps第四类 数据无投影:

Micaps第四类 数据Lambert投影:

Micaps第三类数据-等经纬度投影:

Micaps第三类数据-Lambert投影:

pymicaps's People

Contributors

flashlxy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pymicaps's Issues

问题

您好,这个No module named shapefile 尝试了很多方法还是报错,它该怎样导入呢?

打赏作者

如何打赏

如果觉得我写的代码对你有所帮助,请我喝杯咖啡吧!

微信 支付宝
用微信扫描以上二维码,即可发起转账 用支付宝app 扫描以上二维码,即可发起转账

常见问题

打赏多少?

小额打赏。当然,多多益善,来者不拒。

欢迎留名。在下面评论就可以了。

No module named shapefile?

ImportError: No module named shapefile

是否需要导入arcpy,实现Reader、shapeRecords和shapes三个接口。shapes返回的是要素吗

问题

解决了python版本各种包的问题,还是unsupported operand type(s) for +: 'NoneType' and 'float',哎。您说的运行程序 python main.py config.xml是什么意思呢?我用python.exe运行不了这个命令,pycharm运行main.py也会报错就是这个unsupported operand type(s) for +: 'NoneType' and 'float'。
我只是个小白,望您指点。

运行报错

python环境3.7
报错信息
$ python main.py config.xml
Traceback (most recent call last):
File "main.py", line 13, in
reload(sys)
NameError: name 'reload' is not defined

建议

一个小建议,basemap应该升级到cartopy

运行错误

File "D:\anaconda3\envs\env_name\lib\site-packages\matplotlib\colorbar.py", line 1197, in make_axes
cax.set_aspect(aspect, anchor=anchor, adjustable='box')

File "D:\anaconda3\envs\env_name\lib\site-packages\matplotlib\axes_base.py", line 1387, in set_aspect
self.set_anchor(anchor, share=share)

File "D:\anaconda3\envs\env_name\lib\site-packages\matplotlib\axes_base.py", line 1498, in set_anchor
if not (anchor in mtransforms.Bbox.coefs or len(anchor) == 2):

TypeError: unhashable type: 'list'

这边查看代码发现传入的anchor为kw pop出来的元组,但最后却显示无法哈希list类型。请问micaps文件或者更改config配置文档会导致这种情况吗?望解答。

给作者的一点小建议

建议作者可以加一个requirements.txt
的一个文本文件,这样在anaconda创建的环境下可以直接做好环境。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.