新一代天气雷达业务化系统地图设计及模式应用

2022-01-04 09:09孙剑孙召平
气象科技 2021年6期
关键词:访问者雷达站设计模式

孙剑 孙召平

(北京敏视达雷达有限公司,北京 10094)

引言

地图是天气雷达在数据显示分析时必不可少的信息。天气雷达地图数据包括省界、市界、县界、河流、城市名、县名、地形等[1]。现有业务端主用户处理系统(PUP)显示数据时,每个雷达站须单独配置地图文件[2],地图文件采用雷达站点为中心的笛卡尔坐标系表示[3],内容仅限于当前雷达站扫描范围内地理信息,投影方式固定[4]。如果需要显示其他雷达站的产品文件,需要额外申请对应雷达站的地图匹配文件重新加载显示,若雷达站点位置信息发生变化(如测绘部门订正后),还需重新联系厂家制作对应地图文件,应用过程诸多不便,并且每个台站后端对应多个PUP应用端,升级地图容易造成疏漏,进而造成雷达数据与地图信息的匹配错误。

新一代天气雷达业务化系统(ROSE)产品显示子系统,改进了现有业务PUP系统中分站定制地图方式,采用了一份统一的全国地理信息地图文件。地图数据基于大地2000坐标系[5],在不同雷达站点数据显示时,程序会依据各站点中心经纬度自动定位,并显示各雷达站扫描范围内的地理信息。软件还支持不同雷达站点数据的对比显示,避免原有PUP系统多站需要多份地图文件的不便及站点信息变更带来的地图定位偏移问题。ROSE产品显示子系统在地理信息的表达上采用经纬度方式,还支持指定位置的图标标识及地形图像信息加载,扩展了数据的应用方式,但在实际应用中地形图像地理信息文件数据量庞大,打包全国数据会使得发布的安装文件过大,针对目前台站业务端应用特点,ROSE产品显示子系统仍采用了分雷达站点单独定制地形图像的处理方式。

全国地图地理信息自适应加载的显示方式,相对单站区域地图数据的增加会占用更多的内存,站点地图的动态匹配范围显示也增加产品显示时的代码复杂度。ROSE 产品显示子系统通过设计模式的应用,在地图显示信息和显示效率间进行了平衡,做到了内存占用低,显示速度快,同时还降低了开发复杂度。

1 地图格式设计

现有业务PUP显示系统以图层进行数据划分,系统默认主地图带有省界、城市、县界、县名、河流图层信息,用户自定义地图文件仅包含高速公路、航线(低)、流域、航线(高)、航标、机场六种图层[6-7]。显示的图层种类及名称固定,无法指定地图显示颜色及字体等更多信息。

在ROSE系统产品显示系统中,地图采用开放式格式,以数据类型进行划分,共分为文本、线段、图标、图标文本混合、地形图像5种数据类型,每种数据类型中,用户可以随不同应用场景动态扩展自定义图层,添加相应类型数据,指定不同图层数据的显示参数。①文本数据,包含文字信息,以SECTION TEXT作为类型标识,通常为地名数据,如城市名称、机场名称等,具体数据格式及说明见表1。②线段数据,包含线段信息,以SECTION LINE关键字开始,通常为省市边界、河流流域等数据,具体数据格式及说明见表2。③图标数据,包含图标信息,以SECTION ICON关键字开始,可以标识雨量计、风电塔等建筑物,具体数据格式及说明见表3。④图标文本数据,包含图标与文本的组合信息,以SECTION ICON_TEXT关键字开始,可以标识如机场、雷达站等特定识别物,具体数据格式及说明见表4。⑤地形图像数据,以雷达站为中心的一定范围地形图像信息,方便用户识别山地、平原、地物等地形特征,默认配置为等距方位投影[8]PNG格式图像。图像文件名称包含站号、图像范围、投影方式信息,5种类型数据显示示例见图1a~e,多种地图数据混合显示示例见图1f。

图1 叠加不同数据类型地理信息的雷达反射率产品示例:(a)叠加文本地理信息,(b)叠加线段地理信息,(c)叠加图标地理信息,(d)叠加图标文本地理信息,(e)叠加背景地形图像信息,(f)叠加多种地理信息

