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

matplotlib和Cartopy的点击取值

最近在研究如何从卫星数据中获取雾区数据的问题,有一个大难点就是双通道法反演时如何设置阈值的问题。最直接的方法就是先画一张不设置阈值的图,然后根据坐标打印一下数值,再设置一下阈值。但是这样来来回回要重复跑很多遍代码,为了简化工作量,便研究了一下如何通过鼠标点击图片即可打印出对应点的值。

matplotlib和Cartopy的点击取值

为雷达 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学习使用