1、现实增强的概念
现实增强(AugmentedReality,简称AR),是在虚拟现实基础上发展起来的新技术。AR通过计算机系统提供的信息增加用户对现实世界感知,将虚拟信息应用到真实世界,并将计算机生成的虚拟物体、场景或系统提示信息叠加到真实场景中,从而实现对现实的丰富和增强。
AR技术具有三个特点:
①虚拟与现实相结合;
②即时互动;
③三维场景;
AR技术在初期并不被大众熟知。移动智能设备的快速发展和普及,使AR技术走出实验室,并逐渐走入大众视野。现在的移动智能设备具备足够的性能,支持AR所需要的计算能力,本文介绍的内容就是基于一款手机AR应用实现的。目前,AR技术在很多行业都得到了应用,比如医疗、景观、军事、游戏、机械维修等等。而GIS行业,AR与GIS的结合还处于起步阶段。
2、增强现实应用Layar
Layar(http://www.layar.com)是一款手机上的AR应用,支持Android和IOS。Layar允许内容提供者(Content Provider,CP)发布图层(Layer),Layar可以加载指定的Layer,获取CP提供的信息。
CP在Layar网站注册账户,创建Layer。Layar提供了一套Layer API标准,CP要实现Layer,必须按照这个标准规定的数据格式接收参数、返回数据。
Layar通过移动设备的GPS获取位置信息,摄像头获取当前场景,传感器获得方位信息。有了这些信息,Layar就可以向CP服务器的某一图层(Layer)请求数据。获得数据后,Layar通过现实增强技术把这些数据在三维场景里面渲染出来。
Layar的数据访问流程如下图所示:
① 手机上的Layar应用打开指定图层,获取GPS信息,向Layar服务器发送请求;
② Layar服务器根据图层(Layer)信息,向对应的CP服务器发送请求;
③ CP服务器查询符合条件的数据,按照Layar API标准格式打包数据,并返回给Layar服务器;
④ Layar服务器把数据返回给Layar应用,Layar在手机端对数据进行显示。
3、用Layar显示ArcGIS数据
3.1、实现原理
用Layar来显示ArcGIS数据,其实很简单。只需要把提供服务的ArcGIS Server添加到第2节中的数据访问流程图中,如下图所示。CP Layers不直接提供数据,而是①向ArcGIS Server的REST服务发送请求,②得到数据后按照Layar API标准的格式打包数据,然后返回给Layar服务器。在这个过程中,CP服务器相当于Adapter(适配器)的角色,将ArcGIS Server REST服务提供的数据,转换成Layar格式的数据。
Esri发布了 GeoServices RESTSpecification(http://www.esri.com/industries/landing-pages/geoservices/geoservices.html),参考这一标准,可以编写代码向ArcGIS REST Service发送请求、解析返回的结果。其实,ArcGIS的各种客户端API(Web APIs如Flex、Silverlight、JavaScript,Mobile APIs如Android、IOS、Windows Phone,Runtime APIs)都是参照这个标准实现的。
3.2、登录Layar
首先要在Layar网站注册账户,此处省略注册过程。注册成功后登陆,登录页面如下图所示。
登陆成功页面如下图所示。
点击页面上方的My Layers,进入Layers页面,如下图所示。为配合用户大会demo演示,已经建了一个名为Esri ChinaUC 2012 (uc2012layer)的图层。
3.3、创建Layer
点击上图中“Createa new layer”按钮来创建一个新的Layer,在创建Layer窗口中填写Layer信息,如下图所示。需要说明的是,APIendpoint URL必须是一个外网可访问的地址,也就是CPServer上的一个地址,这个地址是Layer的具体实现,Layar Server会访问这个地址来获取数据。
Layer创建成功后,会打开该Layer的信息页面,如下图所示。在信息页面下还可以对Layer的诸多信息进行设置,比如Layer的图标、类型、URL等等。大家可以做些尝试,在此不再赘述。
需要说明的是,此处创建的Layer只是概念上的Layer,还不能提供数据,因为CP端还没有实现。下一小节将介绍如何实现CP服务端的内容。
在现实增强应用Layar中显示ArcGIS数据(Ⅱ) http://blog.csdn.net/arcgis_mobile/article/details/8063735