表1 地图文本数据格式及说明

表2 地图线段数据格式及说明

表3 地图图标数据格式及说明

表4 地图图标文本数据格式及说明

2 地图与模式应用

新地图格式提供更多的数据内容,为新一代天气雷达系统的产品分析应用带来了更丰富的信息,地图应用实现过程中,通过设计模式的引入[9-14],达到了显示内容的丰富与效率的平衡,不仅如此,还提高了软件复用水平,增加了系统可维护性,方便后续系统功能扩展升级。

2.1 地图数据加载-单例模式

单例模式,为类自身负责创建及保存唯一实例,保证没有其他实例可以被创建,由该类提供访问该实例的方法。通过私有化构造和拷贝函数,提供统一静态访问接口,保证实例的唯一,避免重复定义。

在应用地图数据时,需要将地图文件加载到内存中访问,以提高后续访问效率和可操作性。为实现此种方式,全国地图采用设计模式中的单例模式,动态加载访问。

ROSE系统中,地图采用懒汉式静态初始化方式,通过MapDocSingleton类的instance静态实例,在自己被加载时就将自己实例化,构建单例对象,并将全部地图信息载入内存结构,后续应用通过MapDocSingleton对象调用getInstance方法,严格控制应用对象对其访问方式,避免实例化生成多个对象,对唯一实例提供受控访问,避免系统多线程环境下访问的不安全问题。地图数据单例模式结构如图2所示。

图2 地图数据单例模式结构

2.2 地图数据转换——访问者模式

访问者模式,表示一个作用于某对象结构中的各元素的操作,可以在不改变各元素类的前提下定义作用于这些元素的各种操作,通过这种方式,元素的执行算法可以随着访问者改变而改变,其主要将数据结构与数据操作分离,解决稳定数据结构和易变操作的耦合问题。

ROSE系统在产品显示时,采用多文档(MDI)方式。通过打开不同产品窗口,每个窗口显示地图可以对应不同站点、不同投影方式。ROSE系统在访问地图时,通过访问者模式,将加载的全国地图数据与不同站点、不同投影方式下的处理进行解耦。

ROSE系统在MapDocSingleton构建地图单例对象后,由地图访问者MapVistor对象,进一步缩小使用地图数据范围,主要处理为:①地图切割: 将地图数据包含的全国地理信息通过MapVistor对象,进行不同投影方式下的距离计算,得出雷达显示窗口范围的经纬度边界,对以雷达站点为中心一定范围内的正方形区域内数据进行切割[15],减少数据访问量,提高投影转换时访问效率。②投影转换:根据投影方式,MapVistor对象通过投影转换处理[16-17],将原始的经纬度方式表达数据转换为以雷达站点为中心的笛卡尔直角坐标系位置信息,同时将默认提供的以等距方位投影的地形图像,也动态转换为相应显示所用投影方式下的图像数据。在绘制窗体时,避免复杂耗时的投影运算,采用投影后的直角坐标系信息直接进行绘制显示,极大提高了绘图效率。地图数据访问者模式结构如图3所示。

图3 地图数据访问者模式结构

2.3 地图数据使用——享元模式

享元模式,就是运用共享技术,有效地支持大量细粒度的对象,可以避免大量相似类的开销,主要用于减少创建对象的数量,以减少内存占用和提高性能。

ROSE 产品显示子系统同时, 分窗口显示多个站点的多种产品。如果每个窗口独立加载地图访问,会占用较多内存空间,为避免内存重复分配,在窗口地图访问时,采用享元模式,实现同类地图数据,各个窗口间的共享访问。

地图在每个窗口绘制时,通过地图享元工厂类MapFactory,共享地图访问者MapVisitor对象,如果未找到匹配的访问者,则动态创建新的MapVisitor对象。MapFactory存储窗口相关的图层选择信息,绘制处理时依据地图访问者返回的数据及用户对窗口指定的图层进行图像绘制。享元模式增加了地图访问的易用性,降低了内存使用,避免独立加载内存的反复分配及释放,提高了访问效率。 地图数据享元模式结构如图4所示。

