【前言】
有好些網友問我怎么使用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>
其中最關鍵的就是:
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類似。
