彭 可,范 平,余 凯
(湖北科技学院 计算机科学与技术学院,湖北 咸宁 437100)
随着时代的发展,汽车数量的剧增,交通管理以及车辆安全越来越受到重视。虽然现在已经有很多成熟的监控系统或监控技术,比如利用高清摄像头定点监控或利用高清摄像头实时监控,然而基于Web形式的监控系统却很少见。随着移动互联网的发展以及移动互联网设备的普及,采用Web形式的监控系统将会广泛被人们接受和应用。
基于Web的GPS监控系统,能够实现车辆运行状态,能够对车辆的实时监控,能够实时查看车辆的地理位置,并能结合百度地图实时显示车辆位置。不仅可以保证车辆的安全,更可以用在对道路的交通管理,本系统也可应用与智能交通系统中。
系统采用了Jquery模块化调用方式,方便了对文档对象的操作;同时使用了支持动态从数据库引入数据的dtree、使用Ajax技术,使程序更小、更快;使用Json文本格式,采用Net平台,使程序更加合理,开发更加迅捷。
系统采用B/S架构,由上至下依次可分为三个层次,表现层,业务逻辑层和数据层。如图1所示:
图1 系统组织架构图
表现层:通过浏览器向用户展示相应数据处理结果;在本系统中表现形式为直接通过图形化界面将所有结果显示出来;
业务逻辑层:处理业务逻辑,包括GPS服务器,WEB服务器,GIS服务器;
数据层:实现数据的存储,用来实时存储GPS信息数据,同时通过固定接口与业务逻辑层进行数据的交互,同时完成业务逻辑层的数据处理指令。
1.最后位置
查询车辆保存在数据库中的最后时刻的经纬度坐标,车辆的行驶轨迹将会被记录在数据库中,选择车辆后,业务逻辑层便会查询该车辆的最后记录位置,在百度地图上显示出来。
2.实时监控
实时监控是定时返回车辆位置的功能,终端每10秒上传一个新的位置点,系统设置为每10秒查询服务端是否有新信息点,如果有新信息,则更新地图上车辆的位置。核心代码如下:
for(var i=0;i { map.removeOverlay(markListWatch[i].gmark); } markListWatch.length = 0; timer_url = createUrlLjj(ACT_POS_LAST + "&p1=" + id); g_trackFlag=1; isShishi = "1"; DingShiQi=0; mapTimer(); 3.历史轨迹回放 选择需要查询的车辆之后,选择起始时间和结束时间,即可查询相应时间段内该车辆的行驶轨迹。查询时业务逻辑层将该车辆在查询时间内之中的行驶轨迹数据取出来,在显示层即在地图上按坐标显示出来。核心是先从数据库服务器中将历史轨迹点取出来,以Json对象的形式,通过Ajax形式传到前台页面,然后利用百度地图提供的Api函数,将点按照时间顺序连成线并播放,从而实现车辆历史轨迹回放。 历史轨迹的具体实现核心算法代码: if ((PointList != null) && (PointList.length % 2 == 0) && (pos[15] != null)) { for (var i = 0;i < (PointList.length / 2);i++) { Points.push(new BMap.Point(PointList[i * 2],PointList[i * 2 + 1])); } } 4.地图标注 标注是用来表示一个点位置的可见元素,每个标注自身都包含地理信息。一个标注不论地图移动、缩放,标注都会跟随一起移动,保证了标注始终指向正确的地理位置。从DOM元素构成角度看,一个完整的标注包含标注点击区域、标注图标、标注阴影,示意图如图2所示: 图2 地图标注示意图 timer_url = createUrlLjj(ACT_AJAX_BIAOZHU + "&type=0&p1=" + biaozhula + "&p2=" + biaozhulo + "&p3=" + escape(text.toString()) + "&p4=" + id + "&p5=" + escape(xinxi.toString())); mapbiaozhudian(); 5.地图搜索 在搜索条件区内要搜索的地址,地图会显示你要搜索的地方,但是存在有些过于详细的地址可能搜索不到,核心代码如下: function showAddress_BaiDuMap() { var address = document.getElementById("textaddress").value; var local = new BMap.LocalSearch(map,{ renderOptions:{ map:map } }); local.search(address); } 6.设置围栏 设置电子围栏的目的是,确保目标车辆有规定的行驶范围,系统实现了矩形和多边形围栏。利用百度地图的API接口可以在地图上画出一个封闭的矩形或者多边形区域,将指令下发给设备端。设备端根据当前的GPS经纬度来判断车辆是否在规定区域内。 判断车辆是否在围栏内,实际上就是判断点是否在多边形内,通常采用射线法。 射线法判断原理:从判断点向X轴正方向作一条射线,然后计算该射线与多边形每条边的交点个数,如果没有交点或者交点个数为偶数,那么点位于多边形外部,如果交点个数为奇数,那么点位于多边形内部。 如图3所示:点P1沿X轴正方向的射线与图形S的交点个数为2,点P1位于图形S外部;点P2与图形S的交点个数为1,点P2位于图形S的内部。 图3 射线法原理图 具体实现方法:点的Y值大于等于多边形上某个线段的最小值且小于该线段上的最大值,在该线段上取一个y值为点P.y的点P1。如果P.x 判断车辆是否在区域内的流程图如下: 程序返回true时,表示点在多边形区域内,即车辆在规定区域内,否则返回false,即车辆不在规定区域内,这是可以告警,表示当前车辆已开出规定的区域范围。 搭建基于Web的GPS监控系统环境成本较低,可实时监控多辆车辆,实时性高,可同时在多处Web浏览器上同时监控某一辆车辆,执行速度较快,安全性较高,因此有非常广阔的市场前景,且使用时利用Web形式界面显示操作简单方便,易于被大众所接受。记录车辆的历史行驶轨迹有助于保证车辆及车主的安全,若发生车辆被偷盗的现象,首先可根据实时监控发现车辆,若不能够实时发现车辆,即可根据历史行驶轨迹查看车辆的行驶轨迹和最后出现位置。在系统中可将车辆的常用行驶区域设置为围栏,当车辆超出围栏后即发布预警,设置车辆行驶区域后即可保证车辆的安全。 本系统主要从实际出发利用程序输入设置车辆值从原理上设计并实现了系统应具有的功能,若要实际应用还需要进行车载设备端的设计。三、结束语