【教程】發布NAServer到ArcGIS Server 10.4上[超詳細]
前陣子對ArcGIS API For JavaScript的網絡分析有興趣,但是不知道其數據是如何獲取的。
查閱API知道,AJS的網絡分析只有三個功能:最短路徑(RouteTask)、最近設施點(ClosestFacilityTask)和服務區(ServiceAreaTask)。
而這三個分析類依賴的是ArcGIS Server上的NAServer(網絡分析服務),於是
如何發布NAServer,就成了我近期的研究事宜,所幸的是,這方面的資料非常豐富。
需要註意的是:
NAServer依賴於MapServer。
也就是說,必須存在MapServer,才能在MapServer上啟用NAServer。
MapServer是NAServer的必要條件,但不是充分條件。
想啟用NAServer,還需要一個正常的網絡數據集。
有關如何制作網絡數據集,請參考我之前的博文:點我,或者在安裝了ArcGIS for Desktop的電腦上查閱幫助文檔(推薦看我的,比官方的簡潔粗暴)。
1. 數據準備
在這裏,我使用了ESRI提供的網絡數據集,就不自己制作了。
讀者只要知道,一個高質量的網絡數據集是網絡分析的基石,就足夠了。
數據來源是GP Service Examples
我選用的是Network Analyst文件夾的SanFrancisco.gdb數據。
可以看到Transportation要素數據集中已經準備好了Streets_ND網絡數據集。
2. 在ArcMap中打開網絡數據集並創建三個對應圖層
三個圖層是:路徑、服務區、最近設施點。
見下圖:
2.1 先打開網絡數據集
2.2 創建三個網絡分析圖層:路徑、服務區、最近設施點
圖2是打開了網絡分析窗口。
3. 發布MapServer與NAServer
這一步假設已經在本機安裝了與ArcMap同版本的ArcGIS for Server,本人使用的是Server 10.4;或已經知道了遠程ArcGIS for Server服務地址。
及登陸Server的賬號密碼。
發布!
3.1 假設讀者沒有在ArcMap或Catalog連接過Server(看過的直接跳到3.2 發布MapServer)
這個時候點擊有個+號那個按鈕
這裏填寫的是Server的地址和登陸賬號密碼,其余默認。點擊完成,ArcMap就會連接到Server了。如果是遠程地址就不是localhost了哦~
3.2 發布MapServer
給即將發布的服務命個名,連接就選已經連接上的ArcGIS Server服務器,localhost_6443就是我本地6443端口上的ArcGIS Server服務器。
我把這個服務放到一個新的文件夾裏去,名為ForTest。登陸過ArcGIS for Server網頁管理頁面的人會知道,服務跟文件一樣,存放於不同的目錄(文件夾)下。
例如根目錄下就有一個默認的MapServer:
點擊繼續。
此時出現【服務編輯器】窗口,在功能選項卡中勾選Network Analysis功能。此時,可以點擊分析,確保沒有錯誤,警告無所謂,一般都會有十幾二十個警告:
然後點擊服務編輯器右上角的【發布】即可。靜等發布。
期間會提示:
選確定。
恭喜,發布成功。
————————————————
至此,MapServer發布成功,相當於一個mxd文檔就丟到服務器上面去了;
而那個網絡數據集就支撐起了NAServer這個服務類型,三個網絡分析圖層就分別是NAServer中的三個圖層。(聽不懂?沒關系,等下就知道了)
3.3 在ArcMap中查看Server上的服務
我們還可以順便在ArcMap中查看AJS中需要的REST URL:
如圖所示,右鍵單擊剛剛發布的SanFranciscoNetwork這個MapServer的服務屬性
選擇Network Analysis選項卡,就可以找到REST URL了。這個很重要,見3.5 查看NAServer。
3.4 在Server網頁端查看服務
登陸ArcGIS Server管理頁,找到ForTest文件夾,可以看到多了一個SanFranciscoNetwork地圖服務,跟桌面端是一樣的。
3.5 查看NAServer
把NAServer的REST URL復制粘貼到瀏覽器地址欄,打開:
Route Layers、Closest Facility Layers、Service Area Layers三個圖層就是我們需要用於AJS中實例化的圖層了,見4舉例:
4. 在AJS中使用NAServer
4.1 RouteTask
這裏是使用最短路徑任務,需要依賴NAServer的Route Layers:
var routeTask = new RouteTask({
url: "https://localhost:6443/arcgis/rest/services/ForTest/SanFranciscoNetwork/MapServer/NAServer/路徑"
});
4.2 ClosestFacilityTask
var closestFacilityTask = new ClosestFacilityTask({ url: "https://localhost:6443/arcgis/rest/services/ForTest/SanFranciscoNetwork/MapServer/NAServer/最近服務區" });
4.3 ServiceAreaTask
var serviceAreaTask = new ServiceAreaTask({ url: "https://localhost:6443/arcgis/rest/services/ForTest/SanFranciscoNetwork/MapServer/NAServer/服務區" });
NAServer後面緊跟著三個圖層的名字,我不知道能不能在url裏使用中文名,建議大家創建網絡分析圖層的時候使用英文名吧。
5. 總結
發布NAServer是依賴於MapServer的,這點無疑。
NAServer又依賴於網絡數據集。
想要在WebGIS上使用NAServer的三個功能:路徑、服務區、最近設施點,就得在發布MapServer時創建三種網絡分析圖層。
在AJS中使用對應的網絡分析功能,只需在NAServer的REST URL後面補上網絡分析圖層名即可。
這就是全文啦!不懂的可以聯系我的email: [email protected]
本人不提供軟件,請自行查找。
【教程】發布NAServer到ArcGIS Server 10.4上[超詳細]