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


【前言】

有好些網友問我怎么使用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標簽,進入這個服務的具體信息的功能頁

找到REST URL,復制下來。

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

<!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://域名/后面相同”

運行起來就是:

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

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

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

點我

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

問題來了,除了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類似。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM