感謝一路走來默默支持和陪伴的你~~~javascript
-------------------歡迎來訪,拒絕轉載--------------------html
1、Rest API基礎java
ArcGIS 平臺提供了豐富的REST風格的web服務,以ArcGIS REST API方式對外提供,咱們經過ArcGISREST API能夠訪問地圖服務、要素服務、影像服務、地理處理服務等多種類型的Web服務,這些服務能夠來自Portal、online或是Arcgis server。web
那麼如何使用這些ArcGIS REST API呢?咱們可使用經常使用的編程語言如javascript等構造http請求,而後解析以json格式返回。簡單講一下使用ArcGIS Server REST 風格調用web服務的過程編程
(1)構建請求urljson
首先肯定端點:包含服務類型的明確的url地址。api
而後肯定操做:不一樣的web服務支持的操做類型不一樣,如:地圖服務能夠查找、識別、生成kml等。異步
其次肯定參數:不一樣的操做須要不一樣的參數,入請求地圖服務須要地圖範圍參數。編程語言
最後肯定輸出的格式:json、kmz、html等,工具
綜上所構建的url格式爲:
http://{ArcGISServer name}/ArcGIS/rest/services/{folder name}/{services name}/{service type}/{option}?{parameter2}={somevalues}&{parameter1}={some values}
(2)提交url請求到ArcGIS Server
(3)接收ArcGIS Server的響應
ArcGISServer處理請求並返回響應到客戶端,這個過程分爲同步和異步。
Execute task:當同步執行的使用此操做,執行的特色是用戶須要等待結果被返回適用於短事務處理任務。
Submit job:適用於異步執行。當被異步提交時,用戶能夠作其餘的事情無須等待結果被加載完成,適用於長事務處理任務。
(4)解析和使用響應
ArcGISServer rest web服務的響應能夠是多種格式的,如json、kmz、圖片、html等,客戶端能夠判斷響應成功仍是失敗。
一般,ArcGISDesktop、ArcGISpro等客戶端與ArcGIS REST API進行交互,其交互的細節沒必要關心,可是都是ArcGIS REST API在默默的工做。以上是rest與server交互原理,然而使用ArcGIS javascript API 會集成上述四個步驟,不須要本身完成。
--------------------這是一條華麗麗的分割線---------------------
以GP服務爲例:
1. 首先ArcGISREST API能夠什麼:
(1).列舉了可用額工具及輸入輸出參數的屬性。
(2).同步執行。
(3).異步提交。
(4).獲取運行時的詳細工做信息,包括運行的狀態。
(5).使用地圖服務將運行的結果進行顯示。
(6).經過客戶端對返回的結果進行進一步的處理。
-----------------------這是一條華麗麗的分割線-----------------------
以一個已發佈並運行成功的gp服務爲例:關於該GP服務的製做和發佈在往期博客有詳解:點我! 再點我!
1.注意地址欄上構建的rest服務地址,回顧上述理論,會更加有心的體會。
2.查看發佈的服務目錄,瞭解每個參數的類型、參數的名稱。
3.該服務在發佈時勾選了異步執行,因此會有submit Job操做,點擊submit job執行。
4.在第一欄中要求輸入excel,想必這是每個人在執行過程當中最爲頭疼的事情,該怎樣輸入呢?無從下手。
這時,就須要注意參數的類型,gp模型的類型與gp服務的類型存在對應關係,同時GP服務的類型又與ArcGIS javascript API中規定的參數類型存在對應關係,只有準確的找準參數,才能夠對這個參數按照api中規定的格式進行構造,參數對應表以下:
很顯然,GPDataFile對應javascript中的<DataFile>,這時須要查找API中的DataFile參數的構建方法。具體在javascript調用GP服務的方法後面會慢慢整理,再也不多述。
5.執行ing,此時你能夠觀察服務的url,生成的結果在arcgis server所管理的服務目錄下,生成了一個惟一文件名的文件夾,其結果將會臨時存放在那裏。
6.執行成功,會看到esriJobSuccessed!此時,你應該多開森~~
7.點擊生成的結果進行預覽,應該就是想要的效果了,這個結果能夠經過Arcgis javascript API添加到地圖上。
-----------------這是一條華麗麗的分割線------------------
本文的參考資料:
http://resources.arcgis.com/EN/HELP/ARCGIS-REST-API/index.html#/Resources_and_operations/02r3000000t9000000/
https://developers.arcgis.com/javascript/jsapi/parametervalue-amd.html
----------------------歡迎來訪,拒絕轉載----------------------