欲望大过了能力,由此产生了焦虑

pyart中关于线性规划部分代码的疑问

我画大饼说这个周末就要改完本科论文的,结果 pyart 的线性规划部分的函数越看越迷惑,写一篇帮自己梳理一下。

pyart中关于线性规划部分代码的疑问

为雷达 PPI 图像添加地图底图

昨天开始改本科论文,发现了一个问题:如何给自己绘制的雷达 PPI 图添加上地图底图。

画地图底图的话肯定是用 Cartopy 或者是 cnmaps 来画,但是问题是雷达数据存放的形式是极坐标形式,而 Cartopy 或者 cnmaps 绘制地图使用的是经纬度坐标。将雷达数据由极坐标系转换为经纬度坐标系有一个小问题,就是数据量大。haversine 虽然可以根据两个地理位置的距离和角度计算经纬度,但是好像只能计算两个点之间的,一个一个点算的话太慢了。

后来我想到的解决办法是绘制两个图层,然后分别叠加到一起。matplotlibAxes 类有一个 set_alpha 函数可以设置背景透明度,只需要让覆盖在上面的图层背景透明,显示出下面的图,就可以达到图层叠加的目的了。

为雷达 PPI 图像添加地图底图

Cartopy学习使用

昨天本来打算用 matplotlibCartopy 画几张海温图的,结果意外发现我的 Arch Linux 更新软件包以后,估计是 libc 版本太新导致 matplotlib break 了,只要一调用 plt.show 或者是 plt.savefig 必崩,给我人整傻了,又是更换内核又是搞虚拟机,今天下午临时装了一个 Ubuntu 22.04 用着,白白折腾了一天的时间 🤡。

更新:我发现不是 matplotlib break 了,是 Cartopy 和新版的 Shapely 不兼容导致的。执行以下命令从源码重新安装 Shapely 即可恢复正常。

1
pip install "shapely<2" --no-binary shapely --force-reinstall

我之前就用过 Cartopy,但是并不是特别熟。今天画海温图的时候顺便探索了一下,发现了几件有趣的事情,所以分享一下。

Cartopy学习使用

xarray处理气象数据

最近做课程论文需要读取气象数据 (nc格式),之前处理雷达数据时一直都是用 netCDF4 直接梭哈,但是处理全球大尺度的数据时,经常搞日平均月平均,单独取某些月做操作,这个时候 netCDF 就不够看了。正好学一学 xarray,水几篇博客。

xarray处理气象数据

PyQt与matplotlib-画图软件(三):子界面绘图

前言

这是本系列第三篇文章,主要涉及如何将 matplotlibPyQt 结合,PyQt 的信号以及 PyQt 中多线程、多进程的使用

回顾与完善

上节中我演示了如何创建一个主界面和两个子界面并通过按钮和槽函数将三者联系到一起,以及如何为软件绑定快捷键,监听关闭事件 (closeEvent)。现在我们想让用户打开子界面时主界面会隐藏起来,在关闭子界面后主界面再次弹出,防止多余的窗口造成不必要的麻烦。

PyQt与matplotlib-画图软件(三):子界面绘图

PyQt与matplotlib-画图软件(二):主界面设计

前言

昨天终于把软件给写完了,算是我有史以来做过的最大的项目了吧,今天终于能有空闲时间思考一下这个系列的博客该怎么填了。我打算贴出部分代码来展示如何从头写出一个完整的 GUI 程序,但是由于我们需要进行软著和专利的申请,绘图的核心代码就不放出了。但是各位看官放心😋,贴出的代码足够编译出一个完整的 GUI 程序。

温馨提示:文章的最末尾有本节的完整代码

PyQt与matplotlib-画图软件(二):主界面设计

PyQt与matplotlib-画图软件(一):前篇

前前言

前段时间用 Python 帮某市气象局的工作人员画了一下雷达图。最近他们又来找我,想整合一下之前的画图脚本,看看能不能写出一个带有图形界面的画图程序。一来想我们几个一起申请个软著,二来他们以后画图也方便。我正好会一些 Qt,借此机会再练练手,顺便赚亿点钱花😋。

今晚研究了一下怎么用 Qt 展示图片,最后做出了不错的成果,单开一贴记录一下。做完了才想起来之前也跟着教程研究过怎么用 C++ 和 Qt 写一个图片展示器,最后没有成功,不了了之,没想到现在在 Python 上竟然成功了,好耶。那我之前挖的坑就不用埋了吧

PyQt与matplotlib-画图软件(一):前篇

MDFS格式数据转换

最近要读取 MDFS 格式的气象站点数据在 Python 中使用,但是由于其数据格式不是标准的 JSON ,需要用脚本进行转换。于是我去学校网站下载了一个写好的 Python 脚本,但是运行一遍之后发现不仅需要我额外下载 JSON 的库,而且转换一个文件竟然要 368秒 ???

为了提升效率,我就用 C + Cython 写了一个速度更快的。

MDFS格式数据转换

Cpywpa:控制 wpa 的另一个工具

前言

其实我很久之前就想用 Python 来控制 Linux 的 WiFi 了。由于 Linux 基本都是用 wpa 来连接 WiFi 的 (iwd 也挺好用的),所以控制了 wpa (以下我就这么简称了) 就能控制 WiFi。

我以前在 Ubuntu 上试过 pywifi,Windows 上是可以正常工作的,但是我的 Ubuntu 就不行。由于是大一时候的事情了,我也就懒得再深究原因。最近几个月断断续续的在 Github 和 Google 上找了好久,都没有搜索到符合我要求的包:

  • 使用 wpa 的官方接口

于是我就索性自己写了一个。

Cpywpa:控制 wpa 的另一个工具

Cython 学习和使用

写在前面

长期更新

强烈建议亲手编写代码进行操作

最近想写一些用 Python 控制 wpa_supplicant 的程序,然而找到的轮子似乎都是通过 d-Bus 实现的,没有用官方提供的接口的 (也许是因为只提供了 C 的接口吧)。于是想自己通过 Cython 在 Python 中调用这些接口,无奈 Cython 水平太低,只好再学学 Cython。

通过 Google 搜到了一本英文的手册:《Cython: A Guide for Python Programmers》,在此记录学习过程做备忘。

这篇文章会一直更新,直到我看完这本书为止,至于什么时候更新嘛,咳咳….应该不会一直拖着不更,考完了研,人就是闲

Cython 学习和使用