周兆滨、王琴、顾 亮、张永军
(1. 北京机械工业自动化研究所,北京 100120;2. 中国国际工程咨询公司,北京 100048)
随着网络技术与GIS技术的不断发展,两者的结合日趋紧密,WebGIS体系结构也在不断地发生变化,由传统的C/S体系到B/S体系,再到目前的RIA体系。每一次发展都给GIS注入了新的活力。目前流行的RIA技术包括Silverlight、Flex、JavaFx等,但是无论使用哪一种RIA技术,最终都需要ArcGIS REST来提供服务。
本文将详细介绍使用REST构建可靠、安全、高性能的WebGIS服务。
REST,即表述性状态转移,是Roy Fielding在其2000年的论文中首次提出的一种软件架构。具体地说,REST用来定义一个Web服务应用程序编程接口(API),通过HTTP来进行资源管理,例如CRUD(创建、读取、更新和删除)。
ArcGIS REST中,CRUD意味着创建/读取/更新/删除地图服务的子组件,也就是一个层。一个功能齐全的REST地图服务可以让使用者建立层,读取层,更新层,或删除层。REST类型的Web服务遵循以下基本原则:
设定地址资源:可以使用一个网址访问任何资源;
通用接口:标准的Put,Get,Post和Delete操作都需要得到请求才能完成;
无状态消息:每个请求都是独立的,每个请求都必须包括自己的参数,来完成操作;
表达:请求结果的渲染可以通过多个形式实现,例如地图和影像,XML和JSON。
ArcGIS Server 9.3中引入了创新的和强大的基于REST的Web服务架构。面向ArcGIS Server的REST API是对SOAP API的增强和改进。
ArcGIS Server发布的GIS服务都可以通过各级端点或者统一资源定位器(URL)访问针对REST API开放的所有资源和操作。
创建和发布REST服务包括以下几个部分的内容:
1)服务支持的类型——根据需要建立ArcGIS Server服务类型。服务类型包括地图服务、地理编码服务、地理处理服务、几何服务、图片服务、地球模型服务(Globe服务)和网络分析服务。
2)创建GIS资源——根据服务类型,创建地理信息系统资源。不同类型的服务需要不同类型的地理信息系统资源,而这些资源分别可以在不同的ArcGIS模块中创建。
3)发布资源与服务——使用REST API将资源发布为Web 服务,这样,这些服务就可以被Internet或Intranet客户端应用程序远程调用。
4)浏览服务——在ArcGIS Server的服务浏览器中浏览服务和服务目录。服务目录格式是基于ArcGIS Server REST API的HTML。通过服务浏览器,可以浏览服务器内容,查看可用的GIS Web服务,获取对开发的有用信息,可以测试用户自定义的服务。
5)管理服务——通过ArcCatalog,ArcGISServer管理器,或者通过REST API管理控制台来停止,启动或暂停这些服务,更新缓存,并且启用/禁用服务浏览器。
从根本上说,REST API就是由网址组成的,所以使用REST API的过程分为以下四个步骤。
1)构建请求网址;
2)发送请求到ArcGIS Server;
3)接收服务器的响应;
4)解析和使用服务器响应。
可以基于多种客户端访问REST服务,如使用Flex、Silverlight、python、javascript、Asp.Net等客户端访问REST建立好的各种服务。例如,使用ArcGIS Server Flex API可以实现:
1)互动显示用户数据的地图;
2)执行服务器上的一个地理信息系统模型,并显示模型结果;
3)在ArcGIS Online基础地图上显示用户数据;
4)查找用户地理信息系统数据的要素或属性,显示查找结果;
5)搜索地址,并显示搜索结果;
6)创建Mashups(整合来自多个网站源的信息)。
使用ArcGIS Server Flex API访问ESRI网站上REST服务的效果。
肉牛在不同年龄阶段中饲料利用率也存在比较大的差异性,如犊牛期的肉牛生长发育速度比较快,对于各种营养物质也有非常大的需求量,其饲料利用率相对比较高。但是随着肉牛年龄的不断增长,导致肉牛采食量不断增加,体内脂肪沉积量也得到一定程度的提升,使饲料利用率开始降低,这时摄入的营养物质多用来维持肉牛的生存需求。因此还需要结合不同生长时期进行饲料的合理选择,以提升肉牛的饲料利用率。
下图将不同地区的人口年龄分布使用饼状图表示出来,其使用的REST服务地址为:http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/0
ArcGIS网络管理器中基于角色的安全机制可以确保Web服务和网络应用以及所有提供服务的安全。
REST API安全机制与ArcGIS Server中安全规则相互配合。通过ArcGIS管理器产生令
牌或者登录到服务,可以使所有服务具备安全机制。
4.2.1 缓存
缓存是改善REST地图性能的关键技术。实时创建地图是最耗时的,所以从地图高速缓存中找回地图将大大提高性能。最好的方法就是建立一个缓存地图。如果存储空间不受限制,高速缓存是最佳的选择方案。
4.2.2 响应格式
REST服务应对每个请求能够返回四种不同的响应格式:HTML格式,JSON,图片或KMZ(压缩版本的KML,或锁孔标记语言)。默认情况下,响应格式是HTML和嵌入图像的HTML。
四个响应格式中,图片和JSON具有最好的综合效果。图片提供了最快的响应速度,而JSON不仅返回元数据,而且提供链接来下载图片。JSON比KMZ更加简单并且节省带宽。
另外,还可以通过改变压缩和响应格式的设置来提高REST服务的性能,所有性能相关的设置可以通过修改rest.config配置文件来实现。
REST服务相比以前的SOAP服务具有很明显的优势。通过ArcGIS REST,能够建立可靠、安全、高性能的GIS服务。为基于ArcGIS REST服务的Flex、Silverlight等RIA应用提供了良好的服务基础。将RIA技术与REST服务相结合,可实现完美的WebGIS。
[1] ESRI中国有限公司.ArcGIS9.3新特性,2009.
[2] ESRI中国有限公司.ArcGIS Server9.3REST基础教程,2009.
[3] 刘光,唐大仕.Web GIS开发:ArcGIS Server与.NET[M].清华大学出版社,2009.
[4] 汪旻琦.基于ArcGIS Server的企业级GIS系统开发与应用,2007.