概述
前言:
本文写于2014年2月,五年弹指一挥间,近期整理发表,本文出自门心叼龙的博客,属于原创类容,侵权必究。转载请注明出处。https://blog.csdn.net/geduo_83/article/details/85855412
继互联网、物联网之后,“车联网”又成为未来智能城市的另一个标志,随着我国经济的飞速发展,汽车作为一种便捷的交通工具,日益进入人们生活当中,车辆、船只和其他地面移动物体迅速增加,但随之而产生的城市交通问题日益严重,驾驶员在夜闻或在生疏地带、或发生了交通事故则无法确认自己的方位甚至迷路,己成为严重影响许多城市发展的主要问题,为这些地域扩大、机动性强的移动目标提供有效的监控、紧急救援和提供各种信息服务成为越来越迫切的现实需求。基于此我们针对这个问题,进行了相关研究。
基于WebGIS的车联网系统是构建于Internet上的一个大型公共的车辆动态信息服务平台,它同时融合了GPS卫星定位技术、GSM数字移动通信技术、GIS地理信息系统技术、软话机技术以及Internet技术等多种目前世界上先进的科技成果,为在路途中的车辆进行监控、实时救援及信息查询提供了完整的解决方案。整个系统由车载GPS终端、GSM通信网络、后台服务、坐席中心、语音平台、客户关系管理系统、用户自服务系统、WebGIS平台八大部分组成。
基于WebGIS在车联网的应用系统建设,有利于提供各种便捷的信息服务、导航服务、救援服务、预防和减少交通事故,促进社会的信息化、自动化建设等相关产业的发展、提高道路网的通行能力和提高汽车运输生产率和经济效益。
论文的主要研究内容:
(1)GIS软件的基本介绍。
(2)按照软件工程的方法,对车辆救援平台进行需求分析。
(3)研究平台的体系结构,以及各层之间是如何通信。
(4)研究地图服务的原理以及如何将服务应用于平台之中。
(5)结合实际项目,使用车辆救援平台构建一个实际的应用。
本文共分7章,具体内容安排如下:
第1章:绪论。介绍本文的研究背景意义。
第2章:相关概念技术介绍。介绍了GIS和WEBGIS的概念以及GIS重要元素的概念,还介绍了一些GIS中的常用技术。
第3章:平台需求分析。从功能和性能的角度分别做了需求分析,给出了系统的功能结构图,并且介绍了每项功能。
第4章:平台的设计与实现。分析了平台的体系结构,给出了平台的体系结构图,阐述了各个模块是如何实现的。
第5章:关键技术的研究。分别从数据层、服务层和客户端介绍了平台所使用的关键技术,详细介绍了平台实现的原理。
第6章:总结与展望。对论文工作加以总结,指出了平台存在的不足以及今后的工作方向。
车联网,是指装载在车辆上的电子标签通过无线射频等识别技术,实现在信息网络平台上对所有车辆的属性信息和静、动态信息进行提取和有效利用,并根据不同的功能需求对所有车辆的运行状态进行有效的监管和提供综合服务。汽车数字化标准信源技术是基于RFID开发的涉车信息资源的应用技术,该项目是由国家公安部组织研发,经国家科技部认证后列为2007年“国家科技支撑计划”重点专项中进行的应用示范工程(项目编号为2008BAF31B00)。汽车数字化标准信源技术的开发将推进“车联网”和RFID产业化进程。
从网络上看,车联网系统是一个“端管云”三层体系:
第一层(端系统):端系统是汽车的智能传感器,负责采集与获取车辆的智能信息,感知行车状态与环境;是具有车内通信、车间通信、车网通信的泛在通信终端;同时还是让汽车具备IOV寻址和网络可信标识等能力的设备。
第二层(管系统):解决车与车(V2V)、车与路(V2R)、车与网(V2I)、车与人(V2H)等的互联互通,实现车辆自组网及多种异构网络之间的通信与漫游,在功能和性能上保障实时性、可服务性与网络泛在性,同时它是公网与专网的统一体。
第三层(云系统):车联网是一个云架构的车辆运行信息平台,它的生态链包含了ITS、物流、客货运、危特车辆、汽修汽配、汽车租赁、企事业车辆管理、汽车制造商、4S店、车管、保险、紧急救援、移动互联网等,是多源海量信息的汇聚,因此需要虚拟化、安全认证、实时交互、海量存储等云计算功能,其应用系统也是围绕车辆的数据汇聚、计算、调度、监控、管理与应用的复合体系。
相关概念:
ITS即智能交通。是将先进的传感器技术、通信技术、数据处理技术、网络技术、自动控制技术、信息发布技术等有机地运用于整个交通运输管理体系而建立起的一种实时的、准确的、高效的交通运输综合管理和控制系统。
RFID,是Radio Frequency Identification的缩写,即射频识别。它通过射频信号自动识别目标对象并获取相关数据,识别工作无须人工干预,可工作于各种恶劣环境。RFID技术可识别高速运动物体并可同时识别多个标签,操作快捷方便。基本的RFID系统由标签(Tag)、阅读器(Reader)、天线(Antenna)。RFID技术有着广阔的应用前景,物流仓储、零售、制造业、医疗等领域都是RFID的潜在应用领域,另外,RFID由于其快速读取与难以伪造的特性,一些国家正在开展的电子护照项目都采用了RFID技术。RFID具有车辆通信、自动识别、定位、远距离监控等功能,在移动车辆的识别和管理系统方面有着非常广泛的应用。
在国内,简单的车联网应用早已在物流业出现,技术主线是GPS和GRS。十多年前物流行业就开始推进车辆物联网监控与配送路径实时优化,推广物流配送的可视化管理。1999年物流行业开始探讨GPS技术和物流可视化管理的结合。2001年,开始探索GPS在货运监控和连网上管理的应用,那时出现了很多的网络配货平台,通过GPS系统对车辆进行跟踪。因为车辆通过网络可以实时可视化,可以实时在线管理,这些都可以称为车联网早期的应用。2003年出现了网上配货系统。2004年,GPS、感知技术、定位技术和互联网技术初步结合,实现了对移动中的运输车辆进行联网、跟踪、定位、调度、配货的智能管理,初步具备了车联网的本质特征。但是,那时的技术路线和应用案例还没有纳入到车联网的范围。直到2006年才基于RFID和EPC,GPS和GRS的结合提出了车联网的概念。
从09年G-Book和Onstar引入中国,09年被业界定位成中国的Telematics元年以来,汽车信息化的概念就从来没有停止过,甚至越来越热,汽车行业没人不提Telematics,眼下的汽车产业,Telematics代表着先进,代表着高端,代表着创新,中国的汽车业仿佛从09年开始已然进入了T时代。T的热度在2010年逐渐被一个新的名词所取代,这就是车联网。
2009年12月北京九五一九零信息技术有限公司,顺应时代发展潮流,根据自己已有的95190 Telematics 服务系统平台(以下简称95190TP)制定了一套终端设备与服务平台之间的通信协议(NTSP),支持不同厂家、不同类型、不同商业模式的通信导航终端设备接入本平台、享受服务。该协议可以作为设备开发及生产的依据,95190TP是综合GPS(全球卫星定位系统)、GIS(地理信息系统)、无线通信、INTERNET、CALLCENTER、信息资源搜索与整合等多项技术,向汽车用户提供安全安心、智能导航、信息服务、车载通信、在线娱乐等等综合服务,是目前国内专业、商业化Telematics服务的支撑运营平台。
在2010年上海世博会期间,“上汽—通用汽车馆”播放了一部科幻影片《2030》,讲述了通用汽车对20年后汽车生活的展望。在片中,车辆在智能交通网络指挥下有序地行驶,车内触屏终端随时收取交通信息及咨询,汽车自动寻找停车场以及充电站进行充电。更重要的是,它提供了前所未有的交通安全保障,将汽车司机发生交通事故的概率降低为零。
2010年10月28日在无锡举行的中国国际物联网(传感网)大会传出消息,汽车移动物联网(车联网)项目将列为我国重大专项第三专项的重要项目,并且相关内容已上报国务院,一期拨款有望达百亿级别,预期2020年实现可控车辆规模达2亿。车联网这个名词在物联网的大背景下应运而生,车联网的概念通过这次大会逐渐被放大,现在不管是Telematics还是GPS运营,都被纳入到车联网这个范畴中了。越来越多的汽车厂商和通信行业合作研究,车联网技术被越来越多的人熟知。
2010年11月12日至27日广州亚运会期间,80多台安装着G-BOS设备的苏州金龙智慧客车投入服务,这是亚运历史上首次出现“3G”客车。标志着车联网技术正式走向社会视野。 现阶段,车联网在物流行业也有两个比较典型的应用,一个是可视化运输管理与在线智能配货;另一个是行车管理与监控。国内的“黑匣子”可以进行联网形成智能终端系统,对车辆定位、货物追踪、行驶行为、驾驶行为、车速控制、车辆状况、耗油分析等进行联网监控。
2011年3月15日,大唐电信与长春一汽旗下的启明信息技术股份有限公司携手共建联合实验室,研究下一代通信服务与汽车电子产品的融合,开发有自主知识产权的高性能、低功耗汽车电子产品,标志着我国车联网从概念阶段正式走向应用阶段。
2011年3月29日,“ 2011中国车联网产业发展论坛”在广州隆重举行,共同探讨“见证科技推动生产力、车联网产业上下游资源无缝对接”这一主题。针对“车联网时代消费者到底需要什么样的后台服务”、“应用车载应用和服务有哪些盈利模式”、“我们如何把握住这轮商机如何打通产业链”以及“将IT、通信、物联网、互联网、汽车影音资源整合”等议题进行深入讨论。来自电信运营商、汽车电子厂商、服务提供商的专家以及汽车车主从各个角度讨论未来车联网的发展方向,包括电信运营商如何为车载终端提供通信服务、车联网一站式软硬件方案以及车联网增值服务等。
通用汽车产品采用的是Onstar系统,它通过全球卫星定位系统和无线通信技术为汽车提供安全信息服务,包括自动撞车报警、道路求助、远程车辆解锁以及全程音控导航服务等。
丰田公司的“G-BOOK”基于消费者会员的公共建设信息服务系统,通过车上无线通讯终端来提供互助信息服务。其特色在于数据通讯模块(DCM)及最新网络服务的安全数字卡运用。用户只需轻轻一按按钮DCM,即可享受高速通讯,下载电影、音乐、电脑游戏等;而且在网络中断情况下,DCM具有自动联机功能。当文字资料通过“G-BOOK”传输到车载终端,用户可以聆听到近似于人声的信息。
在国际上,美国的IVHS、日本的VICS等系统通过车辆和道路之间建立有效的信息通信,实现智能交通的管理和信息服务。RFID技术近年来在物流与供应链管理领域以及交通运输领域智能化管理中得到了应用,如智能公交定位管理和信号优先、智能停车场管理、车辆类型及流量信息采集、路桥电子不停车收费、高速公路多义性路径识别及车辆速度计算分析等方面取得了一定的应用成效。
摩根士丹利研究部近日(2013.11.)发布了一份名为“自动驾驶汽车(Autonomous Cars):自动驾驶车,汽车产业新范儿”的报告。10个全球研发团队经过了几个月采访未来学家、汽车行业高管和业外潜在颠覆者。该报告预示着由于几乎完全消除汽车交通事故,将大大减少人类死亡和痛苦,由于降低医疗成本、减少拥堵、节省燃油和提高生产力,仅在美国每年可节省1.3万亿美元——占GDP的比例约为8%。“现在我们清楚地看到,不仅是自动驾驶汽车真实的,但他们很可能会比大多数人想象的更早来到我们身边 ”报告说。 “自动驾驶汽车路线图:基本的自动驾驶能力今天已经实现,半自动驾驶能力在未来12-18个月内实现,全自动驾驶能力(已经有原型机)商业化在2020年实现。”
V2X通信是自动驾驶汽车的关键技术,“自动驾驶车辆需要可靠的传感器来发挥自己的潜力”,V2X(车辆与车辆、车辆到基础设施)通信技术公司Cohda Wireless首席执行官保尔-盖利说。
V2X是一个无线传感器系统,使车辆与其他周围的车辆分享他们的传感器数据。作为标准传感器,如雷达、光学、超声波和激光雷达所有都是视线,他们只能检测到可见的风险。
非视觉传感器360度感知可以检测到隐藏于视觉外的威胁,因此它可以扩展感知范围,超出了驾驶员视野。 V2X系统可靠性很重要,譬如两辆车行驶在一条直路上,当两辆车相互接近时存在死角,在丘陵的坡峰,在高速公路上行驶,或当车车之间有卡车行驶。
摩根士丹利的报告还指出,自动驾驶能力可能会改变汽车业的基本面,如车的“价值” 从硬件转移到软件、组件,以及,新玩家进入市场,并迫使现有选手彻底改造自己或放弃份额。恩智浦半导体高级副总裁、汽车娱乐业务部总经理托斯滕-雷曼表示。
思科系统公司产品管理总监安德烈亚斯•麦说“‘物联网’何以改变我们的生活,V2X技术是一个很好的例子”。 Cohda的V2X解决方案使车辆相互沟通,让司机和最终自动驾驶车一些额外的预警时间,可以防止迫在眉睫的撞车事故, ”他说。 美国安全试验示范计划(SPMD,Safety Pilot Model Deployment )有2800辆车安装了V2X设备。密歇根大学交通研究所( UMTRI )2013.6.进行摩托车导入车联通信研究,作为美国安全试验示范计划(US Safety Pilot Model Deployment)一部分,以确定轿车、卡车和公共汽车如何采用V2V(车对车)通信技术,与摩托车互动。 UMTRI与摩托车制造商本田和宝马合作,在密歇根州安阿伯引入摩托车到车联环境中进行概念性验证,在项目的研究领域完成2项任务。连接的摩托车将参与摩托车通信可行性的测试和摩托车到车辆( M2V )通信性能测试。据美国国家公路交通安全管理局(NHTSA )的数据,摩托车事故占所有公路死亡人数的5% ,但80%的事故导致人身伤害或死亡,相比之下,汽车占20% 。车联网技术还解决了这些易受伤害的道路使用者,这点非常重要。摩托车在美国运输部的整体安全策略中占重要位置。
该V2V连接车辆设备是由Cohda提供,内含恩智浦软件定义的无线电芯片RoadLINK芯片组和运行车联通信的Cohda固件,卫星导航精确定位模块为NV08C。 V2V通信,即使在城市环境中建筑阻挡司机在路口看见对方,车辆能够互相通信。在这些安全苛刻场景,车联技术可喜扩展到弱势道路使用者,如摩托车手和行人。
GIS是在计算机硬、软件系统支持下,对现实世界(资源与环境)各类空间数据及描述这些空间数据特性的属性进行采集、储存、管理、运算、分析、显示和描述的技术系统,它作为集计算机科学、地理学、测绘遥感学、环境科学、城市科学、空间科学、信息科学和管理科学为一体的新兴边缘学科而迅速兴起和发展。
WebGIS是Intemet与GIS结合的产物,GIS通过WWW功能得以扩展,真正成为一种大众使用的工具。从WWW的任意一个节点,Internet用户可以浏览WebGIS站点中的空间数据、制作专题图,以及进行各种空间检索和空间分析,近些年互联网的飞速发展让GIS朝着WeGIS的方向过渡。
(1)基于Web标准。TCP, HTTP, Html, XML等
(2)平台无关。通常,无论客户机是何种操作系统,只要支持通用的Web浏览器,用户就可以访问WebGIS数据和服务。
(3)分布式。全球化的Client/Server,GIS数据和服务分布在Internet的不同服务器上,当需要时进行集成。
(4)互操作。数据在不同的WebGIS之间无缝传输,一个应用系统可以调用另一个系统的功能,来完成逻辑上的统一的任务。
与传统的GIS相比,webGIS有以下优点:
(1)更广泛的访问范围。客户可以同时访问多个位于不同地方的服务器上的最新数据。这一特有的优势大大方便了GIS的数据管理,使分布式的多数据源的数据管理和合成更易于实现。
(2)平台的独立性。无论服务器或客户机是何种机器,无论WEBGIS服务器端使用何种GIS软件,由于使用了通用的WEB浏览器,用户可以便捷地访问WEBGIS数据,在本机或某个服务器上进行分布式部件的动态组合和空间数据的协同处理与分析,实现远程异构数据的共享。
(3)系统成本大大降低。普通GIS在每个客户端都要配备昂贵的专业GIS软件,而用户使用所需要的通常只是一些最基本的功能,这实际上造成了极大的浪费。WEBGIS在客户端通常只需使用WEB浏览器(有时还要加一些插件),其软件成本与全套专业GIS软件相比明显要节省得多。另外,由于客户端的简单性,节省的维护费用也不容忽视。
(4)更简单的操作。要使GIS为广大的普通用户所接受,而不仅仅局限于少数受过专业培训的专业用户,就要降低对系统操作的要求。通用的WEB浏览器无疑是降低操作复杂度的最好选择。
(5)灵活高效的计算模式。传统的GIS大都使用文件服务器结构的处理方式,其处理能力完全依赖于客户端,效率较低。当今一些高级的WEBGIS能充分利用网络资源,将基础性、全局性的处理交由服务器执行,而对数据量较小的简单操作则由客户端直接完成。这种计算模式能灵活高效地寻求计算负荷和网络流量负载在服务器端和客户端的合理分配,是一种较理想的优化模式。
WebGIS使GIS应用走向公众,通过网络可以将空间信息传至千家万户,如美国纽约州某县通过电视有线网,向公众发布城市和土地等信息。香港旅游局也正在着手建立香港旅游信息系统,该系统的基础数据直接来源于香港地政署的大型空间数据库,旅游信息则由旅游协会(TA)提供。计划首先在尖沙嘴等旅游热点安装触摸屏,游客可以通过它直接了解香港地理环境和查询旅游信息。
WebGIS的数据传输量很大,目前Internet的速度还不能完全满足需求。MapGuide的插件大约为1M,使用28.8K的调制解调器(MODEM)也至少需要6分钟才能从服务器上下载过来。不过,网络技术日新月异,56K的MODEM已经开发出来。1997年2月,美国总统克林顿提出“建立快1000倍的第二代互联网络,让12岁以上的青少年人人都上互联网”。微软正在实施的一项计划中准备发射840多颗人造地球卫星,这些卫星将用于取代光纤进行Internet数据传输。可以预见,随着Internet技术的发展,WebGIS应用终将走上普通人的办工桌、走进千家万户的家用电脑,与Internet本身一样成为人们日常生活必不可少的实用工具。
WebGIS还可以应用于Intranet建立企业/部门内部的网络GIS,可以在科研机构、政府职能部门、企事业单位得到广泛应用。WebGIS提供了一种易于维护的分布式GIS解决方案。尽管目前的WebGIS软件提供的空间分析功能很难满足专业应用的需要,但是随着技术的发展,WebGIS终将取代传统的GIS。
GIS软件常用的基本概念和类,在本文后面还会经常使用到,虽然不同的GIS软件实现原理不尽相同,但是一般都会用到这些概念和类,现在一一加以介绍
Map是GIS里最重要的类,可以说各种操作都是围绕Map展开的。Map就像一个空白的画布,图层都是一层一层加上去的,M印和地图控件相关联,可以在Map上监听各种事件以响应各种操作。
Laver是图层,例如500kv输电线路是一个图层,220kv输电线路又是另一个图层,这两个都是线图层,500kv变电站是一个点图层。对应前面的两种空问数据类型,前面提到的几个图层是矢量图层,除了矢量图层以外GIS还有栅格图层,也称之为瓦片图层,是由大小相等的图片拼接而成的图层,一般作为底层图层第一个加到Map里面。不同类型的图层继承了父类Layer,然后自己又有各自的属性和方法。地图正是这些图层一层一层的加到Map上然后展现出来的。
一般,GIS软件中的Feature指一个地理要素,例如一棵树、一条河流或者一片污区都是一个Featrue。Featme会加到Layer中被Laver统一管理,例如500kv线路的图层就有很多500kv线路Feature加到里面。Feature一般具有两方面的属性,一方面是与地理信息相关的,例如一个变电站的位置,以及这个变电站以何种符号显示,另一方面是自身的一些和地理信息无关的属性,例如变电站的变电站名称、电压等级等属性。
GML(Geography Markup Language)即地理标识语言,它由OGC(开放式地理信息系统协会)于1999年提出。GML是xML的一个子集,专门用于地理信息领域,用于描述地理数据。
高德地图(Amap) 是国内一流的免费地图导航产品,也是基于位置的生活服务功能最全面、信息最丰富的手机地图,由国内最大的电子地图、导航和LBS服务解决方案提供商高德软件提供。高德地图采用领先的技术为用户打造了最好用的“活地图”,不管在哪、去哪、找哪、怎么去、想干什么……一图在手,统统搞定!省电省流量更省钱,堪称最完美的生活出行软件!
它具有一些特点:1、最专业的地图导航,地图数据覆盖中国大陆及香港澳门,遍及337个地级2857个县级以上行政区划单位;导航支持GPS、基站、网络等多种方式一键定位;2、最全面的生活信息〗美食、酒店、演出、商场等各种深度POI点达2600多万条,衣食住行吃喝玩乐全方位海量生活信息可供搜索查询;3、最智能的出行指南自动生成“最短”“最快”“最省钱”等多种路线规划以供选择,可根据实时路况选择最优公交/驾车出行路线。
四维地图是北京导航地图厂商四维图新研制的一种导航地图。四维地图的基础数据是国家测绘局的,路线很齐全,基本上乡村的一些小公路都有收集;但也有些县城数据不是很完整,据全球权威行业研究机构In-Stat数据监测结果显示,四维地图继连续四年车载导航市场份额超过70%之后,2007年在中国便携式导航市场份额超过35%,在中国导航地图市场的领导地位日趋稳固。目前,四维地图已服务于丰田、日产、本田、通用、卡迪拉克、别克、大众、奔驰、沃尔沃、现代等全球10大主流汽车品牌,大部分国内高端车型(丰田雷克萨斯、日产英菲尼迪、本田讴歌、通用卡迪拉克、别克林荫大道等等)都选择了四维地图;并成为诺基亚、宇达电通(Mio)、任我游(合众思壮|Garmin)、宇龙、天派等全球主流便携式导航设备的独家内嵌式导航地图。在互联网和LBS位置服务领域,不仅百度、QQ、MSN、搜狐、雅虎、携程等上千家门户和专业网站使用了四维地图,中国移动、中国联通等运营商也一致使用了四维地图。并且也是中国首家支持动态交通信息发布及导航应用的地图企业。
图吧地图是国内最大的在线电子地图及无线地图服务提供商,专业为为互联网和手机用户提供地图搜索位置查询和公交驾车线路等交通规划服。
凯立德在GIS应用领域,利用独创的空间信息处理技术,以数据可视化、思维可视化帮助客户全面了解地理信息的价值,并做出有远见的决策。按照国际软件工程标准,凯立德开发了具备自主知识产权的地理信息系统平台I-Spatial、电子政务平台X-Bridge,并在此基础上开发了国土资源管理信息系统、城市规划管理信息系统等系列软件产品;在地理信息数据化基础之上,凯立德率先将业务范围从政府决策支持、行业应用延伸到个人GPS导航应用,继续引领产业发展。
本平台采用了多个开源的软件框架,在此基础上进行了修改和扩充,客户端采用SSH开源客户端软件,服务器端采用了WCF。下面对这几个开源软件和框架做一一介绍。
1.Struts是一个MVC框架,通过配置文件很好的实现了模型与视图的分离,Struts应用包括3个组件:
控制器组件(ActionServlet和自定义Action);
模型组件(普通接口和JavaBean);
视图组件(ActionForm和Struts标签);
Struts 的MVC设计模式可以使我们的逻辑变得很清晰。
Struts的工作流程:
在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象当ActionServlet接收到一个客户请求时,将执行如下流程.
(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;
(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;
(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;
(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;
(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的 Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;
(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给ActionForward对象指向的JSP组件;
(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;
2.Spring 是一个轻量级框架,提供依赖注入容器,AOP实现,DAO/ORM支持,Web集成等功能。依赖注入需要先明确关联组件的接口,然后使用这写接口编写程序,在运行前将接口的实现组装到程序中运行。AOP的目的是从系统中分离出方面,独立于业务逻辑实现,在程序执行时织入程序中运行。Spring 的IOC和AOP可以使我们的产品在最大限度上解藕。
spring工作原理
(1)spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。
(2)DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller
(3)DispatcherServlet请请求提交到目标Controller
(4)Controller进行业务逻辑处理后,会返回一个ModelAndView
(5)Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象
(6)视图对象负责渲染返回给客户端
Spring框架是一个分层架构,由7个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式, 组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
☆ 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
☆ Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
☆ Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
☆ Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
☆ Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
☆ Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
☆ Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。
Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同 J2EE 环境 (Web 或 EJB)、独立应用程序、测试环境之间重用。
IOC 和 AOP
控制反转模式(也称作依赖性介入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器(在 Spring 框架中是 IOC 容器) 负责将这些联系在一起。
在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间调用方法。下表列出了 IOC 的一个实现模式。
3.Hibernate 是一个基于JDBC 的持久化解决方案,是一个优秀的"对象-关系映射" 框架。持久化就是将程序中数据在瞬时状态和持久状态间转换的机制。
Hibernate 就是在 JDBC的方式上进行封装,以简化JDBC方式繁琐的编码工作,将对象保存到数据库也不用编写长长的SQL语句,只需要执行简单的 session.save(Object) 就行了,当然需要配置对应的配置文件。采用Hibernate作为持久层技术的最大的好处在于:可以完全以面向对象的方式进行系统分析、系统设计。
DAO模式需要为每个DAO组件编写DAO接口,同时至少提供一个实现类,根据不同需要,可能有多个实现类。用Spring容器代替DAO工厂通常情况下,引入接口就不可避免需要引入工厂来负责DAO组件的生成。Spring实现了两种基本模式:单态模式和工厂模式。而使用Spring可以完全避免使用工厂模式,因为Spring就是个功能非常强大的工厂。因此,完全可以让Spring充当DAO工厂。
由Spring充当DAO工厂时,无须程序员自己实现工厂模式,只需要将DAO组件配置在Spring容器中,由ApplicationContext负责管理DAO组件的创建即可。借助于Spring提供的依赖注入,其他组件甚至不用访问工厂,一样可以直接使用DAO实例。
4.SSH是典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。
表现层是传统的JSP技术,自1999年问世以来,经过多年的发展,其广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种:
Web层,就是MVC模式里面的“C”(controller),负责控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC框架采用Struts。
Service层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO层为基础,通过对DAO组件的正面模式包装,完成系统所要求的业务逻辑。
DAO层,负责与持久化对象交互。该层封装了数据的增、删、查、改的操作。
PO,持久化对象。通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate作为ORM框架。
Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合,其数据服务层用来存放数据。
1.概念
WCF是基于Windows平台下开发和部署服务的软件开发包。WCF为服务提供了运行时环境(Runtime Enviroment),使得开发者能够将CLR类型公开为服务,又能够以CLR类型的方式使用服务。创建服务不一定需要WCF,但使用WCF可以使得创建服务的任务事半功倍。WCF是微软对一系列产业标准定义的实现,包括服务交互、类型转换、封送(Marshaling)以及各种协议的管理。WCF还为开发者提供了大多数应用程序都需要的基础功能模块。如:托管(Hosting),服务实例管理(Service Instance Management)、异步调用、可靠性、事务管理、离线队列调用(Disconnected Queued Call)、安全性等。WCF的大部分功能都包含在一个单独的程序集System.ServiceModel.dll中,命名空间为:System.ServiceModel。
2.服务
服务是一组功能的集合,服务可以是本地的,也可以是远程的,可以有多个参与方使用任意技术进行开发。服务与版本无关,甚至可以在不同的时区同时执行。服务内部包含了语言、技术、平台、版本、框架的诸多概念,服务之间的交互只允许制定的通信模式。服务的客户端只是使用服务功能的一方。
WCF中的所有消息都是SOAP消息。消息与传输协议无关。因为服务的创建对外界而言是不透明的,所以WCF服务通常以公开元数据(Metadata)的方式描述可用的功能以及服务可能采用的通信方式。一个非WCF客户端可以将元数据作为本地类型导入到本地环境中,WCF客户端也可以导入非WCF服务的元数据,然后以本地CLR类与接口的方式进行调用。 WCF不允许客户端直接与服务交互。客户端总是使用代理(Proxy)将调用转发给服务。代理公开的操作与服务相同,同时还增加了一些管理代理的方法。WCF允许客户端跨越执行边界与服务通信。在同一台机器中,客户端可以调用同一个应用程序域中的服务,也可以在同一个进程中跨应用程序域中调用,甚至跨进程调用。客户端也可以跨越Intranet或Internet的边界与服务交互。
3.位置透明度
WCF与其他分布式技术一样要求客户端保持一致的编程模型,而不用考虑服务的位置,但实现方式却不同。即使对象是本地的,WCF仍然使用远程编程模型的实例化方式,并使用代理。由于所有的交互操作都经由代理完成,要求相同的配置与托管方式,所以对于本地和远程方式而言,WCF都只需要维持相同的编程模型。这使得开发者不会因为服务位置的改变影响客户端,同时还大大简化了应用程序的编程模型。
4.地址
WCF的每一个服务都有一个唯一的地址(Address)。地址包含两个重要元素:服务位置与传输协议(Transport Protocol)。服务位置包括目标机器名、站点或网络、通信端口、管道或队列以及一个可选的特定路径或者URI。
五种传输样式:HTTP、TCP、Peer network(对等网)、IPC(基于命名管道的内部进程通信)、MSMQ。
如:http://localhost:8001/
net.tcp://localhost:8002/Myservice
net.pipe://localhost/Mypipe
net.msmq://localhost:8002/MyService
5.契约
WCF所有的服务都公开为契约(Contract)。契约与平台无关。
四种契约:
服务契约(Service Contract):服务契约描述了客户端能够执行的服务操作。
数据契约(Data Contract):数据契约定义了与服务交互的数据类型。
错误契约:(Fault Contract):错误契约定义了服务抛出的错误。
消息契约:(Message Contract):消息契约允许服务直接与消息交互。
服务契约
ServiceContract特性公开了CLR接口(或类)作为WCF契约。WCF契约与类型的访问限定无关,因为类型的访问限定属于CLR的概念。
OperationContract特性公开了WCF服务契约中的方法,此特性只能被应用在方法上,而不允许应用到同样属于CLR概念的属性、索引器和事件上。WCF只能识别作为逻辑功能的操作(Operation)。
契约操作不允许使用引用对象作为参数,只允许使用基本类型或数据契约。
服务的类要避免使用带参数构造函数,因为WCF只能使用默认构造函数。同样,虽然类可以使用内部的属性、索引器、静态成员等,但WCF客户端却无法使用它们。
7.托管(Host)
WCF服务类不能凭空存在,每个WCF服务都必须托管(Hosting)在Windows进程中,该进程被称为宿主进程(Host Process)。单个宿主进程可以托管多个服务,而相同的服务类型也能够托管在多个宿主进程中。
三种托管方式:
IIS:只适用于HTTP协议,优势是宿主进程可以在客户端提交第一次请求的时候自动启动。
WAS:vista的windows激活服务。WAS与IIS的主要区别是WAS并不局限于HTTP,它可以支持所有可用的WCF传输协议。
自托管:自己编写Console或者Winform、Windows服务等进行宿主进程的生命周期管理。进程必须在客户端调用之前运行。宿主进程必须在运行时显式的注册服务类型,同时打开宿主。
ServiceHost类用来创建宿主。每个ServiceHost实例都与特定的地服务类型有关,如果宿主进程需要运行多个服务类型,则必须创建与之匹配的多个ServiceHost实例,主线程可以调用Open和Close方法控制宿主。打开宿主时,将装载WCF运行时,启动工作线程监控传入的请求。由于引入了工作线程,因此可以进程的主线程在打开宿主之后执行阻塞(blocking)操作。
我们也可以针对相同的类型注册多个宿主,只要这些宿主使用不同的基地址。
ServiceHost实现了ICommunicationObject接口。如果打开或关闭宿主的操作耗时比较长,可以采用异步方式调用Beginopen和Beginclose方法。
8.绑定
单个服务可以支持各个地址上的多个绑定,WCF定义了9种标准邦定。
9.终结点(endpoint)
WCF用终结点表示这样一种组成关系。终结点就是地址、契约、绑定的混成品。地址定义了服务的位置,绑定定义了服务通信的方式,契约则定义了服务的内容。每一个终结点都包含了这三个元素,而宿主则负责公开终结点。从逻辑上讲,一个接口就相当于一个终结点。每个服务必须至少公开一个业务终结点,每个终结点有且只能拥有一个契约。服务上的所有终结点都包含了唯一的地址,而一个单独的服务可以公开多个终结点。这些终结点可以使用相同或不同的邦定,公开相同或不同的契约。每个服务提供的不同终结点之间绝对没有任何关联。
可以通过管理方式(Administratively)使用配置文件或者通过编程方式(Programmatically)配置终结点。
10、元数据交换
服务有两种方案可以发布自己的元数据。一种是基于Http-Get协议提供元数据。另一种是使用专门的终结点MEX。
11.客户端编程
若要调用服务的操作,客户端首先需要导入服务契约到客户端的本地描述(Native Representation)中。如果客户端使用WCF,调用操作的常见方法是使用代理。代理是一个CLR类。如果服务支持多个契约,客户端则需要一个代理对应多个契约类型。代理不仅提供了与服务契约相同的操作,同时还包括管理对象生命周期的方法,以及管理服务连接的方法。代理完全封装了服务的每个方面:服务的位置、实现技术、运行时平台、通信传输。
12.客户端配置
客户端信息与从服务的终结点获取的信息完全相同。可以通过管理方式和编程方式实现客户端配置。建议永远不要用SvcUtil工具生成配置文件。因为它会自动的为关键的邦定节设置默认值,反而导致了整个配置文件的混乱。
WCF提供了配置文件编辑器:SvcConfigEditor。
13.代理
代理类派生自ClientBase<T>类。ClientBase<T>类通过泛型类型参数识别代理封装的服务契约。此类中的Channel属性类型就是泛型参数的类型。ClientBase<T>的子类通过Channel调用它指向的服务契约的方法。Channel对象就是相当于服务契约的代理对象,通过它,就可以调用服务契约的相关方法。最佳的做法是在客户端调用代理完毕后要关闭代理。因为关闭代理会终止于服务的会话,关闭连接。
14.调用超时
WCF客户端的每次调用都必须在配置的超时值内完成。无论何种原因,一旦调用时间超出该时限,调用就会被取消,客户端会收到一个TimeOutException异常。可以通过修改binding的Sendtimeout属性来修改超时值。
15.编程方式配置和管理方式配置
两种技术各有所长,相符相成。管理配置方式允许开发者在部署服务之后,修改服务与客户端的主要特性,而不需要重新编译或重新部署。主要缺陷是不具备类型安全,只有在运行时才能发现配置的错误。 如果要求配置的决策完全是动态的,就可以采用编程配置的方式。他可以在运行时基于当前的输入或条件对服务的配置进行处理。
本章对WebGIS的一些基本概念、GIS系统上的一些基本元素的概、第三方图商、开源软件技术作了介绍。目的在于使读者能够了解一些GIS上的术语和技术的大概原理,方便理解后面的内容。
基于WebGIS的车联网平台主要由安装在每个辆车上的移动车载终端、坐席中心、以及无线通信网络这几部分组成,是集GPS技术、GIS技术和无线通信技术于一体的综合车辆服务系统。其原理是坐席中心根据移动车辆发生碰撞后接收到的GPS定位信息进行处理,利用GIS技术显示受监控车辆的位置,并能根据需要,对受控车辆进行报警救援和POI查询服务,通过电话与用户建立语音通道,从而实现双向通信,为用户提供安全、便捷的救援服务保障和其他的一些便捷查询服务、导航服务。
该系统应具备根据具备车辆属性信息查询、以及驾驶员的信息查询的功能,经纬度定位车辆具体位置信息、周边查询、查询公安报警电话、医疗电话的功能,还有具备GIS软件的一些基本功能鹰眼、POI搜索、客户关系管理系统、用户自服务管理系统等功能。
①实用性
最大限度满足用户的需求,做到灵活实用是系统建设的最高要求,也是系统设计的基本出发点。实用性要求做到:便于用户应用,便于系统管理,便于数据更新和系统升级,具有简单明了的人机交互方式、优化的系统结构和完善的数据库系统,以及灵活简便的用户界面和及时向用户提供有效的帮助信息。
②网络化
采用Browse/Server架构的系统,更适合Internet时代的需要。用户可以轻松地通过Internet进行多方面交流。
③经济性
系统建设要求在实用的基础上做到最经济,以最小的投入获得最大的效益。在软硬件配置、系统开发和数据库建立上都充分考虑到经济原则。
①系统操作的简单实用性
该系统用户为坐席人员,对计算机和GIS知识了解不多,因此系统的操作应尽可能简单实用。
②必要的纠错性
系统出现故障时应给出明确的出错提示及解决方法。
③系统的安全性
系统的运行要保证数据的安全性和准确性。因此需要建立一些安全保护机制以免数据被其他用户非法使用和遭受人为的破坏,如构筑防火墙,来防止Internet的用户对企业内部信息的窃取以及外界病毒的侵入;对系统的不同用户设置不同的访问和处理权限。
④系统响应的快速性
坐席中心作为整个系统的一个重要部分,起着承上启下、内外衔接的作用。作为客户服务的窗口,监控中心要能及时处理大量用户的业务请求,这些在车辆救援中心受理的业务请求如何得到准确、及时、快速的处理,是体现系统响应速度和解决客户问题效率的关键。为了更好地与用户之间进行交互.服务器端应用应提高服务器处理大量请求时的响应速度。
①系统输入数据简单方便。
②系统输入数据既有安全保护,叉可以动态修改。
③系统输出的数据格式符合标准要求,输出操作简洁快速。
本系统采用先进的三层B/S 体系结构。三层B/5(Browser/ Server)模式在逻辑上将应用功能分为三层: 客户显示层、业务逻辑层、数据层。三层模式具有良好的灵活性、安全性和可扩展性,成为真正意义上的“瘦客户端”,从而具备了很高的稳定性和执行效率。它可以将服务集中在一起管理,统一服务于客户端,从而具备了良好的容错能力和负载平衡能力,相比传统的C/S模式是建立企业级车辆救援平台的最佳选择。
随着Internet越来越广泛的应用,一种新兴的体系结构Browser/Server应运而生,并获得飞速发展,成为众多厂家争相采用的新型体系结构。本质上,Browser/Server也是一种Client/Server结构,一种由传统的二层Client/Server结构发展而来的三层Client/Server结构在Web上应用的特例。在Browser/Server的系统中,用户可以通过浏览器向分布在网络上的许多服务器发出请求。Browser/Server结构极大的简化了客户机的工作,客户机上只需安装、配置少量的客户端软件即可,服务器将担负更多的工作,对数据库的访问相应用程序的执行将在服务器上完成。
在Browser/Server三层体系结构下,表示层(Presentation)、功能层(Business Logic)、数据层(Data Service)被割成三个相对独立的单元。
第一层表示层:Web浏览器。在表示层中包含系统的显示逻辑,位于客户端。它的任务是flqWeb浏览器向网络上的某一web服务器提出服务请求,Web服务器对用户身份进行验证后用HTTP协议把所需的主页传送给客户端,客户机接受传来的主页文件,并把它显示在Web浏览器上。
第二层功能层:具有应用程序扩展功能的web服务器在功能层中包含系统的事务处理逻辑,位于web服务端。它的任务是接受用户的请求,首先需要执行相应的扩展应用程序与数据库进行连接,通过SQL等方式向数据库服务器提出数据处理申请,而后等数据库服务器将数据处理的结果提交给Web服务器,再由Web服务器传送回客户端。
第三层数据层:数据库服务器。在数据层中包含系统的数据处理逻辑,位于数据库服务器端。它的任务是接受web服务器对数据库操作的请求,实现对数据库查询、修改、更新等功能,把运行结果提交给web服务器。
三层的Browser/Server体系结构是把二层Client/Server结构的事务处理逻辑模块从客户机的任务中分离出来,由单独组成的一层来负担其任务,这样客户机的压力大大减轻了,把负荷均衡地分配给了Web服务器,于是由原来的两层的Client/Server结构转变成三层的Browser/Server结构B/S体系结构从根本上改变了C/S体系结构的缺陷,是应用系统体系结构深刻的变革,它具有如下突出优点:
①客户端不再负责数据库的存取和复杂数据计算等的任务,只需要其进行显示,充分发挥了服务器的强大作用,这样就大大的降低了对客户端的要求,降低了投资和使用成本。
②易于维护、易于升级。维护人员不再为程序的维护工作奔波于每个客户机之间,而把主要精力放在功能服务器上。由于用户端无需专用的软件,当企业对网络应用进行升级时,只需更新服务器端的软件,减轻了系统维护与升级的成本与工作量。
⑧用户操作使用简便。B/S结构的客户端只是一个提供友好界面的浏览器,通过鼠标即可访问文本、图像、声音、电影及数据库等信息,用户无需培训便可直接使用,利于推广。
④更适合于网上发布信息。B/S结构使用的是Intcmet的Web技术,因而更适合网上信息的发布,拓展了传统的数据库应用的功能,更适合Intemet时代的需要。
而Client/Server结构存在诸多不足,主要体现在:
一程序开发量大。由于存在许多不同的客户端都要访问数据库,且通常用户接口和应用程序都集中在客户端,所以对不同客户端要开发不同的程序,极大的增加了编程的工作员。
客户端负担重。应用程序集中在客户端,随着应用系统的功能越来越复杂,客户端的应用程序也变得越来越庞大,为了提高性能,需要不断提高客户机的配置,又加重了投资的成本。
移植困难、新技术不能轻易应用。一个软件平台及开发工具一旦选定,不可能轻易更改。
系统维护困难。一旦系统程序要进行修改和升级,则需要更新所有客户端的程序,增大了系统的正常维护升级工作。
以上为整个系统结构图,整个平台主要工作原理如下:
1.用户通过网站/APP将必要的车辆信息(车辆VIN及MAC地址)与用户个人信息/社交信息等录入构建的用户/车辆/社交数据库中
2.CRM系统可以通过API接口管理车辆/用户/社交信息(执行增删改查操作)
3.用户车机与手机通过蓝牙连接,当发生事故时手机向back-end中的短信/数据网关发送报警信息
4.报警数据经过解码模块将VEDS数据解码,通过数据网关接调用API接口将数据录入到报警事故数据库中,短信网关将二进制的短信经过转化模块后调用接口录入数据。
5.接口API的作用是对用户/车辆/社交等信息进行增删改查操作的。并将报警信息推送给通知服务器。
6.通知服务器获取消息后将通过长连接形式通知到座席客户端
7.座席客户端中内嵌了ocx报警控件与通知服务器进行长连接的通讯
8.当用户车辆发生报警时,电话接入呼叫中心,话务员查询出用户信息进行通话,报警信息会自动弹出显示用户所在位置及车辆信息,同时backend后台将调用短信接口将短信通知到该用户社交信息中朋友/亲属的手机上,同时通过第三方的云平台将事故信息推送给用户朋友/亲属。
9.话务员在座席系统上根据用户事故位置查询PSAP库,选择施救机构
10.话务员发起三方通话,发起与警方用户间的通话。
11.警方/医疗机构救援后,话务员保存服务记录,服务结束。
(1)技术指标
①系统能达到较快的响应速度,数据库连接的使用效率较高。
②采用应用服务器、负载均衡技术使得服务器端处理能力可方便扩充。
(2)可靠性
①所有软件和业务数据均保存在后台服务器和数据库中,可靠性极高。
②集中管理的应用服务器、数据库服务器被安黉在专门的机房内,机房具备高可靠的电力供应和良好的环境条件。
③服务器具有成熟的备份技术,必要时可进行异地同步备份。
④服务器端宽带接入互联网骨干,保证网络连接的可靠性。
(3)安全性
①安装专业防火墙以保证网络安全。
②系统具备完善的用户权限管理功能,用户使用和访问被授权的功能和数据。
(4)经济性
接个系统的部署、升级、维护、数据备份等只需要在服务器上完成.客户端无需任何安装和调试,从而极大降低了系统的安装实施和FI常维护成本,使系统具有优秀的可维护性和极低的维护成本等优点。
位于GPS车载终端的GPS接收机实时采集车辆当前的位置信息以及速度、方向和时间等相关信息,发生碰撞后,按信令协议处理后,生成短消息数据包,该数据包经GSM通信模块发往移动GSM通讯中心。移动GSM通讯中心将此数据包按控制信令处理,传送给SMS短消息处理中心。通过与坐席监控系统相连接的专线将数据送到坐席系统监控平台上,监控中心将收到的坐标数据及其它数据还原后,与GIS系统的电子地图相匹配,并在电子地图上直观地显示车辆实时坐标的准确位景,在电子地图上清楚而直观地掌握车辆的动态信息(位置、状态等)。
该系统具有如下特色:
利用GPS和电子地图可以显示车辆位置,在全球任何位置均可进行车辆的位置救援监控工作,充分保障了WebGPS所有用户的要求都能够得到满足。
功能多,定位速度快,能够任意放大、缩小、还原显示图形。
信息传输采用GSM公用数字移动通信网,具有保密性高、大、抗干扰能力强,漫游性能好、移动业务数据可靠等优点。
本章对WebGIS在车联网应用平台进行了需求分析,其中包括系统要求、性能要求、输入输出要求、功能设计、主要性能和指标、系统特色等进行了阐述。
坐席中心在实现信息的浏览、查询上采用了B/S模型,该模型包括用户服务层、应用服务层和数据服务层。与传统的两层结构相比,增加了应用服务层,用于处理复杂的应用逻辑、数值计算、数据分析等与用户界面和数据存储无关的工作。在三层结构中,许多与应用相关的工作从客户端抽取出来,放入独立的应用服务器中。因此,用户界面、应用处理、数据库管理分为了三部分,每部分完成其特定的功能,可分别由不同的专业人员进行开发和管理。坐席中心的软件开发针对的是基于服务器端应用开发,着重于对处于中间层的应用逻辑的处理。根据应用的需要,开发采用了如下的设计思想:
完全采用面向对象的分析、设计和开发技术,使系统功能可灵活扩展,适应变化。采用全Java技术开发,“一次编码,到处运行”,支持真正的跨平台计算:灵活使用各种最新Java技术,既保证系统的实用性,又保证运行的高效率。
(1)JAVA特性
近年来Intemet/Intranet技术的迅猛发展和基于HTTP协议的Web技术的广泛应用,极大地改变了传统的工作模式和生产方式,使更大范围内的资源共享和协同工作成为可能。在Internet/Intranet上,以Web技术为核心可以构成一个与用户平台无关的统一而简单的交流方式,把已有的和未来的有关数据库、多媒体、安全设施等各种技术纳入以Web为核心的浏览器/服务器(B/S)模式中,使浏览器成为人们交流的万能工具,以任务为中心组织信息交流变得更加容易。在现有各种基于Web技术的应用系统的丌发方案中,由于Java语言先天就是Internet互联网蓬勃发展的产物,因而具有其它任何开发平台所无法比拟的优势。
Java语言由Sun Microsoft公司开发,是一种面向对象和平台无关的编程语言。Sun将Java描述为一种具有简单性、面向对象性、动态性、分布性、可移植性、多线程、平台无关性、高性能、健壮性和安全性的语言ll“。
简单性
一方面,Java由c++衍生而来,其基本特征、程序结构和语言风格等与C++十分类似;另一方面Java又比C++简单,它抛弃了C++中的一些不是绝对必要的功能,如头文件、预处理器、指针、结构、隐式的类型转换等,并且通过实现自动垃圾收集大大简化了内存管理的工作。因此Java比c++更容易学习,其程序的可读性也更强。
面向对象
Java是一种完全面向对象的程序设计语言,它除了数值、布尔和字符三个基本数据类型外的其它类型都是对象,Java的程序代码以类的形式组织,由类来定义对象的各种状态和行为,Java抛弃了c++中的非面向对象特性,如结构和函数调用,Java也不再支持全局变量。在Java中,如果不创建新类就无法创建程序,Java程序在运行时必须先创建一个类的实例,然后才能提交运行。Java同样支持继承特性,但Java只支持类的单重继承,即每个类只能从一个类中继承。其它一些面向对象的语言,如C++支持多重继承,但这会引起混乱并使语言变得复杂。
机器无关的字节码编译Java的编译器将Java程序编译为字节码,字节码十分类似于机器指令,但字节码又不是为某个特定的机器定义的,因此一般不能在某个具体的平台上执行,而需要由Java运行系统的解释器来解释执行。Java程序的执行需要经过两个步骤:首先由编译器将Java程序编译为字节码,然后由Java运行系统解释执行字节码。
结构中立
Java语言的设计不针对某种具体结构。为了做到结构中立,除了上面提到的编译生成机器无关的字节码外,还制定了完全统一的语言文本,如Java的基本数据类型不会随目标机的变化而变化,一个整型总是32位,一个长整形总是64位。像C、C++这样的现代程序设计语言并不满足这一点,不同的编译器和开发环境之问总会有一些细微的不同。为了使Java的应用程序不依赖于具体的系统,Java语言环境还提供了用于访问底层操作系统功能的类组成的包,当程序使用这种包时,可以确保它能运行在各种支持Java的平台上。
支持语言级多线程
计算线程的前提下与系统进行交互。多线程程序设计通常是困难的,其原理在于同一时间内可能发生许多事件,而且它们的顺序不是确定的。在Java中提供了一套方便的同步机制,其基本原因是C.A.R.Hoare提出并在许多新型操作系统中得到广泛使用的管程和I临界区保护规则。Java将这些原理集成到了语言中,使这些规则的使用更加方便。如果底层的操作系统支持多线程,Java的线程通常被映射到实际的操作系统线程中,这意味着在多机环境下,用Java写的程序可以并行执行。
自动内存管理
在Java中,程序员不需要关心内存管理的问题,Java系统内嵌了自动垃圾收集功能,通过扫描内存,能自动地释放不再使用的内存块,这就使Java程序的编写变得简单了,而且减少了程序中因内存管理问题而出错的可能性。
稳固性
在PC机上编写程序经常会遇到由于程序中的错误而使计算机崩溃的情况。Java程序也会产生错误,但Java在发生错误时,程序并不中断,而是抛出一个异常,并自动寻找相应的异常处理方法。这种异常处理是新型操作系统的错误处理方法,Java将异常处理引入到语言中,使程序员能用统一的方法处理各种错误。Java引入了内存保护机制,Java程序只能修改被许可部分的内存的值。Java取消了指针操作,从而消除了复写内存单元或破坏有用数据的可能性。
分布性
Java是面向网络的程序设计语言。一方面,Java提供了适合于Intemet环境的对象连接机制、程序组织方式和名字空间;另一方面,Java通过提供支持TCP/IP,www等的网络包,使用户能方便地访问其URL地址上的资源。
安全性
在分布式环境中,安全性是一个十分重要的问题。Java为了使自己适合于分布式应用的开发,在语言的设计之中考虑了安全性问题。Java在语言和运行环境中引入了多级安全措施。
动态特性
Java的动态特性是其面向对象设计的延伸。Java程序的基本组成单元是类,而Java的类又是运行时动态装载的,这使得Java可以在分布环境中动态地维护应用程序及其支持类库之间的~致性,而不像c++那样,每当其支持类库升级之后,相应的应用程序都必须重新编译。
高性能
一般情况下,可移植性、稳定性和安全性总是以牺牲性能为代价,解释型语言的执行效率远远低于编译型语言的速度,但Java语言很好地解决了这个问题。它在实现了可移植性、稳定性和安全性等特性的同时,又有高性能。Java编译生成的字节码与机器码十分接近,而且Java还有两种提高性能的措施,即及时编译(在执行前将字节码编译为机器码)和链入C代码。
出于它所具有的这些特点和优点,使得它已经成为跨平台应用开发的一种规范,在世界范围内广泛流行。由于Java程序运行在Java虚拟机环境中,它不依赖于特定的系统,所以编程人员只需一次性丌发一个“通用”的最终软件即可在多个平台环境中使用,这将大大加快软件产品的开发。
坐席中心是整个系统的核心,根据系统的规模可设计成分布坐席中心。坐席中心同时也是通信枢纽,负责与GPS车载设备的信息交互和各个分中心的网络互连,完成各种信息的分类、记录和转发,以及分中心之间业务信息的流动,同时对整个网络状况进行监控管理。坐席中心采用呼叫中心技术、无线数据通信和无线语音通信,结合GIS技术和GPS车载设备,通过呼叫应答、调度派单的形式,实现车辆救援的智能调度,达到强化车辆救援管理,提高调度效率,降低运营成本的目的。坐席中心同时接收GPS车载设备上传的车辆信息,提供跟踪定位、监听录音和远程控制等措施,坐席中心也是行车数据存储、回放、分析的平台。
GPS车载设备由GPS接收单元、GSM无线通信单元、控制单元、记录单元以及天线等组成。GPS车载设备通过GSM无线通信网络与坐席中心进行双向信息传输:它接收GPS定位信号,对车辆的状态进行检测,并将状态数据传送到坐席中心,同时接收坐席中心的调度信息或控制数据,并对车辆进行控制;同时车载设备将车辆行驶状态数据实时记录在数据库中供后期处理。
GSM无线通信网络是GPS车载设备与坐席中心信息交互的通道,其将GPS定位信息、求救、服务请求等信息准确及时地传回坐席中心;将中心的应答、服务、控制等信息准确及时地传给移动端。
语音平台作为整个车联网平台非常重要的一个组成部分,它主要包含了一下几个部分:
自动呼叫分配器(ACD) 主要负责根据一定的分配算法,将用户打入的电话合理地分配给后台的座席处理人员。例如,可以采用平均分配算法或基于服务技能算法等。自动呼叫分配设备系统性能的优劣直接影响到语音平台的效率和顾客的满意度。ACD一般包括两个功能模块,即排队模块和呼叫分配模块。排队模块可以实现留言排队、重要客户优先排队等增强排队功能,此外,还可以在客户排队时向客户其通知排队状态,如目前在队列中的位置、预计等待时间等。呼叫分配模块可以将座席人员按技能和技术熟练程度进行详细分组,并与CTI路由模块结合,实现专家话务员选择,保证客户得到最合适的座席人员的服务,对于重要客户还允许其直接呼叫座席人员。
交互式语音应答(IVR,Interactive Voice Respond )为接入到语音平台的用户提供语音导航、语音应答和录音功能。用户接入系统后,IVR根据客户服务中心的业务流程对客户进行引导,以方便用户进行业务选择;对于查询或咨询类业务,IVR可以通过预先录制的语音文件再配合文字语言转换(Text To Speech)软件对客户进行解答;当系统资源忙时,IVR可以引导用户留言。此外,一些比较先进的IVR系统还具备有语音信箱、电子邮件和自动语音识别(Automatic Speech Recognition)的能力。IVR实际上是一个“自动的业务代表”,它可以取代或减少人工座席的操作,提高效率、节约人力、实现24小时服务。同时也可以方便用户,减少用户等候时间,降低电话转接次数等。
CTI服务器(Computer Telephony Integration)提供交换机和计算机互通的联络接口,使得计算机可以根据交换机提供的主叫号码等信息,智能地接通相应的坐席,并将用户的资料在电话接通的同时,显示在座席人员的计算机屏幕之前,实现“Screen-Pop”的功能,可以为用户提供更好的服务。 CTI服务器是语音平台的核心,它为语音平台业务的实现提供软件控制和硬件支持。
系统管理员可以对所有的车辆、用户、社交信息进行增删改查的操作。
用户对自己的车辆信息、个人信息进行管理,拥有对车辆信息、和个人基本信息所进行的增删改查、注册新用户、修改原密码、注销该用户等权限。
前台
A.开发语言:Java(JDK1.5)
B.技术架构:Struts2+Spring2.5
C.开发工具(软件):My Eclipse 10.6、apache-tomcat-5.5、SVN代码管理工具
后台
A. 开发语言:C#
B. 技术架构:framework4.0+wcf
C. 开发工具:Microsoft Visual Studio 2010、MsSQL2008、IIS6.0等
在对当前较流行的三种网络操作系统UNIX、Netware、WindowsNT研究分析的基础上,结合本项目的具体实际情况,选择了Microsoft Window 2008 Server作为本系统的网络操作系统,它是支持Web应用程序开发的基本平台及环境,其图形用户界面友好、操作方便、灵活,并已得到广泛认同。
服务器是Web环境中重要的部分,主要处理Internet接入服务请求,提供Internet用户接入查询地图及查询车载台位置服务,真正实现“瘦”客户端,“胖”服务器端。Tomcat服务器是一种用得很广泛的Web服务器,它是一个开放源代码的免费的产品。Tomcat源自于Apache软件基金会Jakarta项目,作为一个开放源码的软件,Tomcat不仅能独立成为一个Web服务器,还能与其它的主流的Http服务器(如IIS、Apache)一起工作,其它Http服务器处理静态的网页,而Tomcat处理动态的Servlet、JSP请求,且运行稳定、可靠、效率高,且具有良好跨平台性和稳定性,因此选用其作为web服务器。
核心数据库使用SQL SERVER 2008,它在下述指标上具有优点,和实际应用相符;
①具有良好的分布式处理和分布式存储的性能,支持数据异地处理和异地存储,同时在访问方式上具有良好透明性;
②具有严格的用户授权和身份认证功能,不同领域的数据处理有专门授权,访问数据时实行身份认证,合乎权限的用户方能存储数据;
③具有方便的数据备份、数据检测和数据恢复手段;
④具有和WEB服务器合二为一的无缝连接性能;
⑤数据可以很方便地从原来的Foxpro或Access等数据库升级而来,不必重新输入。
(1)Web服务器软件配置
操作系统:Microsoft Window 2003 Server
Web发布及站点管理:Tomcat
(2)数据库服务器软件配置
操作系统:Microsoft Window 2003 Server或更高版本
数据库管理:Microsoft SQL Server 2008
(3)浏览工作站软件配置
操作系统:Microsoft Window 98,2000或以上
浏览器:Microsoft Intemet Explorer 6.0或以上
服务器端:品牌服务器、CPU:双核2.66GHz或以上、内存:4G 、硬盘: 200G以上
客户端:CPU:双核2.66GHz或以上、内存:1G 、硬盘: 100G以上
串网络配件:网络交换设备,如交换器、HUB、路由器
目前,数据可以多种形式存储,如文件的形式,另外就是用数据库存储数据,本平台使用的数据库是MsSQL2008。
SQLServer是一种网络数据库管理系统,它在US或B/S双层结构中位于服务器端(亦称后端),用于存储数据、提供数据和管理数据,是整个应用系统的数据库引擎,能够满足客户端连接数据库和存取数据的需要。
在SQLServer中,表是由行和列组成的,每列称为一个字段,每一行称为一条记录。表中的每个字段都属于某种数据类型。SQLServer是一种大型数据库管理系统,可以存储大量各种类型的数据。在SQLServe:中的提供了较多的数据类型,满足客观实际的的需要。对数据类型的选择和输人,有其规律性。
随着SQLServer数据库管理系统功能的不断增强、性能的不断完善,在数据库技术中,注意数据类型的选择策略,运用好大数据量的存储技术,掌握其大数据量存储规律,将各类数据尤其多媒体数据完全由数据库管理系统统一存储和管理,只有这样,才能最大限度地发挥数据库管理系统的强大功能。
TBL_RegisterUserTmp:用户注册获取验证码表
TBL_RegisterUser:注册用户信息登记表
TBL_EmergencyContacts:用户信息表对应的每一个用户的紧急联系人表TBL_VEDS:EA信息http方式上传GPS位置点信息登记表
TBL_EAInfoGPS:EA信息短信方式上传GPS位置点信息登记表
TBL_EaTask:任务表
TBL_CallRecord:通话记录表
TBL_ServiceRecord:服务记录表
TBL_ConsultInfo:咨询信息表
SQLServer提供了4种备份选项,选项的可用性由数据库恢复模型决定。
(1) 完全备份
完整备份此时间点所有的数据。
(2) 差异备份
保存上一次完整备份之后改动的所有数据页。
(3) 事务日志备份
备份日志中的所有事务。
(4)文件和文件组
简单恢复模型下的典型备份计划
简单备份计划适用于对实时数据敏感性不高,数据更新量不大的数据库系统,对计算机系统资源要求较低。由于使用简单恢复模型在发生故障时可能会丢失较多数据和全部日志,所以不推荐在有线电视用户管理系统等重要数据库系统中使用。
WebGIS我们调用的高德地图JavaScript API ,它是一套用JavaScript 语言编写的应用程序接口,您可以通过各种API接口向地图添加内容,创建功能丰富、交亏性强的地图应用。高德地图JavaScript API 提供了大量的实用工具和富有特色的插件功能,并提供了搜索和路线规划等服务。 高德地图JavaScript API 提供了各种类型的控件,为了保证API的迅捷性,所有控件均以插件的形式提供给用户使用。高德地图JavaScript API目前提供的插件类有:
地图工具条插件 (AMap.ToolBar )包括缩放控件,用户可控制缩放按钮是用滑动滚动条还是“+/-”按钮形式,方向键盘控件、自动定位控制。添加后默认位亍地图左上角。
地图鹰眼插件 (AMap.OverView )加载此控件后,会在地图右下角显示一个地图简略的概觅,用亍在更广阔的区域反映当前的地图视口 反映当前的地图视口 反映当前的地图视口 反映当前的地图视口 ,支持用户控制此鹰眼是打开状态还是关闭状态。添加乊后默认位亍地图右下角。鹰眼图也是一张地图,只不过它的范围是最大的范围,而且不能缩放、平移。通过移动鹰眼图上的小方框可以快速的将地图定位到小方框所在的地理位置鹰眼图的实现原理:和大地图一样首先设置好Map,只需要加范围就是全图最大的地理范围,不过在其中只加入一个瓦片图层,而载第0级的瓦片,也就是一张瓦片就够了。当鼠标点下时,使得小方框可以被拖动;当鼠标释放点击时,小方框不再能被拖动。计算出小方框中心点在ovMap中的实际地理位置,然后将外面的大地图通过moVeTo函数移动到这个地理位置即可。这样就实现了通过鹰眼图快速地将地图定位到一个指定的地理位置
地图比例尺插件 (AMap.Scale)用亍显示地图比例关系,添加后默认位于地图左下角。
var opt = {level:13, center:new MMap.LngLat(cx||116.397428, cy||39.90923), doubleClickZoom:true, scrollwheel:true};
var mapObj = new MMap.Map("mapDiv", opt);
在初始化一幅地图之后,可能想要通过删除、添加或修改用户界面行为 或控件来调整 或控件来调整地图 。这时,需要调用相关插件来设置想显示在地图上的控件,可以通过Map对象的plugin方法在地图上添加插件,通过以下代码添加工具条、鹰眼、比例尺插件
mapObj.plugin(["MMap.ToolBar", "MMap.OverView", "MMap.Scale","MMap.MouseTool"], function () {
//添加工具条
tool = new MMap.ToolBar();
tool.autoPosition = false;
mapObj.addControl(tool);
view = new MMap.OverView();
mapObj.addControl(view);
//比例尺插件
scale = new MMap.Scale();
mapObj.addControl(scale);
//鼠标工具
mouseTool = new MMap.MouseTool(mapObj);
});
浏览器中的JavaScript是事件驱动的,这表示 JavaScript通过生成事件来响应交互, 通过生成事件来响应交互, 通过生成事件来响应交互, 通过生成事件来响应交互, 通过生成事件来响应交互, 通过生成事件来响应交互, 并期望程序侦听感兴趣的事件。 例如,在浏览器中用户鼠标左键点击地图时,浏览器会触发发点击事件,对此事件感兴趣的用户 可会点击事件注册监听器。当点击事件触发时,用户可以在监听器中接收 到这个事件 ,并执行自定义的行为,例如显示点击处的经纬度坐标信息。高德地图 JavaScriptAPI 拥有一个自己的事件模型,程序员可监听地图API对象的自定义事件,这些事件是独立的,并且与标准DOM事件不同。
高德地图JavaScript API通过bind()方法绑定对象和事件,您可以通过该方法来监听对象的事件,例如AMap.Map的click,dblclick等事件。在用bind()方法绑定乊后,当这些事件被触发时,监听凼数可以获取到相应的事件参数event,该参数中包含鼠标所对应的地理位置的经纬度坐标。 使用bind()方法来监听事件,有三个参数,一个对象,一个待监听事件和一个指定事件发生时调用的凼数。 如下所示,mapObj是一个地图对象,click是待监听的鼠标左键单击事件,function()凼数是当单击事件发生时调用的凼数。当用户点击地图时,会弹出一个对话框显示“You clicked me!”。
mapObj = new AMap.Map("map");
function eventHandler() {
alert("You clicked me!");
}
mapObj.bind(mapObj, "click", eventHandler);
通常情况下,用户界面事件会传递事件参数,您可以通过事件监听器访问这些参数,这些参数会注明事件发生时用户界面所处的状态。例如,用户界面“click”事件,监听函数会得到一个事件对象event,在event的属性中可以获取有关该事件的详细信息,例如经纬度属性,该属性指出了用户在地图上点击位置的经纬度。同时在监听函数中this.obj会指向触发该事件的DOM元素。 可以访问事件侦听器的事件参数,这与访问对象属性的方法一样。以下示例介绍了如何为地图添加事件侦听器,以及如何在用户点击地图时,在所点击的位置处创建一个标记。
var lnglat;
mapObj.bind(mapObj,"click",function(e){
lnglat=e.lnglat;
var marker = new AMap.Marker({
id:"m123",
position:e.lnglat, icon:"https://file2.kaopuke.com:8081/files_image/202303/marker_sprite.png", offset:{x:8,y:34}});
mapObj.addOverlays(marker);
mapObj.setCenter(lnglat);
});
所有叠加或覆盖到地图的内容,我们统称为地图覆盖物。如标注、矢量图形元素(包括折线和多边形和圆)、信息窗口等。覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动地图API提供了如下几种覆盖物:
Marker: 标注表示地图上的点,可自定义标注的图标。
Label: 表示地图上的文本标注,您可以自定义标注的文本内容。
Polyline: 表示地图上的折线。
Polygon: 表示地图上的多边形。多边形类似亍闭合的折线,另外您也可以为其设置填充颜色。
Circle: 表示地图上的圆
dow: 表示信息窗口,也是一种特殊的覆盖物,它可以展示更为丰富的文字和多媒体信息。需要注意的是,同一时刻只能有一个信息窗口在地图上打开。
可以使用addOverlays()方法向地图添加覆盖物,使用removeOverlays()方法移除覆盖物,注意此方法不适用于InfoWindow。
标注表示地图上的点。您可以使用默认点标注在地图上显示一个标注,也可以使用Icon类来构造复杂的点标注,如修改图标的显示,设置点标注的大小,设置点标注的鼠标滑过和滑出的状态等。
点标注用于标识地图上的位置。API提供了默认图标样式,类名为AMap.Marker,其构造函数的参数为MarkerOptions,用来设置点标注的经纬度位置、偏移量、图像、显示内容、图标的热点区域、图标是否可拖动、图标旋转、图标是否可见。您也可以通过Icon类自定义标注图标。 在创建一个点标注之后,可以使用地图对象的addOverlays()方法将其添加到地图上。
以下示例介绍了在地图指定位置添加一个默认点标注:
var marker = new AMap.Marker({id:"m", position: new AMap.LngLat(116.40632629394531, 39.90394233735701),
offset: new AMap.Pixel(-8,-34), icon: "https://file2.kaopuke.com:8081/files_image/202303/lan_1.png" });
自定义构造MMap.Marker对象mapObj.addOverlays(marker); 加载覆盖物 position属性用于为点标注设置位置。 offset属性用于设置偏移量,将其设置为(0,0)即“offset: new AMap.Pixel(0,0);”则点标注图标左上角跟position对齐,如A图所示。如果将偏移量设置为(-8,-34) 即“offset: new AMap.Pixel(-8,-34);”偏移量向上向左为负数,向下向右为正数,点标注图标中心点position对齐
AMap.PoiSearch提供兴趣点搜索服务,Amap.PoiSearch的构造函数的参数是可选的,是PoiSearchOption类型的对象,可以对搜索目标库、搜索的数据类别、搜索范围、查询范围、每页显示结果数量等进行设置。在构造一个兴趣点搜索对象之后,可以调用该搜索对象的各种方法进行搜索,例如Poi查询、根据中心点关键字进行周边查询、根据中心点经纬度迚行周边查询、根据PGUID(全局索引库ID)查询兴趣点的详细信息等兴趣点相关搜索服务、拉框查询关键字等。 在北京搜索关键字为“中关村”的代码如下:
var poiSearchOption = { srctype: "POI", type: "", number:10, ,batch: 1, range: 3000,ext:"" };
var poiSearch = new AMap.PoiSearch(poiSearchOption);
poiSearch.byKeywords("中关村","010", function(result) {
//输出查询结果
});
当需要查询某个中心点周边一定范围内的Poi信息时,可以使用周边查询API。周边查询API有两种类型:根据中心点关键字查询和根据中心点经纬度查询,这两种方法的参数不一样: 中心点经纬度查询,需要中心点坐标(AMap.LngLat类型),查询关键字,回调函数三个参数poiSearch.byCenPoi(centXY,keywords, cenPoiSearch_func); 中心点关键字查询,需要中心点关键字,查询关键字,查询地区,回调函数四个参数
poiSearch.byCenKeywords(CentKeyword, keywords, city,cenKeywordSearch_CallBack);
当用户需要查询某个多边形范围内的Poi时,可以使用范围查询服务。 指定范围查询,需要指定组成多边形的点坐标数组,查询关键字,回调函数三个参数 poiMSearch.byRegion(array, keywords, searchResult_CallBack);
地理编码能够将地址信息和地理坐标点信息进行相互转化,包括将地址信息转换为地理坐标点的编码和将地理坐标点转化为地址信息的逆地理编码。 高德地图JavaScript API提供了Geocoder类进行地址解析,您可以使用geocoderOption来设置各个参数选项,例如查询的范围,交叉口数量,线记录数,返回的兴趣点数量等。 var geocoderOption = { range:300, crossnum:2, roadnum :3, poinum:2 }; var geocoder = new AMap.Geocoder(geocoderOption);
地理编码是将地址信息转换为地理坐标点信息,你可以使用此项功能在指定位置添加一个点或是定位地图上的某个位置。geocoder.geocode("北京市海淀区苏州街3号",function(data){ console.log(data); //输出地理编码的结果 });
逆地理编码又称位置描述或地址解析,即从已知的经纬度坐标到对应的地址描述(如省市、街区、楼层、房间等)的转换。 geocoder.regeocode(new AMap.LngLat("116.3591194152832","39.972121232368345"), function(data){ console.log(data); //输出逆地理编码的结果 } );
坐席客户端采用Struts + Spring + Hibernate轻量级架构系统, 可以改变应用程序设计的耦合度和灵活性, 可以允许层替换而不影响到其它层的代码, 可以方便地处理容器级的服务,减轻开发者处理复杂问题的负担. 依据车辆救援服务系统的特点和系统需求, 对整个系统进行逻辑分层, 有利于系统的开发、维护以及后续新功能的扩充, 这里, 软件的逻辑分层指的是在单个的软件模块中完成相对独立的特定的功能.在系统的框架设计中, 采用MVC ( Mode-lV iew-Controller) 设计模式, 整合Struts+Spring+Hibernate轻量级框架, 将整个系统分为四层: 表示层( Presentation Layer)、业务逻辑层( Business Layer)、数据持久层( Persistence Layer)和域模块层( DomainM odel Layer), 其中,Struts实现表示层, Spring实现业务逻辑层, Hibernate实现数据持久层. 具体做法是: 用面向对象的分析方法, 根据需求提出一些模型, 将这些模型实现为基本的Java对象, 然后编写基本的DAO(Data Access Object) 接口, 并给出Hibernate的DAO实现, 采用Hibernate架构实现的DAO类来实现Java 类与数据库之间的转换和访问, 最后由Spring完成业务逻辑. 集成SSH 框架的系统结构如图所示
集成SSH框架的系统结构图
(1)表示层
表示层用来收集用户信息以及为用户展现内容. 利用Struts来完成表示层的处理, 其主要功能为: 为用户管理请求和响应(HttpServletRequest和HttpServletResponse), 提供ActionForm来封装与用户互动的数据元素, 提供一个控制器( Contro-ller)代理调用业务逻辑和其它上层处理, 处理从其它层掷出给一个Stru ts Action 的异常, 为显示提供一个模型, 执行用户接口验证(Validate)等。
(2)业务逻辑层
系统的核心之一, 完成整个系统的各个业务处理, 为表示层和数据持久层提供业务处理接口,由Spring来实现. Spring所提供的依赖注入(DI)和控制反转(IoC) ,使它可以轻松地完成上下两层的接口服务. 其主要功能为: 处理应用, 程序的业务逻辑和业务验证, 管理事务, 预留和其它层交互的接口, 管理业务逻辑层对象之间的依赖增加在表示层和数据持久层之间的灵活性, 使它们互不直接通讯, 从表示层中提供一个上下文( Context)给业务逻辑层获得业务服务( Business Services),管理从业务逻辑到数据持久层的实现等。
(3)数据持久层
数据持久层负责数据的持久化工作. Hibernate框架为Java 提供了对象- 关系持久化( Object-to-relat ionalPersistence)机制和查询服务, 其通过HQL的面向对象的查询语言或者使用条件表达, API来完成数据的持久化工作. 其主要功能为: 保存、更新、删除储存在数据库中的信息。BS坐席通过在页面上嵌入OCX控件,并在web页面上用javascript操作控件对象的相关方法和事件来实现话务的操作,比如常用的呼叫,转移,咨询等操作。
本系统的设计中手机客户端多处需要与服务器进行数据传输。为了减轻客户端的数据处理任务,提高响应效率,在设计时本文通过调用服务端提供的Web Services的方式获取服务端数据。Web services即Web服务,基础架构由客户端和Web服务器组成,是一种基于SOAP协议的远程调用标准。通过WebService可以将不同操作系统平台,不同语言、不同技术整合到一起。
简单对象访问协议(Simple Object Access Protocol,SOAP)是一种基于 XML 的协议,可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME),基于“通用”传输协议是 SOAP的一个优点。它还支持从消息系统到远程过程调用(Remote Procedure Call,RPC)等大量的应用程序。SOAP提供了一系列的标准,如WSRM(WS-Reliable Messaging)形式化契约确保可靠性与安全性,确保异步处理与调用;WS-Security、WS-Transactions和WS-Coordination等标准提供了上下文信息与对话状态管理。
但是在Android SDK 中并没有提供调用Web Services 的库。因此, 为了实现在Android 平台上访问Web Services 的功能需要借助第三方类库来实现。Android 平台上常用的用来访问Web Services 的软件包是ksoap2-android。ksoap2-adroid 是一个开源项目,为Android平台提供给了一个轻量级的而且高效的SOAP 库。利用ksoap2-android 在Android 平台上调用Web Services的步骤如下:
(1)设定Web Services 的命名空间和调用的方法名称,关键的代码如下:
SoapObject req = new SoapObject(nameSpace,methodName);
其中,nameSpace 参数表示的是要调用的Web Services的命名空间的一个String 类型变量, 该参数开源从Web Services的WSDL 文档中获得;methodName 参数表示要调用的Web Services 的方法名称的一个String 类型变量。
(2)设定方法的参数值(可选的,如果调用方法无参数,就可省略):
req.addProperty(“param”,“value”);
(3)生成调用方法的SOAP 请求信息。该SOAP 请求信息利用SoapSerializationEnvelope 对象描述:
SoapSerializationEnvelope ssEvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
ssEvelope.bodyOut = req;
SoapSerializationEnvelope 对象的创建需要通过SoapSerializationEnvelope 类的构造方法设置SOAP 协议的版本号。SOAP 协议的版本号是根据Web Servioces 的版本号决定的。另外,创建SoapSerializationEnvelope 对象时,需要设置SoapSerializationEnvelope 类的bodyOut 属性,属性值为第一步创建的SoapObject对象。
(4)创建HttpTransportSE 对象。利用HttpTransportSE 类的构造方法设置Web Services 的WSDL 的URL,代码如下:
HttpTransportSE trans = new HttpTransportSE(URL);
(5)使用call 方法调用Web Services,代码如下:
trans.call(null, ssEvelope);
(6)使用getResponse 方法获得Web Services 的返回结果,代码如下:
oapObject soapResult = (SoapObject)ssEvelope.getResponse();
相对而言,SOAP协议属于复杂的、重量级的协议,当前随着Web2.0的兴起,表述性状态转移(Representational State Transfer,REST)逐步成为一个流行的架构风格。REST是一种轻量级的Web Service架构风格,其实现和操作比SOAP和XML-RPC更为简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法,这种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。REST架构尤其适用于完全无状态的CRUD(Create、Read、Update、Delete,创建、读取、更新、删除)操作。
基于REST的软件体系结构风格(Software Architecture Style)称之为面向资源体系架构(Resource-oriented Architecture,ROA)。按照REST原则设计的软件、体系结构,通常被称为“REST式的”(RESTful),在本文中以下称之为RESTful Web服务,以便于和基于SOAP的Web服务区别。 这种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
代码举例:
final String SERVER_URL = "http://192.168.1.1/PosWebServices/WebUI.asmx"; // 定义需要获取的内容来源地址
URL url = new URL(SERVER_URL);
URLConnection con = url.openConnection();
//一些请求设置
con.setDoOutput(true);
con.setRequestProperty("Pragma:", "no-cache");
con.setRequestProperty("Cache-Control", "no-cache");
con.setRequestProperty("Content-Type", "text/xml");
OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream());
out.write(new String(xmlInfo.getBytes("UTF-8"))); //这里可以发参数的,字符串应该是XML格式的
out.flush();
out.close();
//取返回值
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
StringBuilder sBuilder = new StringBuilder();
String line = "";
for(line = br.readLine(); line != null; line = br.readLine()) {
sBuilder.append(line);
}
与传统Web服务相比,REST技术还具有很多优点:
(1)无需引入SOAP消息传输层,轻量级和高效率的HTTP可直接披应用。
(2)灵活性和易用性,无需建屯庞大的XML消息。只需建范一个网址字符串来访IhJ REST服务。可以轻易地在任何编程语言中实现,尤其是住JavaScript中。使用SOAP与JavaScript的Web服务非常繁琐,但使用REST与JavaScript的Web服务就非常简单。
(3)可以不使任何编程语占就能访问服务,而只要使用Web浏览器或类似如ArcGIS Explorer的地理浏览器。
(4)更好的性能和缓存支持。REST类Web服务可以利用高速缓存控制头,从而减少带宽的需求。使用REST可以改善响应时间和改进用户
体验。
(5)可扩展性和无状态性。每个请求都是独立的,一旦被调用,服务器不保留任何会话,这样就可以更具响应性。通过减少事件后通讯状态的维护工作,提高了服务器的可扩展性。
(6)易于被索引和发现。REST网址能够被如Google,Yahoo或MSN的搜索引擎索引,这使得它们更容易地被发现。不通过单独的资源发现机制就可以发现网址,例如通用描述,发现和集成机制(UDDI)。
服务器端采用J2EE,客户端采用JSP、Flex、JavaFX、AIR等可以直接调用Servlet,其他的实现技术基本上不能直接调用,但是无论是那种客户端,对于基于SOAP的Web服务或者基于RESTful Web服务务都是支持的,如AJAX的 XMLHttpRequest、Flex的HTTPService等。
以福特POC车辆救援项目为例使用平台构建相应的应用,本人主要负责该项目的主要功能开发,本章使用该平台重新构建这个应用,步骤如下:
1.配置软件环境
a.操作系统使用WindowsServer2008企业版
b.安装MyEclipse8.6以上版本
c.安装jdk1.5
d.安装Tomcat5.5
2.将平台代码导入MyEclipse
3.修改相关配置文件
a.在appconfig.xml文件修改pasap连接信息
b.在application.xml修改数据库连接信息
c.logBack.xml日志路径修改
d.在CallLisener.java修改语音控件注册路径
4.项目打包部署
a..删除eap.jar,log4j.jar等
通过以上几个步骤就快速的构建了一个车辆救援项目的应用
本节展示通过基于WebGIS的车联网平台构建的应用“福特POC车辆救援服务项目”的效果。
总界面:
EA报警信息:
经度、纬度、定位状态、定位时间(有短信通道和TP两种通道获取的数据)
用户信息:
来电、姓名、药物历、健康保险
车辆信息:
来电号码、车牌号、车型、VIN号、车辆年型、道路救援信息、款型
根据用户来电时所得到的经纬度信息去查询相应城市的psap信息
根据来电时所得到的经纬度信息在地图上显示事故发生的详细位置
事故点显示:区域信息 描述信息 道路信息 POI信息
周边查询:
本文致力于基于WebGIS车辆救援平台的研究与实现,实现了一个基于WebGIS的车辆救援系统,本系统采用了采用了商用的GIS软件进行了二次开发,能够实现对车辆的救援、定位、监控,整个系统在服务器上进行了部署测试,系统响应快,体验丰富,达到了预期目标,是一个可运行、实用的系统。
论文的主要成果如下:
(1)基于WebGIS在车辆救援平台课题研究背景和意义、国内外研究动态。
(2)研究了车联网国内外发展状况、WebGIS的特点和目前的发展。
(3)分析了基于WebGIS车辆救援平台功能需求、介绍了相关功能。
(4)为了验证相关的功能需求,实现了一个基于WebGIS的车辆救援系统,并且对展示层的相关技术进行了深入的剖析和研究。
车联网技术是高科技时代的产物,它是符合这个时代的发展的,虽然现在很多难关和技术在现阶段段都没有攻克,但是未来的城市交通正因为有了车联网的存在而更加智能化。车辆在智能交通网络指挥下迅速而有序地穿梭移动,即便是盲人,也能自如地驾驶;汽车不再“喝”油,绿色充电站遍布城市的大街小巷,人们可以随时为爱车充电。车联网技术将重新定义汽车NDA。借助无线通讯,城市内车与车之间,车与建筑物之间,以及车与城市基础设施之间实现互联互通。这就如同一个蝙蝠定位系统,在接收到局部信息后,迅速地传递到范围更广的网络中,帮助交通系统将车流分配到不同的区域内。 再加上高智能的车辆驾驶系统,车辆如深海中的鱼群快速地游动却彼此永不相撞。未来汽车所具备的3D智能导航系统,就像一个智能机器人,能与交通设施、其他车辆进行信息交流,自动引导汽车行驶,不需人驾驶。通过车联网技术实现了高效、节能、零事故、零拥堵、自动驾驶的愿景。
除此以外,人们还可以在车上进行网购,了解新车的消息,节约时间和成本,不用在为停车的事担心。当驾驶员疲倦驾驶时,通过方向盘监测驾驶者脉搏,发现驾驶员疲劳驾驶时,便启动警告系统。最初只是摇晃驾驶座位,当驾驶者仍无反应时,系统就会自动熄灭而强行停车。
车联网是一种全新的网络应用是物联网技术在智能交通领域中的应用体现,是新一代智能交通系统的核心基础。未来的车联网改变了我们的生活方式,提高我们的生活质量,也给众多领域带来福音。从车联网技术的产生到现阶段的发展,可以称得上是迅速的,也正是基于各种技术的发展。车联网这个新兴产业的发展前景固然令人向往,但是需要更多力量的帮助,包括跨产业的通力合作;需要政府的重视,在政策上给予支持和引导;需要城市规划者和基础设施专家的努力;需要汽车制造企业的长远眼光和开放心态,做好产品的研发和市场策划;需要信息技术服务企业的共同参与,建立更加扎实的信息基础设施,为信息的采集、传递、处理做好准备。
[1]车联网_什么是车联网(IOV) .电子发烧友网[引用日期2014-02-08]
[2]基于无线传感器网络的智能交通系统设计-中国科技博览-2011年第8期
[3]刘吉夫,张福平,杨雪超。 WebGIS及其应用[J]. 江西气象科技, 2003, 26(1)
[4]贺媛媛,张颖。 WebGIS 的发展现状及前景[J]. 石家庄铁路职业技术学院学报, 2008, 7(1)
[5]刘建华,杨士航.《浅谈车联网技术发展与应用前景》[J].《中国高新技术企业》,2010年第28期
最后
以上就是飘逸煎饼为你收集整理的基于WebGIS的车联网平台的研究与应用的全部内容,希望文章能够帮你解决基于WebGIS的车联网平台的研究与应用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复