爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 10955|回复: 13

[源代码] 【时间剖面图】通用分析算法

[复制链接]

新浪微博达人勋

发表于 2022-9-20 16:56:23 | 显示全部楼层 |阅读模式

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

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

x
1、何谓【时间剖面图】?

【时间剖面图】是个行业术语,表示测站上空气象要素和天气系统随时间演变的一种时空剖面图。
即常见的“时间-高度图”---以时间为x轴,高度为y轴的二维图。

百度百科-时间剖面图

2、
应用范围广

时间剖面图应用范围广,
(1)探测方面:【定点长光程设备】的数据会画这种图,比如【微波辐射计】【气溶胶激光雷达】【臭氧激光雷达】;
(2)预报模式方面:给出的以【预报时效】与高度为维度的结果,也要画这种图;
(3)其他可以构造为类似时间剖面图形式的图谱。

微波辐射计图谱示例:

微波辐射计.png

气溶胶激光雷达图谱示例:

气溶胶激光雷达.png



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

新浪微博达人勋

 楼主| 发表于 2022-9-20 17:33:23 | 显示全部楼层
3、分析内容:条带识别与升降运动

【时间剖面图】中,识别“高值条带”和判断其升降运动,具有较高的研究价值业务价值

(1)第2节中,气溶胶激光雷达的【时间剖面图】中,有很多气溶胶“条带”,它们高度不同,有升有降,
从高空下降到地面,或者从地面抬升离开,对地面人类活动区都有着直接的影响。

(2)类似的,不少研究已经证明,城市上空的臭氧,存在着昼夜升降的现象,
那么,臭氧“条带”在【时间剖面图】上会出现周期性升降。

(3)对于能测定消光值的设备,下雨前,湿空气下降,雨后,湿空气上升,
高湿“条带”在【时间剖面图】上呈现V字型。

(4)对于微波辐射计,冷暖空气的上升下降,对地面人类活动区有着直接的影响。



密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-9-20 21:57:30 | 显示全部楼层
4、读取数据

读取数据的具体程序,得看具体情境,不能一概而论。

以常见的长光程设备为例,
它们保存数据是每条廓线保存为一个文件,所有廓线文件放在一个文件夹里,
我读这些数据的步骤是:

(1)写一个读取【单个廓线文件】的模块(.py文件),
例如:read_single.py
参数是廓线文件的地址,
返回值是一个字典,包括监测量的序列和时间。

(2)写一个基于read_single.py,将所有廓线结果合并的模块,
例如:read_fold.py
参数是廓线文件夹的目录,
返回值是一个字典,包括二维监测量的序列,和时间序列。

(3)对read_fold.py的返回值进行优化整理,例如:
A.添加高度序列,截断过高的高度;
B.控制数据类型,节约存储空间,能用np.float32的就别用np.float64;

虽然读取程序是不固定的,但是,为了后续计算代码的复用性,这里的结果可以是统一的格式。

处理后的数据,保存为一个字典result,它有3个键,
(1)时间:result['t'].shape-->(144,)
(2)高度:result['ht'].shape-->(400,)
(3)监测量:result['o3'].shape-->(400,144)
其中,
我们假设监测量是O3,
这里的400和144只是举个例子,显示3个量之间的对应关系。

最后保存为pkl文件,
后续计算处理时,就用这个pkl文件,不用原始数据文件了。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-9-21 15:04:57 | 显示全部楼层
{:eb513:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-9-21 15:42:40 | 显示全部楼层
5、降噪

由于原始图谱中存在很多噪点和毛刺,直接对原始图谱进行【高值条带】的识别,计算上必然很困难,
我的做法是,先将二维数组进行【中值滤波】,再进行识别。

中值滤波可以用函数:scipy.signal.medfilt2d

不能直视的原图:(声明:数据是瞎编的!)

马赛克图.png

降噪后的效果:

去噪图.png

以上2张图,横轴是时间,纵轴是高度(下为低空,上为高空),
代表浓度值的颜色看起来不同,是因为用的色条不一样,大家只看总体趋势像不像即可。


密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-9-21 15:46:58 | 显示全部楼层
6、计算廓线极大值点

需要写一个函数,获得单条廓线的极大值点,


get_curve_peak.png


再基于以上函数,获得所有廓线的极大值点,下图中的圆点代表极大值点:


臭氧廓线.png

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-9-21 15:59:59 | 显示全部楼层
7、极大值点的连接方式

将极大值点画在时间-高度图上(颜色代表浓度值):

臭氧污染层.png

我们发现,这些散点在视觉上已经形成若干线条了,这是个好现象。

我们认为,【高值条带】是极大值点连接而成,
那么,如果将散点连成线呢?

对于每一个点,我们在其后面aa分钟和上下bb米的区域,找出距离最近的点,
每2个点的连接关系写作:((t1,ht1),(t2,ht2)),
它表示点(t1,ht1)与(t2,ht2)连接,这个连接方式是有前后顺序的。

对于所有点都进行查找计算,最后形成了元组序列:
[((t1,ht1),(t2,ht2)),((t2,ht2),(t5,ht5)),((t7,ht7),(t3,ht3)),......]
这个序列将指导我们把散点全部连成线。




密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-9-21 16:13:54 | 显示全部楼层
8、结绳方式

上一节,我们确定了每个点与后面哪个点连接,那么从绳头开始往下“编织”即可。
那么,绳头怎么找呢?

我们从上一节的【连接关系序列】中,
将每对坐标的中的前一个坐标都提取出来,构成【前坐标的集合】,
将每对坐标的中的后一个坐标都提取出来,构成【后坐标的集合】,
集合运算中,【前坐标的集合】-【后坐标的集合】的结果就是【绳头】的坐标集合!

下图中,红点为【绳头】:
绳头.png

从每个绳头开始,按【连接关系序列】贪吃蛇式地追加点,直到不存在后续点为止。

至此,我们就获得了所有【高值条带】的线条。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-9-21 16:27:28 | 显示全部楼层
9、低空条带的识别

科研和业务中,空中的监测量对地面的影响,都是最值得关注的。

【低空条带】的确定逻辑:
(1)如果我们认为高于500米的就对地面没有影响,那么【低空条带】上最低点的高度必须低于500米;
(2)【低空条带】下方不能有其他条带,在垂直方向上,它必须最接近地面。
因为如果有更低的条带,那为什么不用那个条带来分析地面状况呢?

第1条容易判断,第2条如何实现呢?

方法如下:

获取时间数据的集合,对每个时间,搜索出高度最低的点。
只有这些点,是可以垂直向下直视地面的。
即下图中红色点:
能直接看到地面的点.png

然后,对每个条带上的点进行判断,如果出现任一点不是以上红点,那这个条带就不是【低空条带】

最后得到低空条带(红色):
直面地面的污染层.png

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-9-23 11:47:07 | 显示全部楼层
那大佬用什么画的呢?有没有脚本求一个
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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