范大伟,安志强,刘育锦,曹敦波
(民航新疆空管局气象中心,乌鲁木齐830016)
多普勒天气雷达是预报人员监测、分析中小尺度天气系统的强有力工具;同时也是航空管制人员指挥航空器进行雷雨绕飞的重要参考依据。乌鲁木齐地窝堡国际机场现有一部机场多普勒天气雷达(以下简称ADWR),该雷达是由安徽四创电子股份有限公司设计、开发的新一代大型C 波段全相参脉冲多普勒天气雷达。根据2017 年底下发的《民航空管系统天气雷达运行维护维修规程》[1]的要求雷达服务部门需要备份天气雷达系统基数据和相关产品。该文件下发前只备份基数据,不备份产品。实际业务运行中预报人员查看2018 年以前特定时刻产品,只能手动将对应时刻基数据拷入到雷达数据处理服务器,经特定程序的处理后,才能生成所需要的产品。这种方式会带来两个问题:①雷达运行过程中如果处理以前特定时刻基数据会导致当前时刻的产品无法生成;②雷达数据处理服务器作为重要的数据处理和存储设备,频繁插优盘不利于网络安全。为了解决此问题,本文开发了一套基于MATLAB 的机场多普勒天气雷达基数据显示系统,目前该系统可以实现对雷达强度信息的显示。本系统的最大特点在于采用MATLAB 提供的相关函数完成基数据的显示工作,只需要很少的代码就能完成相关工作。下面将对系统实现进行详细介绍,并通过个例展示本系统的实际效果。
MATLAB 又称矩阵实验室,是一款由MathWorks公司开发的程序设计环境,主要用于算法开发、数据分析、可视化和数值计算[2-3]。利用MATLAB 编程容易上手,且有很多专业函数可供调用,代码量较小,开发周期短,同时MATLAB 还提供了图形界面设计与开发功能,利用该功能可以开发出友好的图形界面[4-5]。
图形用户界面开发:创建一个新的Blank GUI;在新界面中加入基数据选择按钮和仰角选择按钮;通过Tools 下的Toolbar Editor 向新界面中添加放大功能键、缩小功能键;编写回调函数,回调函数的主要功能是完成基数据的解码和强度信息的显示。
体扫基数据是雷达执行体积扫描所获取的原始数据,主要由文件标识、文件头和数据记录块所组成,数据记录块包括回波强度、径向速度和速度谱宽等,以极坐标方式顺序排列,以二进制形式进行保存[6-7]。ADWR 文件标识12 个字节,文件头2048 个字节;雷达数据记录块以径向数据为单位,每个径向数据占4011个字节,前11 个字节为仰角、方位角和时间,后4000个字节分别为经过地物杂波抑制的强度值、不经地物抑制的强度值、径向速度值和谱宽值。这部分涉及的主要代码如下:
[filename,pathname]=uigetfile('*.014','请选择雷达基数据');
fid=fopen([pathname,filename],'rb');
head=fread(fid,2060);
data=fread(fid,4011);
由于ADWR 基数据的后缀名为“.014”,因此利用uigetfile 函数完成基数据的选择;利用fopen 函数打开基数据文件,再利用fread 函数分别读取头文件和数据块。这里需要注意头文件中包含不同仰角径向个数RecordNumber 和距离库数BinNumber,这是因为ADWR 不同仰角的径向个数不一样,距离库数一样,通常是1000。
基数据显示主要涉及以下几个部分:①确定每一点的三维坐标信息;②确定每一点的强度信息;③绘制网格图;④视角的确定和色标的绘制等。关键代码如下:
for i=1:RecordNumber %径向数据个数
for j=1:BinNumber %距离库数
X(i,j)=j*cos(B(i)/180*pi)*sin(A(i)/180*pi);
Y(i,j)=j*cos(B(i)/180*pi)*cos(A(i)/180*pi);
Z(i,j)=j*sin(B(i)/180*pi);
end
end
mesh(X,Y,Z,rad_ref);
view([0,0,1]);
colormap([0 0 0;
0 0 162
0 107 253;
0 186 253;
111 248 255;
0 150 50;
0 220 0;
180 255 180;
196 166 0;
255 255 0;
238 255 0;
255 0 0;
255 100 100;
255 180 180;
150 0 180;
200 100 155;
241 198 253;
]/255);
caxis([-10,70]);
i 和j 表示当前仰角的径向和对应径向上的距离库,A(i)和B(i)分别代表方位角和仰角。通过在基数据解码过程中获取的每个径向的方位角和仰角就可以确定每个径向每个点的三维坐标信息,即每个点的X,Y,Z 信息。
代码中基数据强度信息rad_ref 为二维矩阵,与X(i,j)、Y(i,j)、Z(i,j)排列一致,行为径向个数,列为距离库数,该数据的获取也是在基数据解码过程中完成。
X、Y、Z 和rad_ref 确定后利用MATLAB 自带函数mesh(X,Y,Z,C)进行数据的绘制,mesh 是一个三维网状曲面函数。利用矩阵X、Y、Z 确定网线面,矩阵C 确定最终的三维网格图颜色。绘制结束后需要确定查看的视角,这部分利用view 函数完成,这里采用俯视图,即view([0,0,1])。
colormap 函数与caxis 函数配合使用完成颜色映射,将强度值转换成颜色值。colormap 函数每行代表一个颜色,每行定义一个RGB 三元组,第一列指定红色强度,第二列指定绿色强度,第三列指定蓝色强度;caxis 函数提供一个最小值和最大值,小于等于最小值的颜色用colormap 第一行颜色表示,大于等于最大值的颜色由colormap 最后一行颜色表示,中间数值的颜色根据colormap 函数中的行数据进行线性映射。
本文以2017 年5 月2 日发生在乌鲁木齐国际机场雷雨伴冰雹天气为例,使用18 时32 分(北京时间)的体扫基数据进行强度显示,系统显示效果如图1 所示。基数据选择按钮完成选取特定时刻的基数据进行显示(默认0.5°的PPI 产品);通过点击不同的仰角,可以实现不同仰角PPI 产品的显示;工具栏上有放大、缩小两个个工具,可对图形进行放大、缩小操作。
图1 机场多普勒天气雷达基数据显示系统
该系统实现对ADWR 体扫基数据中强度信息的显示,方便了预报人员分析过往雷达基数据,并在一定程度上解决了只备份基数据不备份产品带来的问题。目前该系统只能显示强度信息,后续计划将径向速度值和谱宽值的显示加入到该系统中,使该系统更加完善。