基于ARCVIEW的ADS显示系统的开发

2006-05-07 15:50:03来源: 电子技术应用


1 ADS显示系统设计

    从信息流程来看,ADS显示系统首先从ADS地面信息处理系统获得ADS数据。然后在ADS显示系统中进行数据校正、滤波后在以基础地理信息为底图的地图上显示出来。在用户需要进行统计分析时,可结合基础地理信息对ADS动态信息进行统计分析。

    从系统的信息流程可以将系统划分为三个部分:

    (1)ADS信息接收: 负责从ADS地面信息处理系统中获得实时ADS数据,并维护与ADS地面信息分发系统的连接。

    (2)ADS信息显示: 将ADS信息转化为地图要素在地图上显示出来,并提供偏航、近进、进入危险区报警和冲突检测等功能。

    (3)ADS信息统计分析: 根据地理要素(航线、管制区、机场),统计出该要素在某个时间段(点)的航班的数量,进行初步的流量分析。

    系统的程序结构如图1所示。

2 ADS显示系统的实现

    ADS显示系统的操作系统采用Windows NT Workstation 4.0,开发工具采用MS VC6.0、MS VB6.0和ESRI的ARCVIEW3.2。

2.1 ADS信息接收

    通过共享文件和数据库可实现不同进程间的信息交换。但是,这需要数据获得者定期查询文件服务器或数据库服务器。这对实时性要求高的系统来说是难以满足要求的。在Windows 中,Windows Socket(套接字)提供了网络上不同进程的数据通信的理想方法。它能通过消息驱动来实时进行数据通信。我们采用Windows Socket API实现ADS信息接收模块与ADS信息分发系统的通信。

    在ADS系统中可能有多个ADS显示系统在运行,为了建设分布式的网络应用系统和提高代码的复用性,我们将ADS信息接收模块设计成ActiveX控件。

    我们为该控件设计了以下事件和方法:InitSocket(),负责建立到数据分发模块的连接;DataReady(),当有数据分发到此控件时,自动触发该事件;SendData(),向外发送数据;Disconnect(),断开连接。另外,控件在连接过程中会自动维护此连接,它定期测试链路状态,如发现异常,则启动重新连接线程,重新建立连接。ADS信息接收的流程如图2所示。

2.2 ADS信息的显示

    ADS信息显示是在ARCVIEW3.2中处理的,而ARCVIEW3.2无法使用ActiveX控件。但是ARCVIEW3.2能通过DDE技术与其它应用程序通信。我们通过VB开发一个数据传输模块。该模块通过ActiveX控件从ADS信息分发系统得到ADS数据,由DDE传输到ARCVIEW3.2中。ARCVIEW3.2得到ADS数据后,再进行显示处理。下面分别就VB与ARCVIEW的数据通讯和信息显示进行论述。

2.2.1 数据通讯 

    ARCVIEW与VB建立DDE会话的源代码如下:

    Label1.LinkTopic=″ArcView|System″

    Label1.LinkMode=vbLinkManual。

    建立DDE会话后,将要从VB到ARCVIEW的数据赋给VB中的变量就可进行传输。对数字和字符串其传送格式不同:

    对于字符串,在VB中的形式为AirNum=””B-2447””,即带引号的字符串。

    对于数字,只要将其转化为普通字符串,如latstr =”45.45”。

    在实际应用过程中,我们发现数字如果按数字形式传输容易出错。如果将其转化为字符,再按字符串传输则可解决此问题。从VB到ARCVIEW的数据传输源代码如下:

    cmd = ″av.run″ + ″″″function.move″″″ + ″,{″ + redrawstr + ″,″ + Airnum + ″,″ + Flightnum + ″,″ + latstr + ″,″ + longstr + ″,″ + acarsstr + ″,″ + lastxstr + ″,″ + lastystr + ″}

    Label1.LinkExecute(cmd)

2.2.2 信息显示

    在ARCVIEW3.2中,能显示在地图上的地图对象有两种Theme图层和Label标注。

    ·Theme是ARCVIEW的基础显示对象。对每个对应图层,在ARCVIEW中都有一个属性表与之相对应。图层保存在文件中,对它的属性进行查询和进行空间分析都极其方便。但是,当对图层的一个元素进行更新时,整个图层和位于其上的地图对象(如Label)都要随着刷新,这样既浪费时间又使得图面闪烁比较厉害。

    ·Label是浮动在图层之上的地理对象,它没有属性与之对应,它是动态停留在内存中的。对它的操作非常灵活。可对每个Label对象单独进行移动、改变形状和删除而不影响图面上其它的地图对象。因此,Label的刷新速度快,不影响图面。由于Label没有属性数据,所以对它的属性查询和空间分析就特别困难。

    在ADS系统中,被监控的飞机的数量多,飞机的位置信息变化快,如果将这些飞机以Theme来显示是无法办到的,只能采用Label。由于Label没有属性表。为了能象对图层那样方便地查询飞机不在图面上的信息,我们构造了一个辅助属性表。这个表保存在ACCESS数据库中,ARCVIEW通过ODBC读取表中的内容。在实际使用过程中,发现这种效果比较理想,既能满足显示速度和图面质量的要求,又能象查询图层那样方便地查询航班的信息。

2.3 ADS信息统计分析

    对各种空域特征的ADS信息统计的处理方式是类似的。其中统计某段航线在某段时间内的航班数量最具典型性,下面就此问题进行论述。

    对航线的ADS信息统计是建立在航线数据和ADS动态数据的基础上的。因此获取航线的地理数据和ADS动态数据是非常重要的。

    在民用航空中,航线是由航段组成的,而航段是由两个导航点组成的一条线段。不同的航线可能包含同一航段。为了处理问题方便和节省存储空间,我们将航线库设计为三个表:AirRoute,存储组成航线的航段代号;RouteSeg,存储组成航段的导航点的代号;WayPoint,存储导航台的位置数据。这三个表的关系如图3所示。它们存储在基础地理信息数据库中。

    ADS动态数据的航班标识和航班四维位置信息(经度、纬度、时间、高度)对ADS 信息统计分析是非常重要的。这些信息已由ADS信息地面信息处理系统存入ADS动态信息数据库的Todisplay表中。

    通过ODBC API可实现访问远程的基础地理信息数据库和ADS动态信息数据库。用ODBC API访问远程数据库的步骤如下:

    (1) 申请环境句柄。

    fg=SQLAllocEnv(henv)

    (2) 申请连接句柄。

    fg=SQLAllocConnect(henv,hDbc) 

    (3) 建立到数据库的连接。

    fg=SQLConnect(hDbc,strDNS,SQL_NTS,strUIDSQL_NTS,strPW, SQL_NTS)

    (4) 要获取数据,还要申请语句句柄。

    fg=SQLAllocStmt(hDbc,hstmt)

    (5) 执行要得到的数据的SQL语句。

    fg=SQLExecDirect(hstmt,strSql,Len(strSql)

    (6) 可通过SQLGetData()取得所返回的数据。

    根据输入的航线信息,通过ODBC API获得航线的地理数据并确定包含这条航线的最大矩形范围,再通过ODBC API从ADS动态信息数据库中获得在要分析的时间段内且在航线的矩形范围内的ADS动态数据。然后对这些数据在ARCVIW中进行空间分析。确定在这个时间段内在航线缓冲区内的数据并将结果显示在地图上。

    该系统已在中国民航空管局总调度室运行了1年多,系统稳定可靠,得到了用户的好评。

编辑: 引用地址:http://www.eeworld.com.cn/designarticles/dsp/200605/2818.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved