日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ArcGIS客户端开发学习笔记(五)——ArcGIS REST API基础

發布時間:2025/5/22 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ArcGIS客户端开发学习笔记(五)——ArcGIS REST API基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  REST:表述性狀態轉移(REpresentational State Transfer)的簡稱,它定義了應該如何正確地使用Web標準。

  目前我的水平還沒到能夠深入理解REST的地步,就連略懂皮毛都沒達到。只是看過《深入淺出REST》,也談不上看懂,下面把這文章里面總結的REST的五個關鍵原則列出來。

  1、為所有“事物”定義ID:使用URI標識所有值得標識的事物,特別是應用中提供的所有“高級”資源,無論這些資源代表單一數據項、數據項集合、虛擬亦或實際的對象還是計算結果等。

  2、將所有事物鏈接在一起:任何可能的情況下,使用鏈接指引可以被標識的事物(資源)。也正是超鏈接造就了現在的Web。

  3、使用標準方法:為使客戶端程序能與你的資源相互協作,資源應該正確地實現默認的應用協議(HTTP),也就是使用標準的GET、PUT、POST和DELETE方法。

  4、資源多重表述:針對不同的需求提供資源多重表述。

  5、無狀態通信。

  我自己的理解是:REST是一個Web架構。

?

一、ArcGIS REST API簡介

  ArcGIS REST API提供了簡單、開放的接口來訪問和使用ArcGIS Server發布的服務。使用ArcGIS REST API通過URL,可以獲取和操作每一個服務中的所有資源和操作。上面這句話很重要,指明了,使用REST API(就是ArcGIS REST API,下面都泛指ArcGIS REST API)其實就是通過URL來向GIS服務器獲取資源的操作(這是我目前的理解,歡迎指出理解不當的地方)。比如,要通過REST API來訪問一個GIS Server,可以使用下面格式的URL:

  1、java:

  http:<host>:8399/arcgis/rest

  2、.NET:

  http://<host>/arcgis/rest

  例如,要訪問我自己的電腦:http://localhost/arcgis/rest/services。在瀏覽器地址欄輸入這個地址后,可以看到下面這樣的網頁:

  上面那個地址,也叫做基本地址。通過地址,可以訪問這個服務所提供的所有與之關聯的資源和操作。

  Rest API是無狀態的,這意味著Rest沒有保存兩個請求之間的信息,所以每個請求必須包含能進行成功處理的信息。

?

?

二、服務端點(Server End Point)

  每一個ArcGISServer都會提供一個Services Directory。ServicesDirectory是ArcGISServer Rest API的HTML格式的視圖。通過這個視圖可以瀏覽ArcGIS Server的內容和獲取信息,比如服務的元數據和在開發應用程序時支持的操作。每個ArcGIS Server實例在它的初始化時就創建好了這個Services Directory。

整個ServiceDirectory是基于REST框架的。在使用ServicesDirectory時,你通過一系列的鏈接(一般就是URL)進行導向。每當點擊或者使用一個鏈接時,你可以看到一個包含更多有關這個服務器上什么是可用的信息的新頁面。這些信息就是使用URL通過REST框架得到的。

  使用REST API時,首先需要明確端點(Endpoint),這通常代表著服務器的目錄。對于ArcGIS服務器,默認的端點是:

  http://<host>/<instance>/services/<folder>

  說明:

  • http://<host>是ArcGIS服務器的主機名。
  • /<instance>是實例名,也就是建立的ArcGIS服務器的實例名,默認為:“/arcgis/rest”。
  • /services這指出了這是REST服務終端。你在根目錄下你可以看到這個ArcGIS服務器的所有服務。
  • /<folder>如果這個URL中包括folder,你可以看到在這個目錄下的所有服務。

?

三、ArcGIS REST API框架

  ArcGIS REST是一個層次分明的框架體系。其中的一些資源是直接反應了服務本身的(Resources),比如目錄、地圖和圖層等等;而另外一些則是一些操作的結果(Operations),比如從一個地圖資源中導出一幅地圖圖片,或者得到一個圖層的查詢結果的集合。所以客戶端從服務器端總是能得到一個資源的表現,在此一般分為兩種類型的資源:

  • Resources(資源,直接反應了服務本身的信息)
  • Operations(操作,根據服務本身的資源進行某些處理后得到的結果)

  下面是整個ArcGISREST API的框架圖

?

  可以看到,Catalog是整個REST APIURL分層等級的根。根下面就是這個Server所發布的服務,一共有8種類型的服務:Map Service、Geocode Service、GP Service、Geometry Service、Image Service、Network Service、GeoData Service和Globe Service。每一種Service下面都有不同的操作和資源,而執行這些操作和獲取這些資源都是通過URL的。

?

?

四、ArcGIS REST API的使用

1、使用步驟

  從根本上說,RESTAPI就是由網址組成的。使用REST API的過程基本分為四個步驟:

  1)構建請求網址

  A、確定端點:每個GIS服務都有一個端點。例如,ArcGIS Server上Demographics文件夾下名為ESRI_Census_USA的一個地圖服務sampleserver1.arcgisonline.com的端點為:http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer.

  B、確定操作:不同地理信息系統服務支持不同的操作。不同的操作會返回不同的結果。地圖服務可以地圖輸出,點擊查看,查找和生成KML。輸出地圖可以生成地圖,同時可以點擊產看是否給出地圖服務圖層的屬性表。

  C、確定參數:不同的操作需要不同的參數。例如,如果請求地圖圖片,需要提供地圖范圍的四周角點坐標參數,也就是地圖覆蓋范圍。

  D、確定輸出格式:REST API支持很多輸出格式,例如JSON,KMZ,圖片和HTML。確定輸出格式的重要參數是f。在URL請求的查詢字符串后面加上”f=<你的格式>”來確定輸出格式。例如:f=html返回的數據格式為html;f=json返回的數據格式為json;f=image返回的格式為image等等。

我們就以上面的4個步驟來構建自己需要的URL。一般來說,格式如下:

  http://{ArcGIS Server name}/ArcGIS/rest/services/{foldername}/{service name}/{service type}/{operation}?{{parameter1}={somevalues}&{parameter2}={some values}&…&{parameter}={some values}}

  可以看到,整個URL請求分為兩個部分,第一部分是服務的端點和操作類型,也就是“?”前面的部分;第二部分是查詢字符串,即請求參數,“?”后面的部分

  2)發送請求到ArcGIS Server

  提交URL請求到ArcGIS Server Sending,可以不通過編程發送URL請求。例如,只需在網頁瀏覽器的地址欄輸入網址,如IE或Firefox。每種編程語言都用不同的提出請求方式。

  3)接受服務器的響應

  接受ArcGISServer的響應,ArcGIS Server處理請求并返回響應到客戶端。對于一個同步的工作,客戶端一直等待收到服務器的響應。對于一部工作,服務器發送一份工作編號來定期跟蹤客戶端的工作狀態。

  4)解析服務器響應

  ArcGIS Server REST Web服務的響應可以是多種格式,例如JSON,KML,圖片和HTML。客戶端可判斷響應時成功還是失敗。如果失敗了,客戶端可以判斷錯誤信息。如果響應是成功的,客戶端可以解析響應所需的信息,并恰當地利用這些信息。

?

2、使用方式

  1)不編程使用

  可以使用Web瀏覽器、ArcGISServer JavaSccript地圖瀏覽器(f=jsapi)、ArcGIS Explorer(f=nmf)、ArcMap(f=lyr&v=9.3)、微軟虛擬地球(f=ve)、谷歌地圖(f=gmaps)、谷歌地球來使用ArcGIS REST API。

  用不同的工具使用RESTAPI的關鍵就是設置不同的f參數。下面是一個利用Web瀏覽器使用REST API的Demo。我是用的是我自己電腦上發布的世界地圖服務World,在瀏覽器上輸出我國范圍的地圖圖片,需要指定下列參數:

  •   操作:輸出圖片f=image。
  •   地圖邊界框(取值格式:西、南、東、北):bbox=72,3,135.5,53,5。
  •   輸出圖像尺寸:size=600,400
  •   輸出格式:f=image

  根據上述信息,構建的URL如下:

  http://localhost/ArcGIS/rest/services/World/MapServer/export?bbox=72,3,135.5,53,5&size=600,400&f=image

  在瀏覽器地址欄輸出上面URL后得到的結果如下:

  2)編程使用

  這里我用客戶端語言JavaScript借助Ajax技術使用REST API。通過REST API讀取World服務的第一個圖層的名字并顯示在彈出對話框上。

代碼 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
3 ?<html xmlns="http://www.w3.org/1999/xhtml">
4 ?<head>
5 <title>REST API DEMO</title>
6 <script type="text/javascript" language="javascript">
7 var request=null;
8 //根據不同瀏覽器創建請求對象
9 ? function createRequest()
10 {
11 try{
12 request=new XMLHttpRequest();
13 }
14 catch(trymicrosoft)
15 {
16 try{
17 request = new ActiveXObject("Msxm12.XMLHTTP");
18 }
19 catch(othermicrosoft)
20 {
21 try{
22 request = new ActiveXObject("Microsoft.XMLHTTP");
23 }
24 catch(faild)
25 {
26 request=null;
27 }
28 }
29 }
30 if(request==null)
31 alert("創建request對象失敗");
32 }
33 function sendRESTrequest()
34 {
35 createRequest();
36 var restURL="http://localhost/ArcGIS/rest/services/World/MapServer/0?f=json";//構建的REST URL
37 ? request.open("GET",restURL,true);//請求對象初始化連接
38 ? request.onreadystatechange=processResponse;//設置服務器響應請求后的回調函數
39 ? request.send(null);//向服務器發送請求
40 ? }
41 function processResponse()
42 {
43 if(request.readyState==4)//就緒狀態(ready state)有4個值“1:連接剛被初始化;
44 ? { //2:正在處理請求;3:服務器快要完成請求;4:請求完成,瀏覽器得到響應”
45 ? var response=eval('('+request.responseText+')');//返回的是一個文本,需要用eval函數轉成json對象
46 ? alert("圖層ID:"+response.id+"\n"+
47 "圖層名:"+response.name+"\n"+
48 "圖層的顯示字段:"+response.displayField);
49 }
50 }
51 </script>
52 </head>
53 <body onload="sendRESTrequest()">
54
55 </body>
56 </html>
57

  上面就是利用Ajax技術使用ArcGIS RESTAPI。關鍵就是url的構建。這里需要注意的是,這樣的請求一般是跨域請求,隨著安全性的增加,這樣的請求將慢慢被禁止,所以在實際使用時最好使用本地代理程序進行請求。

?

總結

  REST是一個Web應用程序框架。ArcGIS REST API簡單易懂且高效。使用ArcGIS REST API的關鍵兩點:熟悉它的框架、構建正確的符合自己需要的URL請求。

?

參考資料:

《ArcGIS Server REST API Help》

《ArcGISServer 9.3 REST基礎教程》

《深入淺出REST》:www.infoq.com/cn/articles/rest-introduction

《深入淺出Javascript API 第一講淺析 AGS REST API》:http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=31969

轉載于:https://www.cnblogs.com/carlbiao/archive/2010/09/09/1822419.html

總結

以上是生活随笔為你收集整理的ArcGIS客户端开发学习笔记(五)——ArcGIS REST API基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。