图4 地图数据享元模式结构

2.4 地图处理流程

新一代天气雷达系统在地图处理过程中,流程上先加载地图文件进入内存,以MapSingleton(地图单例)存储,用户打开某一产品进行窗体显示时,由MapFactory(地图享元工厂)选择MapVisitor(地图访问者),如果对应站点,对应投影方式的MapVisitor存在,则返回相应MapVisitor, 如果不存在则由MapFactory 创建生成新的MapVisitor,进行共享管理后返回新建MapVisitor,再由返回的MapVisitor提供地图数据,供窗体进行地图绘制显示。地图处理流程如图5所示。

图5 地图数据处理流程

3 性能测试

浙江省已经进行精细化天气雷达部署[19],精细化雷达需要匹配更细致的精细化(村镇级)地理信息[20-21]。在此,对于设计模式的改善效果,以浙江省精细化地图数据进行测试,台站应用全国基础地理信息约20 MB文件大小,由用户提供村镇精细化地图信息约166 MB的文件大小,合计共约186 MB文件内容。其中线段类数据2213305条,文本类数据6746个。对地图应用进行本文中所述设计模式优化前后测试,验证其对性能改善的效果。

以杭州雷达站单站500 km半径范围显示地图,地图图层包括河流、省、市、县、乡各级信息,全部图层显示示例如图6所示(村镇地名文本受显示区域影响,交叠文字部分自动隐藏,随显示区域放大自动显示)。采用软硬件环境见表5。

表5 测试计算机配置

图6 杭州雷达站精细化地图显示示例

测试步骤:①程序原有处理方式下,分别记录仅包括全国基础地理信息时与包含浙江省精细化地理信息后的全部地图图层显示绘制耗时。②设计模式优化后,分别记录仅包括全国基础地理信息时与包含浙江省精细化地图数据后的全部地图图层显示绘制耗时。③重复10次步骤①~②,得出平均处理耗时。

测试结果见表6,可以看出采用原有处理框架绘制此地图数据时,因需遍历全部地理信息数据实时处理解析,数据量大、处理耗时高,基础地理信息的加载平均耗时约为100 ms,合并浙江省精细化地理信息后平均耗时约为6000 ms。

表6 地图绘制效率测试结果对比 ms

设计模式结构优化后,应用单例模式和享元模式,避免了地理信息数据在MDI多个窗口打开时的重复加载时间消耗,并通过MapVisitor访问者模式对显示区域范围内地理信息数据进行了提取及预处理,基础地理信息的加载平均耗时约为9 ms,合并浙江省精细化地理信息后平均耗时约为100 ms。

对于仅有全国基础地理信息数据情况下,优化后绘制性能约为原有处理的10倍。而对精细化地理信息数据情况下,优化后绘制性能为原有处理的60倍。由此可见,通过设计模式应用,极大改善了显示区域范围内地图的绘制性能。对于大数据量地理信息,设计模式优化后带来的性能提升尤其明显。

4 结论

新一代天气雷达业务化系统在地图设计上,提供了灵活的数据结构,融合了更丰富的信息展示,方便用户自行扩展地理信息进行显示。在软件实现上,通过设计模式的应用,极大改善了地理信息显示绘制效率,规范了程序开发设计,便于后续系统的扩展维护。

新一代天气雷达业务化系统已经应用于我国部分新一代天气雷达业务运行,地图显示处理在实际业务使用中效果良好。相对现有PUP系统,精细化地图信息的显示,更可以精确定位雷达回波区域,提高精细化预警能力。针对背景地形图受限于数据量仍需分站定制加载的不足,后续会进一步探求方法改进,为用户带来更好的应用体验。

猜你喜欢
访问者雷达站设计模式
设计模式识别的特征信息分类研究
“1+1”作业设计模式的实践探索
智慧图书馆环境下的融贯式服务设计模式研究
三维协同设计模式下的航天项目管理实践与展望
简述电商运营大数据标准
人物专访的技巧性分析
“造访”与“到访”
雷达站
紫帽山雷达站防雷系统几个关键参数分析
榜样