周兆濱、王琴、顧 亮、張永軍
(1. 北京機械工業(yè)自動化研究所,北京 100120;2. 中國國際工程咨詢公司,北京 100048)
隨著網(wǎng)絡技術與GIS技術的不斷發(fā)展,兩者的結合日趨緊密,WebGIS體系結構也在不斷地發(fā)生變化,由傳統(tǒng)的C/S體系到B/S體系,再到目前的RIA體系。每一次發(fā)展都給GIS注入了新的活力。目前流行的RIA技術包括Silverlight、Flex、JavaFx等,但是無論使用哪一種RIA技術,最終都需要ArcGIS REST來提供服務。
本文將詳細介紹使用REST構建可靠、安全、高性能的WebGIS服務。
REST,即表述性狀態(tài)轉移,是Roy Fielding在其2000年的論文中首次提出的一種軟件架構。具體地說,REST用來定義一個Web服務應用程序編程接口(API),通過HTTP來進行資源管理,例如CRUD(創(chuàng)建、讀取、更新和刪除)。
ArcGIS REST中,CRUD意味著創(chuàng)建/讀取/更新/刪除地圖服務的子組件,也就是一個層。一個功能齊全的REST地圖服務可以讓使用者建立層,讀取層,更新層,或刪除層。REST類型的Web服務遵循以下基本原則:
設定地址資源:可以使用一個網(wǎng)址訪問任何資源;
通用接口:標準的Put,Get,Post和Delete操作都需要得到請求才能完成;
無狀態(tài)消息:每個請求都是獨立的,每個請求都必須包括自己的參數(shù),來完成操作;
表達:請求結果的渲染可以通過多個形式實現(xiàn),例如地圖和影像,XML和JSON。
ArcGIS Server 9.3中引入了創(chuàng)新的和強大的基于REST的Web服務架構。面向ArcGIS Server的REST API是對SOAP API的增強和改進。
ArcGIS Server發(fā)布的GIS服務都可以通過各級端點或者統(tǒng)一資源定位器(URL)訪問針對REST API開放的所有資源和操作。
創(chuàng)建和發(fā)布REST服務包括以下幾個部分的內容:
1)服務支持的類型——根據(jù)需要建立ArcGIS Server服務類型。服務類型包括地圖服務、地理編碼服務、地理處理服務、幾何服務、圖片服務、地球模型服務(Globe服務)和網(wǎng)絡分析服務。
2)創(chuàng)建GIS資源——根據(jù)服務類型,創(chuàng)建地理信息系統(tǒng)資源。不同類型的服務需要不同類型的地理信息系統(tǒng)資源,而這些資源分別可以在不同的ArcGIS模塊中創(chuàng)建。
3)發(fā)布資源與服務——使用REST API將資源發(fā)布為Web 服務,這樣,這些服務就可以被Internet或Intranet客戶端應用程序遠程調用。
4)瀏覽服務——在ArcGIS Server的服務瀏覽器中瀏覽服務和服務目錄。服務目錄格式是基于ArcGIS Server REST API的HTML。通過服務瀏覽器,可以瀏覽服務器內容,查看可用的GIS Web服務,獲取對開發(fā)的有用信息,可以測試用戶自定義的服務。
5)管理服務——通過ArcCatalog,ArcGISServer管理器,或者通過REST API管理控制臺來停止,啟動或暫停這些服務,更新緩存,并且啟用/禁用服務瀏覽器。
從根本上說,REST API就是由網(wǎng)址組成的,所以使用REST API的過程分為以下四個步驟。
1)構建請求網(wǎng)址;
2)發(fā)送請求到ArcGIS Server;
3)接收服務器的響應;
4)解析和使用服務器響應。
可以基于多種客戶端訪問REST服務,如使用Flex、Silverlight、python、javascript、Asp.Net等客戶端訪問REST建立好的各種服務。例如,使用ArcGIS Server Flex API可以實現(xiàn):
1)互動顯示用戶數(shù)據(jù)的地圖;
2)執(zhí)行服務器上的一個地理信息系統(tǒng)模型,并顯示模型結果;
3)在ArcGIS Online基礎地圖上顯示用戶數(shù)據(jù);
4)查找用戶地理信息系統(tǒng)數(shù)據(jù)的要素或屬性,顯示查找結果;
5)搜索地址,并顯示搜索結果;
6)創(chuàng)建Mashups(整合來自多個網(wǎng)站源的信息)。
使用ArcGIS Server Flex API訪問ESRI網(wǎng)站上REST服務的效果。
肉牛在不同年齡階段中飼料利用率也存在比較大的差異性,如犢牛期的肉牛生長發(fā)育速度比較快,對于各種營養(yǎng)物質也有非常大的需求量,其飼料利用率相對比較高。但是隨著肉牛年齡的不斷增長,導致肉牛采食量不斷增加,體內脂肪沉積量也得到一定程度的提升,使飼料利用率開始降低,這時攝入的營養(yǎng)物質多用來維持肉牛的生存需求。因此還需要結合不同生長時期進行飼料的合理選擇,以提升肉牛的飼料利用率。
下圖將不同地區(qū)的人口年齡分布使用餅狀圖表示出來,其使用的REST服務地址為:http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/0
ArcGIS網(wǎng)絡管理器中基于角色的安全機制可以確保Web服務和網(wǎng)絡應用以及所有提供服務的安全。
REST API安全機制與ArcGIS Server中安全規(guī)則相互配合。通過ArcGIS管理器產(chǎn)生令
牌或者登錄到服務,可以使所有服務具備安全機制。
4.2.1 緩存
緩存是改善REST地圖性能的關鍵技術。實時創(chuàng)建地圖是最耗時的,所以從地圖高速緩存中找回地圖將大大提高性能。最好的方法就是建立一個緩存地圖。如果存儲空間不受限制,高速緩存是最佳的選擇方案。
4.2.2 響應格式
REST服務應對每個請求能夠返回四種不同的響應格式:HTML格式,JSON,圖片或KMZ(壓縮版本的KML,或鎖孔標記語言)。默認情況下,響應格式是HTML和嵌入圖像的HTML。
四個響應格式中,圖片和JSON具有最好的綜合效果。圖片提供了最快的響應速度,而JSON不僅返回元數(shù)據(jù),而且提供鏈接來下載圖片。JSON比KMZ更加簡單并且節(jié)省帶寬。
另外,還可以通過改變壓縮和響應格式的設置來提高REST服務的性能,所有性能相關的設置可以通過修改rest.config配置文件來實現(xiàn)。
REST服務相比以前的SOAP服務具有很明顯的優(yōu)勢。通過ArcGIS REST,能夠建立可靠、安全、高性能的GIS服務。為基于ArcGIS REST服務的Flex、Silverlight等RIA應用提供了良好的服務基礎。將RIA技術與REST服務相結合,可實現(xiàn)完美的WebGIS。
[1] ESRI中國有限公司.ArcGIS9.3新特性,2009.
[2] ESRI中國有限公司.ArcGIS Server9.3REST基礎教程,2009.
[3] 劉光,唐大仕.Web GIS開發(fā):ArcGIS Server與.NET[M].清華大學出版社,2009.
[4] 汪旻琦.基于ArcGIS Server的企業(yè)級GIS系統(tǒng)開發(fā)與應用,2007.