天天看點

ArcGIS API for JavaScript 4.3 與ArcGIS Server關聯使用【地圖服務】

簡單介紹如何利用已經釋出的地圖服務進行AJS程式設計(使用AJS 4.3或更高版本)

【前言】

有好些網友問我怎麼使用Server釋出的地圖服務了,其實非常的簡單。

我在這裡先聲明:不提供Server軟體,需要的請自行使用網際網路搜尋資源;

不闡述Server如何釋出各各種服務,但是我會給出官方的文檔(點我),釋出服務其實各種老教程都很多了。

【軟體準備】

·Windows 64位以上的系統,XP可以歇菜了,Server是64位原生軟體;//Linux發行版也可以,能用Server就行

·ArcGIS for Server 10.x版本

·ArcGIS for Desktop(用于釋出服務)

如果有自己的伺服器,可以在伺服器端安裝ArcServer,但是ArcServer對伺服器的性能、帶寬和存儲有要求,請自行參考官方文檔。

當然也可以在本地安裝Server,用本機建構B/S架構。

ArcGIS桌面軟體用于釋出服務,資料自己準備。

一枚浏覽器,推薦WebKit核心的Chrome、火狐等。

一個能寫Web前端的編輯器,本人使用VSCode.

其中後兩個必須,前三個非必需,隻要得到下文提到的REST URL就可以進行AJS程式設計。

好,上課。

話說有一陣子沒寫部落格了,忙啊,看學校,複習,各種亂七八糟的事情,AJS的筆記也沒跟上,卡在一個空間查詢的例子上了。

一般安裝好ArcGIS for Server後,進入管理頁面就有一個示例服務:

點選紫色框框的a标簽,進入這個服務的具體資訊的功能頁

ArcGIS API for JavaScript 4.3 與ArcGIS Server關聯使用【地圖服務】

找到REST URL,複制下來。

現在使用AJS 4.3來建構一個最基本的SceneView網頁,代碼如下:

ArcGIS API for JavaScript 4.3 與ArcGIS Server關聯使用【地圖服務】
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
  <title>FeatureLayer - 4.3</title>

  <link rel="stylesheet" href="https://js.arcgis.com/4.3/esri/css/main.css">
  <script src="https://js.arcgis.com/4.3/"></script>

  <style>
    html,
    body,
    #viewDiv {
      padding: 0;
      margin: 0;
      height: 100%;
      width: 100%;
    }
  </style>

  <script>
    require([
        "esri/Map",
        "esri/views/SceneView",
        "esri/layers/FeatureLayer",
        "dojo/domReady!"
      ],
      function(
        Map, SceneView,
        FeatureLayer
      ) {
        var map = new Map({
          basemap: "hybrid"
        });
        var view = new SceneView({
          container: "viewDiv",
          map: map,
        });


        var featureLayer = new FeatureLayer({
          url: "https://localhost:6443/arcgis/rest/services/SampleWorldCities/MapServer"
        });
        map.add(featureLayer);
      });
  </script>
</head>

<body>
  <div id="viewDiv"></div>
</body>

</html>      

AJS使用本地【地圖服務】

其中最關鍵的就是:

var featureLayer = new FeatureLayer({
    url:"https://localhost:6443/arcgis/rest/services/SampleWorldCities/MapServer"
});      

url就是剛剛複制下來的REST URL,REST URL的構成大概是

“https://IP位址:端口/使用者資訊(使用者群組、使用者名等)/rest/services/服務名稱/服務類型/子項”

或者

“https://域名/後面相同”

運作起來就是:

ArcGIS API for JavaScript 4.3 與ArcGIS Server關聯使用【地圖服務】

請注意,直接複制我的的代碼是不能跑出來這個效果的,請使用能用的REST URL,AJS 4.X的示例代碼中有一些例子的URL可以測試,請自行查找。

那麼怎麼知道哪些服務對應哪些AJS 類呢?

在Layer中,官方展示頁面如下:

點我

我直接列出一些常用的好了:

ArcGIS API for JavaScript 4.3 與ArcGIS Server關聯使用【地圖服務】

問題來了,除了MapServer、FeatureServer等服務,還有NAServer很多,哪裡能用上呢?

AJS能用上的服務有限,Server本身并不隻是單獨針對AJS使用的。

在AJS的網絡分析示例中,就可以使用NAServer:

var routeTask = new RouteTask({
    url: "https://route.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World"
});      

還有很多服務能在AJS的例子中找到,由于AJS的筆記還沒寫完,我日後發現一個就更新一個。

Server的各種服務在AJS4.x中的具體運用

RouteTask(路徑分析)

routeTask類的url可以使用NAServer;釋出網絡分析服務可以檢視這裡:點我

相關網絡分析服務見這裡:點我

QueryTask(查詢)

QueryTask的url可以使用MapServer、FeatureServer

FindTask(查找)

FindTask可以使用MapServer執行個體化。

IdentifyTask(識别)

IdentifyTask可以使用MapServer執行個體化。

Geoprocessor(GP)

Geoprocessor可以使用GPServer執行個體化,可以根據子項進行不同的分析。在AJS的例子中,使用了可視域分析和熱力圖分析,GPServer(地理處理服務)的不同子項而已。

關于GPServer的釋出與使用,可以檢視Server的幫助文檔:點我

其實就是ArcMap的各種處理。

PointCloudLayer(點雲圖層)

點雲圖層可以為其url屬性賦一個SceneServer的URL來執行個體化。

ClosestFacilityTask(最近設施)

使用NAServer。

GeometryService(幾何服務)

使用GeometryServer;如

var geoSer = new GeometryService({url:"https://sampleserver6.arcgisonline.com/arcgis/rest/services/Utilities/Geometry/GeometryServer"});      

Locator(定位)

使用GeocodeServer(地理編碼服務)。

如:

var locator = new Locator({url:"http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer"});      

ServiceAreaTask(服務區)

使用NAServer。(疑似)

ImageServiceIdentifyTask(影像服務識别)

疑似為MapServer,與IdentifyTask類似。

繼續閱讀