本文提出应用J2ME及SVG构造手机LBS系统,系统融合GIS与无线通信、J2ME及SVG,以J2ME为开发平台,结合空间数据以SVG为地图显示介质,在手机中实现方便、快捷、精确的移动位置服务。
引言
移动位置服务(LBS--Location Based Service)又称定位服务,是通过通信网络获取移动终端用户的位置信息(经纬度坐标),在电子地图平台的支持下,为用户提供相应服务的一种增值业务。在移动通信中,用户(移动台)的位置信息不仅对整个移动通信网络来说是极其重要的,而且对用户来说也非常重要,这要求能为移动用户提供有关的位置服务。
本文针对Java手机,以J2ME为开发平台,以SVG作为矢量显示介质,讨论与研究LBS软件体系结构、手机终端用户操作界面的设计与实现;基于SVG的地图的解析与表现,地图的移动等操作的实现;手机与网络间LBS应用协议的设计与实现。本系统在用户界面设计、及矢量数据的表示与更新等方面有所创新,并在实验中取得了初步的成功。
1 关键技术
1.1 J2ME
J2ME是一种以广泛的消费性产品为目标的高度优化的Java运行时环境,其提供了创建运行在小型计算设备上的企业级Java应用程序的工具可移植性1,具有如下优点:
-客户机应用程序能很容易地被移植到其他遵循J2ME或MIDP并且符合CLDC规范的设备上。
-更低的网络资源消耗与服务器负载。J2ME客户机应用程序能在断开连接模式下工作并保持数据的同步。
J2ME使用配置和简表定制Java运行时环境(JRE)。作为一个完整的JRE,J2ME由配置和简表组成,配置决定了使用的JVM,而简表通过添加特定于域的类来定义应用程序。
1.2 XML
XML,可扩展标记语言(Extensible Markup Language),是一种可以用来创建自定义标记的标记语言。XML用于组织、存储和发送信息,其可以统一数据格式,方便地实现不同应用之间的数据交换2。同时,XML还可以方便地表示结构化的数据,XML的标记不但可以归类数据,还可以再利用标记属性来描述数据,并且用标记的结构表示数据的层次关系。基于XML的LBS通信协议,可以统一数据格式,便于LBS应用的开发、定制和扩充,实现不同系统与应用之间的数据交换。XML是一种跨平台的,与软件、硬件无关的,处理信息的工具。基于XML的LBS协议可以统一数据格式,实现不同系统与应用之间的数据交换,而且便于应用服务内容的更新。
1.3 SVG
SVG是一种基于XML的开放的矢量图形描述语言。它是一种专门为网络而设计的基于文本的图像格式。它直接继承了XML的特性,简化异质系统间的信息交流。SVG的功能包括嵌套变换、路径剪裁、透明度处理、滤镜效果以及其他扩展,同时,SVG支持动画和交互,也支持完整的XML的DOM接口。利用SVG的缩放性,图形就可以无失真调整大小。W3C针对众多的移动终端设备,专门开发了Mobile SVG以适应便携设备上对图形的各种需求。根据移动设备处理能力的不同,Mobile SVG又细分为面向手机设备的Mobile Tiny规范和面向掌上电脑等设备的Mobile Basic规范。SVG Tiny和SVG Basic都支持标准SVG中定义的基本图形(basic shape)3:矩形(rectangle),椭圆形(ellipse),线(line),圆形(circle),折线(poly line),多边形(polygon)。基于SVG的矢量地图便于网络传输、异构数据间的融合、图形的变化与更新。
2 移动位置服务系统的设计与实现
2. 1 软件体系统结构
LBS系统是一个集成系统,系统设计采用多层分布式计算模式,系统主要由客户端、Web服务器、LBS服务器、数据库系统等构成。考虑到系统的安全性、扩展性和维护性,在J2EE平台下开发服务器端程序,在J2ME平台下开发终端应用程序。终端设计采用分层设计模式,分为三层:网络层、核心层、应用层。网络层主要负责与WebServer之间的连接与通信。核心层负责接收数据的解析与发送数据的打包,地图数据的处理,连接网络层与应用层。应用层负责接收用户的请求,对接收的数据正确表现,让用户方便地操纵地图,是系统与用户交互的接口。Web服务器主要功能是用于处理用户的请求与响应,Web Server分为三个模块:Servlet模块、解析器模块、JavaBeans组件模块。Servlet模块负责与手机用户通信,接收用户的请求,发送服务器响应结果,并与解析器模块交换信息。解析器模块负责解析Servlet接收到的用户请求数据,并将返回信息按协议规范打包送给Servlet模块。组件模块主要负责与GMLC之间的通信,用户身份的验证,请求的分发,SVG地图数据的生成与转换,与LBS服务器数据的交换。LBS Server是指能够为网络客户提供各种地理服务(包括数据存取、地图显示、空间分析、模型管理、目录检索等)的GIS系统。LBS Server主要由数据发布平台、地图引擎及数据库(空间数据库、属性数据库)构成。LBS Server响应用户的数据操作请求,完成存取空间数据及相关属性数据;按用户的要求,取出满足条件的空间信息,组织成地图格式,送给用户。LBS系统软件体系结构如下图1。
2.2 系统的主要功能
根据用户获取信息的方式将LBS应用分为Pull和Push两种模式。Pull模式是用户主动发起服务请求,系统响应并提供服务,如自身处位置的查询等。Push模式则无需用户请求,而由系统主动向用户提供服务,发布信息,如交通状况信息的广播等。本系统现在主要支持Pull模式,移动用户根据实际的需要主动发出服务请求,服务器解析用户的请求并返回响应信息。设计时留出支持Push编程接口,便于今后扩充系统的功能。根据3GPP及3GPP2与移动位置服务相关规范,以及人们对位置服务的需求,系统设计的基本功能如下:紧急呼叫、位置查询、导航服务、黄页服务、友好查询、系统设置、文件下载、帮助。
2.3 数据的解析与打包
XML解析通常有两种方式:基于对象的(DOM)和基于事件的(SAX)。本系统采用的是NanoXML,它是一种非确认(non-validating)、单步(single-step)基于DOM的解析器。NanoXML解析整个XML文档,并把它转换成一棵元素树,XML文档中的每一个元素对应着DOM树中的一个结点。从解析生成的DOM树根节点出发,采用深度优先的树周游算,遍历访问DOM树。
基于XML的LBS通信协议的打包是在移动终端及服务器端都要进行的操作,是协议解析的逆过程。在移动终端根据用户选择的操作将LBS请求信息写入请示对象中,再按XML及LBS应用通信协议打包成XML数据流发送到服务器。在服务器端,根据服务的响应信息将响应信息写入响应对象中,再按协议书打包成XML数据流,发送给移动终端。
2.4 基于SVG的地图处理
基于SVG的地图经解析后,取出相关的属性数据将这些数据组织存储起来,避免操作地图时重复解析。应用Flyweight设计模式实现对象的共享,降低空间资源利用率。在本系统中主要支持Tiny SVG中的直线、折线、多边形、矩形、圆形、文本,在设计时SVG的每一类元素用一个类来表示,并且都继承Drawable这个接口。Drawable定义了每类图形平移(pan)、缩放(zoom)、旋转(rotation)与显示(draw)四种方法,在具体类中实现这些方法。利用低层用户输入组件 -- -- 游戏操作杆生成用户事件,当按键为UP、DOWN、LEFT、RIGHT等时实现对地图的漫游、放大、缩小操作。在J2ME中不支持多边形,在设计时将多边形分割成若干个不相交的内三角形,一个多边形由若干个三角形对象构成,一个三角形由三个点对象来表示。在SVG中,颜色是SVG图形的基本属性,由CColor类来负责处理颜色的解析与转换。SVG处理主要类如下图2:
2.5 基于XML的LBS通信协议的设计
移动位置服务系统中存在着不同的服务提供商,不同终端设备,不同的网络平台,而且LBS应用范围在不断的扩大。基于XML的LBS协议可以统一数据格式,实现不同系统与应用之间的数据交换,而且便于应用服务内容的更新,不受类似参数帧的模式限制。使用XML描述协议,还可以方便地使用已有的XML解析器,从而极大地方便了协议的扩展和系统对协议的集成。基于XML的LBS协议包括正常的XML协议头部以及自定义的LBS协议体部分。LBS协议分为LBS请求协议与LBS响应协议。全部的请求都应包括在一个LBSREQ元素中,而响应则包括在LBSANS中。XML文档利用DTD (Document Type Definition)来定义统一的协议数据交换格式,DTD给出标签文档元素及其层次结构声明。通过创建DTD,能够正式而精确地定义LBS通信协议词汇表。由于应用及资源的限制,没有完全涉及所有的XML DTD定义特征,且采用的解析器NanoXML为一种非确认解析器,设计协议验证器来验证协议的有效性。
2.6 无线网络连接的实现
终端与服务器间通过HTTP协议进行网络连接,发送用户请求与接收数据。J2ME支持的所有连接都通过调用MIDP中Connector类中的方法open来创建,代码如下:Connection connection=Connector. Open(url)4。通过这个连接类,使用HttpConnection. POST方式来实现手机与Web服务器进行TCP/IP的HTTP通讯。Web服务器中相应的Servlet将调用doPost()方法处理请求,返回响应,从而把业务逻辑的处理交给服务器端,达到瘦客户端的设计目标。建好HTTP连接以后,就可以方便地操作数据流,进行数据读写。手机终端准确地提交用户请求参数、创建和查询信息服务请求,服务器返回响应信息。
2.7 终端数据持久性的设计
持久性是指在MIDlet的操作过程中,直到MIDlet不运行期间,信息的保持性。J2ME记录管理系统(RMS)允许数据流被储存并在一个记录基础上访问数据。RMS是一个文件系统和数据库管理系统组成的系统,可以使用类似于数据库表中组织数据的行列方式来存储数据。在读写RMS数据时要特别注意字符的编码,尤其是汉字。Java编程语言默认的编码方式是UNICODE,而通常使用的数据库及文件的汉字都是基于GB2312编码的,在手机内字符基本上采用UTF-8编码,在RMS中汉字以UTF-8编码存储,读取汉字时需要进行UTF-8编码的转换。
设计两个流来读写记录,一个字节数组流,一个用来处理字节数组流的数据流。写入记录时把数据写到缓冲区中,然后把缓冲区中的数据写到流中,再把数据流转换为一个字节数组,再把字节数组写入到记录存储器中。
2.8 终端用户界面的设计与实现
在用户界面设计上采用MIDP高层用户界面的List与Form实现菜单选择、用户输入等操作界面,使用MIDP低层用户界面Canvas实现地图的显示与操纵。为MIDlet所作的用户界面设计取决于小设备的限制,每个MIDlet有而且仅有一个Display类的实例,一次只能显示一个界面,屏幕间的切换导航比较困难。每个在屏幕上显示的MIDlet必须获得它的Display实例的引用,并使用这个实例在屏幕上显示Displayable类的实例。经过分析发现手机屏幕导航有着先进后出的特点,而且当前屏幕可有多个子屏选项,屏幕映射表与树型结构非常相似。因此在设计中采用树型结构来表示屏幕导航模型,树型结构中保存当前结点(屏幕)的父亲结点的导航信息,以便返回父结点。
3 实验与测试
利用WTK21集成环境手机模拟器作为终端,Tomcat4作为Web服务器组件的容器,搭建测试网络。用户发出请求后,手机对请求按协议打包,发送给Web服务器。Servlet接收数据后解析并根据解析结果将测试地图打包发给手机,手机终端再按照协议解析并处理。测试结果表明平台能够对LBS通信协议进行正确的打包与解析,正确表现地图数据与信息。SVG地图能进行快速的移动、放大缩小与旋转操作,用户操作方便。在实验测试中,其运行性能良好,能满足一般移动用户的需求。
总结
本文所述的3G手机移动位置服务应用平台,利用了先进的计算机、通信及GIS技术,实现LBS移动用户图形化的位置信息的显示。本平台具有如下优点:开发工具采用J2ME,一次编写到处运行;以SVG为主要地图表现形式,实现地图数据快速下载与更新,便捷地实现地图的平移、缩放与旋转,易于异构数据源间的融合;采用基于XML的通信应用协议,易于扩充,便于不同平台间交互信息;具有特色的树型导航模型,简捷方便的用户操作界面。
由于3G网络在我国还处于测试阶段,本平台的试验没有在真正的3G网络中测试,一些实际中的问题有待在实际网络加以改进,另外平台在测试时只使用了功能简单的基于SVG的GIS系统。随着Java技术、GIS及3G的不断发展,可设计并开发出健壮、高效的企业级无线应用程序,帮助企业提升经济效益。
参考文献
1 James Keogh著,潘颖,王磊译.J2ME开发大全M.北京:清华大学出版社,2004
2 W3C. Extensible Markup Language (XML). http://www.w3.org/XML/,2004-08-27
3 吴高峰. 基于XML的可升级矢量图像(SVG)浅析. http://www-900.ibm.com/developerWorks/cn/xml,2003
4 肖炜,郭晓刚译.J2ME无线设备程序设计(第二版)M.北京:电子工业出版社,2004
5 Mobile Location Workshop, A Location-based Ser vices Platform Fkor Inter-model Mobility SupportZ.2002
关于作者
帅小应(1973--),男,安徽望江县人,池州师专计算机系讲师,硕士,主要研究方向为网络通讯。
(THE END)