MapX在电子导航地图中的应用

时间:2022-09-25 01:49:35

MapX在电子导航地图中的应用

摘要:在飞行器导航系统中,采用GIS技术可以更直观地掌握飞行器的飞行状态等信息。文章探讨了如何在Visual C++环境下,通过应用强大地图分析功能的MapX控件技术,构建专用电子地图。结果表明,在导航系统研发中,采用VC++与基于MapX的地理信息系统开发技术相结合来开发导航电子地图系统,能够增强系统的功能和可视效果。

关键词:MapX;导航系统;航迹规划;地理信息系统;VC环境;电子导航地图

中图分类号:P285文献标识码:A文章编号:1009-2374 (2010)15-0059-02

近年来,地理信息系统在理论和应用上都处在一个飞速发展的阶段。GIS被应用于多个领域的建模和决策支持,地理信息已成为信息时代重要的组成部分之一。

目前GIS应用软件开发模式具体分为以下四种:(1)独立开发,自主设计空间数据结构和数据库,然后使用编程语言开发;(2)使用大型GIS软件提供的二次开发工具进行开发;(3)集成二次开发,将大型GIS软件开发平台嵌入高级语言中进行二次开发;(4)组件式二次开发,使用大型GIS软件提供的控件进行开发。上述开发模式中,组件式开发模式开发周期短,成本低,可脱离大型GIS软件平立运行,因而应用较为广泛。

文章采用基于组件的二次开发模式,以MapX为基础,实现了在MapX中显示航迹规划结果的功能。

一、系统功能

(一)系统功能结构

系统功能结构如图1所示。该系统具有地图缩放,漫游,图元信息查询,航迹编辑等功能。本系统使用VC++结合MapX开发工具进行开发,地图数据的预处理在MapInfo中完成。

(二)VC环境下利用MapX进行二次开发

MapX是MapInfo公司提供的一个基于ActiveX技术的可编程控件,它使用与MapInfo一致的地图数据格式,实现了大多数MapInfo的功能,为开发人员提供了一个快速、易用、功能强大的地图化组件。在VC,VB等可视化开发环境中,只需将MapX放入窗体中,并对其进行编程,设置属性或调用方法或相应事件,即可实现丰富的地图信息系统功能。

MapX的基本组成单元是对象和集合,其中集合是多个对象的组合,每一种对象和集合负责处理地图某一方面的功能。在VC中每个MapX对象是一个c++类,这些类在MapX.h文件中定义,在MapX.cpp文件中实现。每个MapX对象的属性与方法是通过c++类的成员函数来实现的。

二、系统实现

本系统通过串口接收来自航迹规划系统的规划结果,将其显示在电子地图上。

(一)地图的显示

电子地图经MapInfo预处理后,用GeoSet将各个图层组织起来供应用程序使用。VC中使用MapX的过程如下:

1.利用MFC AppWizard(exe)新建一个工程,并将MapX.h和MapX.cpp文件加入工程中。

2.在视图类中添加WM_CREATE消息事件,在事件响应函数中通过CMapX::Create()创建MapX控件窗口,将电子地图加载到窗口中。

3.响应WM_SIZE消息事件,在事件响应函数中设置MapX控件窗口大小。

通过以上步骤,即完成了对电子地图的显示。

(二)航路点显示

航路规划是根据目标规划满足约束条件的飞行轨迹,规划的目的是在适当的时间内计算出最优或次优的飞行轨迹。它主要用行器的飞行任务,包括飞行航线、飞行高度、速度、任务执行区域等。本系统通过串口读取路径规划系统规划的航路点信息,将其显示在电子地图上。

接收到来自路径规划系统的航路点数据后,创建一个新的图层,通过响应MapX提供的消息响应事件,将航路点数据添加到地图上显示出来。

真实航迹信息也用同样的方式显示出来,通过用一个图元符号表示飞机,根据接收到的飞机数据,实时更新图元位置,实现飞机真实航迹的显示。通过对真实航迹与规划航迹的比较可以对飞机飞行状态做出相应判断,从而采取对应措施,提高飞行质量。

根据导航信息,在电子地图上实时显示飞行器的航迹,此处用到MapX的图形绘制航迹功能。首先,定义航迹图元:CMapXFeature ftrMapXTrack;然后定义航迹点集,包括多点航迹:CMapXPoints ptsTrack;航迹点间用直线连接,所以定义:

ftrMapXTrack.SetType(miFeatureTypeLine);

以下为实现航迹显示的代码:

for (int i=0; i

{

if((pTrackP[i].nX

{

ptsTrack.DetachDispatch();

return FALSE;

}

ptsTrack.AddXY(pTrackP[i].nX/100, pTrackP[i].nY/100);

}

ftrMapXFeature.GetParts().Add(ptsTrack);

ftrMapXFeature.Update();

飞机沿预定航迹飞行过程中可能因为各种突发事件影响需要改变航线,此时,可以通过对航路点进行编辑,修改预定飞行航迹,完成飞行任务。

航路点规划主要分为以下几个功能:(1)画航点和航线,同时显示距离;(2)结束画航路点;(3)删除航路点;(4)修改航线。

将MapX的消息响应机制添加到程序中,添加MapX的消息响应事件,添加用户自定义工具,通过该工具在地图上绘制航点和航线,完成对航线的编辑。同样可以自定义工具,通过相应的消息响应函数删除航路点和航线,完成对航线的修改。

由于电子地图带有经纬度信息,还可以通过自定义工具完成对航线的量算,显示距离信息。

最终结果如图2所示。由于VC窗口界面在美观上有一定欠缺,在开发过程中可以使用一些界面库,对Windows系统标准的窗口换肤。

三、结语

文章利用基于ActiveX技术的MapX组件进行电子地图的二次开发,是程序脱离了大型商业GIS软件平台,占用内存少,开发周期短,结合熟悉的编程环境,是系统实现高效灵活,增强了系统的可视化效果。

文章在原有电子地图上添加航迹点,对航迹进行编辑,设计实现了GIS软件在导航电子地图中的应用。

参考文献

[1]李春宇,周新力,吕万里,杨静国.基于MapInfo和MapX的导航电子地图实现[J].舰船电子工程,2009,(1).

[2]李玉国,戴国忠.基于GIS组件MapX的机载辅助导航系统的设计与实现[J].计算机辅助设计与图形学学报,2001,(5).

[3]胡鹏,付仲良.一种在MapX控件上绘制动态图像的方法[J].计算机应用,2004,(S2).

[4]颜辉武,吴小芳,祝国瑞.VC++环境下基于MapX控件的GIS应用软件的开发[J].昆明理工大学学报,2001,(6).

上一篇:光纤通信在电力通信网中的应用 下一篇:客运专线路基CRTSⅠ式无砟轨道施工技术