潘丽阳 (中海油田服务股份有限公司,天津 300450)
目前,监控中心部分对GPS数据的接收以及对GPS终端的控制主要是通过计算机串口与GSM终端模块 (手机接收模块)相连,然后通过AT指令控制GSM模块的动作来完成的,实现起来相对繁琐,耗时[1-2]。如何将GPS目标快速而且正确地显示在地图上很值得研究。
本文的研究基于灵图的二次开发平台,灵图的设计采用了美国微软公司提出的编程标准——COM技术 (ComponentObject Model)。通过 COM技术实现了整个 GIS(Geographic Information System)的底层,并在该底层的基础上完成了GPS监控系统开发控件。提供用于GIS管理与GPS监控功能的API,开发可以在各种流行的开发平台下进行,将空间信息管理和GPS监控融入到应用系统中。
灵图二次开发平台的体系结构如图1所示。一般情况下,灵图二次开发平台中不提供自建地图的功能,而物流配送客户的空间属性可能并不包含在灵图公司提供的地图当中,需要自身创建客户空间数据库来完成系统与地图间的结合。
地图数据是配送系统运行的关键一环,正确有效地对地图数据分析建模是提高系统性能的关键。地图数据主要分为两大类:一类是空间数据,反映事物地理空间位置的信息;另一类是属性数据,反映事物的其他信息。图2描述了配送系统地图数据的结构组成。
图1 灵图GIS二次开发平台体系结构
灵图的二次开发平台不提供自建地图的功能,需要自己建立相关的地图,也就不能完全照搬其采用的数据结构。但在灵图的二次开发平台中提供了相关的地图操作功能,我们可以根据自己的数据来模拟现实中的配送网络。而路网数据库的建立,能提供对于以后路线规划和路线现实的支持。
在本文中,路网数据库采用表1、表2、表3来表示。
图2 配送系统地图数据结构
表1 节点信息表
表2 路段-节点信息表
表3 路段信息表
灵图GIS二次开发平台没有开放地图数据库,但提供了对地图进行操作的接口,根据自定义的路网数据库与地图相结合来实现路线的显示。
根据灵图GIS二次开发平台的体系结构,我们对地图操作的一般方法为取得当前地图对象,然后得到所需操作的图层对象,然后在图层对象上进行需要的操作。
比如需要在地图上添加我们需要的地物对象的一般方法为:
根据这种方法,自己定义的车辆路线地图显示情况如图3所示:
在灵图GIS组件中,负责与GSM连接程序通讯的是LtComLink.DLL组件,它是基于COM连接点、事件驱动的机制实现的。在COM中,客户与组件之间的通信一般是单向的,也就是客户创建组件对象,并通过组件对象暴露的入接口 (Incoming Interface)调用组件的服务。但COM还支持反向通信,组件对象通过出接口 (Outcoming Interface)调用客户接收器实现服务,从而实现双向通信[3-4]。如果一个COM对象支持一个或多个出接口,则该对象是可连接的,称为可接连对象 (Connectable Object) 或源对象 (Source Object)。可连接对象的出接口也是COM接口,它包含一组成员函数,这组函数是由客户中的接收器而不是组件对象实现的,叫出接口。每个成员函数代表了一个事件、一个通知或一个请求,对象激发的事件或发出的通知、请求调用这些成员函数。图4所示为连接点基本原。在图中涉及三个部分客户、对象和接收器:首先是可连接对象的客户 (Client),它通过对象(Connectable Object)的入接口按通常的方式与对象通信;其次是对象 (Connectable Object)为了使对象能反向与客户(Client)通信,对象 (Connectable Object)必须得到一个在客户中某处实现的出接口的指针,通过该指针,对象能发事件、通知或请求给客户。这就是接收器 (CSink)要实现的功能。接收器本身是一个简单的对象,它的创建完全是客户程序内部的事情,是相对独立的对象,有自己的引用计数和接口查询方法即QuerryInterface成员函数。
可连接对象的实现机制如图5所示。在一个 COM 组件,允许有多个连接点对象 (IConnectionPoint)。他们可以提供多个发生 “事件”的源头。而管理这些连接点的接口叫做 “连接点容器” (IConnectionPointContainer)。连接点容器接口有 2个函数,一个是FindConnectionPoint(),表示要查找的连接点;另一个是 EnumConnectionPoints(),表示列出所有的连接点,然后选择使用哪个接口。在连接点对象中不能通过组件对象的QuerryInterface得到,而只能通过以上连接点容器提供的函数得到。同时,每一个连接点,也可以被多个客户端的接收器 (Sink)连接,实现 “事件”相应。
根据以上的思路,只需要根据GSM连接程序设定定义的格式来发送或接收数据就能控制终端或者得到需要的GPS数据。
图3 车辆路线模拟
图5 连接点实现机制
利用以上的方法实现GPS/GIS的配送路线信息集成能取得预想的效果,具有较强的可操作性。
图4 连接点原理
[1] 夏定辉,高成发.车载GPS监控调度系统的开发与应用[J].公路交通科技,2004(6):11-13.
[2] 徐雅斌,李昕,张晓宇.基于GPS的车辆监控系统的设计[J].微电子学与计算机,2003(9):30-33.
[3] 潘爱民.COM原理与应用[M].北京:清华大学出版社,2001.
[4] 纪淑琴,王树明,等.COM中的可连接对象与连接点机制及其实现[J].计算机系统应用,2004(7):44-47.