本文探讨利用 J2ME 手机,实现移动设备与空间制图服务(WMS)网络应用服务集成,可以实现对J2ME手机对网络LBS、GIS 图像数据的访问与地图数据的显示。
本文探讨利用 J2ME 手机,实现移动设备与空间制图服务(WMS)网络应用服务集成,可以实现对J2ME手机对网络LBS、GIS 图像数据的访问与地图数据的显示,并在迅速实现小型的LBS、移动 GIS 核心的导航地图的显示功能。
引言
人类的日常生活行为80%以上与空间位置有关,对空间位置信息获得有着与生俱来的需要。随着社会的发展,人们的活动范围越来越大,而且越来越不确定。这种移动性和不确定性给移动通信带来市场和挑战的同时,也为空间位置服务的开展和扩大带来了无限商机。空间位置服务(LBS--Location Based Service以下简称LBS),是指通过移动通信网络,采用无线定位,结合GIS地理信息系统,为用户提供基于位置导航、查询的一种增值业务。LBS属于移动GIS中典型的应用领域之一,它涉及到地理信息服务、计算机应用互操作、无线通讯、手机等技术,属于空间信息、计算机网络协同计算交叉学术领域。目前,应用无线通讯技术最广的消费群体是手机用户,这些用户对空间位置服务有较大需求。
与此同时,伴随着计算机网络、无线通讯等技术的发展,Java 手机的应用已经在国内崭露头角。Java 手机(注:J2ME手机是指支持Java Micro Edition ,MIDP的手机,通常我们所说的"Java手机"就是"J2ME手机")一改传统手机功能固定、系统封闭的模式,为 Java 手机开发者与用户提供了一个开放的接口,应用
程序开发者和用户可以根据自己的需要开发或下载符合自身的软件。目前, J2ME (Java 2 Platform, Micro Edition)已经成为目前最流行的手机应用开发平台之一。
Java手机的发展已经为开发基于Java手机平台的空间位置服务(LBS)提供了条件。针对手机用户对空间位置服务的需求,笔者基于 Java 手机开发出了"个人导航系统"。本系统的早期版本(基于 Motorola 388手机),曾在在2002年6月中国软件协会、Motorola、Sun公司等联合举办的"全国无线 Java 应用程序大赛"中获得优秀奖。
通常来说,在CPU运算速度低、内存与存储空间有限的 Java 手机上开发 LBS与GIS 导航系统是比较困难的,一些LBS用户对导航地图信息的获取,往往是通过Java手机与相关LBS业务应用网络服务应用集成来实现的,这其中 Java 手机对网络 GIS 图像导航资源的获取与操作,是任何LBS系统的核心技术之一。笔者在自主开发的"个人导航系统"中,利用 J2ME手机(Motorola388、Motorola A760等)通过 GPRS 网络,实现了 J2ME 手机与空间 WMS (Web Map Service)服务应用集成,并获取导航地图,并完成相关操作。以下介绍 J2ME 手机对网络图像资源的访问。
2 J2ME 手机对图像对象的获取
2.1 J2ME 手机对图像的获取与显示 J2ME 手机的 MIDP 1.0标准版本,只支持 PNG 格式的图像。可以显示静态的图像和非静态的图像。静态图像是指一经创建,图像的内容就不再变化的图像。而非静态图像是指图像可以有 J2ME 绘图语句动态创建。由于 J2ME 手机的计算能力有限,在基于 J2ME 手机的移动 GIS 中,笔者采用了静态 PNG 格式的栅格图像。J2ME 手机对静态图像的创建主要有两种方式:第一种方式:直接由捆绑在应用 JAR 文件中的应用资源文件来装载和创建一个静态图像[1]。其构造方式为:
Image img=Image.createImage(String pngName);
|
其中:pngName 为 J2ME 应用程序 Jar 文件中的图像文件名。由于 J2ME 手机的存储容量有限(通常为几百 K 或几兆),而LBS、移动 GIS 空间数据量相对较大,单纯地将LBS、移动 GIS 客户端的数据,按照上述方式存储在移动客户端本地 J2ME 手机上,很难满足移动 GIS 空间数据的存储;另外,对移动客户端的数据更新也比较困难。
第二种方式:使用二进制 PNG 格式数据创建一个静态图像。
Image img=Image.createImage(byte[], int offset, int length);
|
其中:byte[] 为 PNG 格式数据数组,offset,length 分别为使用数组的偏移量与长度。
这种创建静态图像的方式比较灵活,PNG 格式数据数组可以来自 J2ME 程序的任何地方(如:网络)。笔者开发的基于 Motorola388 手机的LBS、移动GIS系统,就是利用移动客户端的 Motorola388 手机来动态地读取网络
服务器的 GIS 空间数据(当然数据格式可以是矢量或栅格格式),而且能比较方便地更新客户端的数据。
2.2 空间地图服务(Web Map Service)的 GIS 图像动态生产 空间Web服务(Spatial Web Services)是关于空间信息应用之间的互操作的研究领域。伴随着计算机软硬件技术的发展,空间 Web 服务也发展很快,相应的标准化工作也在迅速展开。空间信息目前 OGC 已经制定或建议的空间 Web 服务主要有:
- Web Map Service,
- Web Registry Service,
- Web Feature Service,
- Web Coverage Service,
- Styled Layer Descriptor for WMS,
- GeoCoder Service,
- Transaction WFS 等等,
其中:ISO/TC211已经采纳与空间Web相关的标准有:Web Map Service (ISO 19128)标准、以及ISO 19136 - Geography Markup Language(地理信息标记语言GML)。
图 1 空间 Web 服务体系结构 空间 Web 服务与标准的 Web 服务有着类似的体系结构,但是空间 Web 服务与标准的Web 服务也有一些区别:如:空间 Web 服务中消息的传递可能直接使用 XML 协议而不使用 SOAP 协议。鉴于移动用户最关心的是空间信息相关的地图信息,而 WMS 服务已经被ISO/TC211 采纳,以下主要围绕移动设备(如:Java 手机)与空间 Web 服务 WMS 之间的互操作来研究。
地图服务器 Web Map Service WMS 是一种 Web 服务,它提供了由地理空间动态产生用户所需要的空间信息的服务。用户可以获得适合自己显示的栅格(如:PNG, GIF or JPEG)、栅格数据(如:SVG),或 Web 图像元文件 Web Computer Graphics Metafile (WebCGM)等数据格式。OGC 定义了地图服务器 Web Map Service WM 的三种操作,GetCapabilities,GetMap,GetFeatureInfo。其中与导航密切相关的是 GetMap 操作,GetMap 返回一幅根据客户端请求参数动态生成的地图。
如:
http://localhost:8080/wmsserver111/servlet/wms?VERSION=1.1.1
&SRS=epsg:4267&REQUEST=GetMap&LAYERS=Layers/World/Countries&STYLES=&BBOX=
-180,-180,180,180&WIDTH=800&HEIGHT=600&FORMAT=image/gif 将返回一幅地图给客户端:
图 2 WMS GetMap 服务响应