四创电子股份有限公司 姜艳艳
雷达终端软件的主要功能之一就是实时回波显示的功能,本文主要论述一种连续波测云雷达的回波显示技术,在QT平台下调用类库如QPinter类及OpenGl技术等实现高性能、高可靠性雷达终端软件的显示功能。
近年来,计算机图形技术及雷达探测技术得到了长足的发展,对雷达软件的稳定性、可移植性的要求也相应提高。因此QT在雷达终端软件的应用中得以越来越多,QT是奇趣科技公司的产品,是基于C++图形用户界面的应用程序框架,它可以提供应用程序开发者建立图形用户界面所需的所有功能。QT面向对象的框架,具有丰富的API,可以真正实现组件编程。QT具有优良的跨平台特性,可在Windows,Linux,UNIX等操作系统间移植;同时Qt具有封装机制,模块化程度非常高,可重用好,支持进行2D/3D图形渲染,支持OpenGL技术等。
雷达终端软件主要界面包括回波显示区、控制面板区、A显信息窗口、三维显示区等,回波显示区可实时显示及浏览雷达回波数据,基于VS开发的软件,通常采用Direct2D、DirecDraw等技术显示雷达回波,DirectDraw是微软DirectX的部件.是2D图形的引擎,不仅兼容GDI编程,还可以直接对显存进行操作。QT提供了二维绘图系统,主要由QPainter等三个绘图类构成了QT绘图系统的基础。QT的三维绘图技术OpenGL,可建立三维图形的场景。本软件采用QPainter进行绘图显示雷达回波数据,采用OpenGL技术完成三维回波图的显示。
QPainter是QT提供底层的绘图类,QPainter类可允许开发人员进行各种的图形操作,使用其优化的函数来完成图形用户界面的绘制,包括图形、文本、图像的显示,及其他操作如渐变、图形渲染、矢量图形等。QPainter包含三种绘图设备,在绘图时要首先创建绘图设备,重新定义绘图事件paintEvent(),在此函数内设置绘图笔属性,画刷属性,字体样式等。QPainter在自己的坐标系统进行坐标变换,其包含的绘图函数,使用的是整数坐标。需要注意的是,使用完绘图设备要对其进行销毁。
雷达回波图形的方位刻度,时间刻度等可由QPainter绘制,通过调用drawline()函数绘制VPT扫描、RHI扫描的刻度,调用drawEllipse()函数绘制PPI扫描的圆形刻度,调用drawText()函数绘制刻度文本及注释文本。
使用独立的QImage类实现回波像素的显示,QImage在I/O操作速度快,并且给出了访问像素的接口。通过调用成员函数setPixel(),将回波数据的转换为对应的像素点,根据回波数据的RGB值,绘制像素点的颜色。雷达回波数据显示需经过坐标转换,转换为雷达的极坐标;为实现高效的图像绘制,采用双缓存技术。
由于雷达终端软件接收的数据是采用地理坐标,雷达终端软件显示坐标为极坐标系,在进行回波显示绘图时,首先要进行坐标换算。坐标转换的原理就是将视图中心点与屏幕中心点的偏移和比例尺进行计算就可以得到屏幕坐标。两种坐标如图1所示。
图1 地理坐标
图2 雷达极坐标系
地理坐标如图1所示,坐标原点表示雷达位置,x轴指向的是正北方向,雷达所在位置与目标探测点的直线距离R表示斜距,雷达方位角为坐标原点与目标的直线距离在水平面投影点,与x轴的夹角,雷达俯仰角表示原点与目标的距离与z轴之间的夹角。雷达终端软件显示坐标为极坐标系,显示屏的左上角表示坐标原点o,图形的像素位置可由坐标原点计算,水平坐标由左向右增大,垂直坐标由上向下增大,不表征高度信息。因此在雷达数据显示时,首先对雷达数据将三维的数据转换为二维的极坐标,并映射两种坐标系的转换公式为:通过这种变换,有的扫描模式还需要结合地球曲率进行计算,可将雷达回波数据在屏幕极坐标系显示。
由于雷达数据较大,绘制过程需要一定时间,甚至会出现闪烁,为避免这种现象,在雷达数据绘制时采用双缓存技术,即为了节省系统开销,使用QPainter创建临时的绘图设备,先将雷达数据通过坐标转换后,根据回波颜色绘制到临时的绘图设备上,然后使用QPainter创建回波绘图设备,将临时的绘图设备拷贝到回波绘图设备,并调用updata()更新屏幕,经对比这种技术能极大的提高绘图效率,用户看不到图像的擦除、更新和显示处理过程,避免由于图元频繁更新引起的闪烁现象。
雷达常用的扫描,如平扫、高扫、体扫、时间高度扫描等,可在二维绘图显示。但是雷达高扫模式仅能观测到某方位方向水平到雷达顶空的部分空域的回波,为了能全面观测多方位的空域回波,可由多个方位的高扫组成多方位高扫(HSRHI),需要软件在二维云回波显示的基础上,增加三维云回波立体显示.如图3为雷达HSRHI扫描三维径向速度图。QT的OpenGL(Open Graphics Library)提供的构造几何图元的方式,为实现雷达图像显示提供了丰富接口。
图3 OpenGl绘制三维回波
Qt集成的OpenGL模块,是绘制三维图形的标准API,是图形硬件的软件接口,可以在不同的操作系统如Windows、Unix、Linux、OS/2之间进行移植,得到了广泛的应用。QGLWidget是QT封装的一个部件,提供了构建OpenGL的场景,通过对QGLWidget子类化,结合OpenGL命令开发适合用户图形的窗口部件。当创建一个QGLWidget子对象时,系统调用成员函数实现初始化,绘制当前场景,及部件大小位置变化时的场景重绘。
在创建三维图像时,使用OpenGL提供函数的构造几何图元,有必要时可调用函数定义刻度顶点坐标、刻度顶点颜色、纹理图、纹理坐标等。通过这种方式,构造HSRHI场景,根据软件设置的多个方位高扫模式,在三维HSRHI场景显示多方位高扫数据,更加直观显示各方位空域的高扫回波数据。
图4为2019年7月31号合肥地区探测到的实际回波,雷达工作于垂直探测模式,固定仰角指向90°。横坐标为时间,纵坐标为高度。软件进行时间高度积累显示,以固定时间间隔显示新的径向数据,每当新的数据到来时,时间轴会更新为最新时间,通过双缓存技术将之前的数据拷贝,并向前移动到对应的时间刻度位置。扫描时间段结束后,将扫描时间段内的链表数据保存为数据文件。雷达终端软件具备浏览数据文件的功能,可根据数据格式读取并将数据重新绘制显示。
图4 回波图像显示
从图中可以看出,天气状况为降雨,从地面到15km均有回波,10km处回波较强。基于QT绘图机制,雷达终端软件可实时显示的回波图像,能清楚分辨云雨边界信息及云内部精细结构,可用于后期分析云的形成消散等。
结论:通过QT丰富的类库及OpenGL等技术,实现雷达终端软件回波图像的二维及三维显示,能清楚反映当前的天气状态及云边界、云高云低、零度层等信息。软件具有高效性及稳定性,界面简洁,具有较强的人工交互性,并可实现跨平台性能,可满足雷达终端软件对云回波的显示要求。