天天看點

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以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資料。

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)

可以看到Transportation要素資料集中已經準備好了Streets_ND網絡資料集。

2. 在ArcMap中打開網絡資料集并建立三個對應圖層

三個圖層是:路徑、服務區、最近設施點。

見下圖:

2.1 先打開網絡資料集

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)

2.2 建立三個網絡分析圖層:路徑、服務區、最近設施點

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)
ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)

圖2是打開了網絡分析視窗。

3. 釋出MapServer與NAServer

這一步假設已經在本機安裝了與ArcMap同版本的ArcGIS for Server,本人使用的是Server 10.4;或已經知道了遠端ArcGIS for Server服務位址。

及登陸Server的賬号密碼。

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)

釋出!

3.1 假設讀者沒有在ArcMap或Catalog連接配接過Server(看過的直接跳到3.2 釋出MapServer)

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)

這個時候點選有個+号那個按鈕

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)
ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)

這裡填寫的是Server的位址和登陸賬号密碼,其餘預設。點選完成,ArcMap就會連接配接到Server了。如果是遠端位址就不是localhost了哦~

3.2 釋出MapServer

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)

給即将釋出的服務命個名,連接配接就選已經連接配接上的ArcGIS Server伺服器,localhost_6443就是我本地6443端口上的ArcGIS Server伺服器。

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)

我把這個服務放到一個新的檔案夾裡去,名為ForTest。登陸過ArcGIS for Server網頁管理頁面的人會知道,服務跟檔案一樣,存放于不同的目錄(檔案夾)下。

例如根目錄下就有一個預設的MapServer:

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)

點選繼續。

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)

此時出現【服務編輯器】視窗,在功能頁籤中勾選Network Analysis功能。此時,可以點選分析,確定沒有錯誤,警告無所謂,一般都會有十幾二十個警告:

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)

然後點選服務編輯器右上角的【釋出】即可。靜等釋出。

期間會提示:

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)

選确定。

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)

恭喜,釋出成功。

————————————————

至此,MapServer釋出成功,相當于一個mxd文檔就丢到伺服器上面去了;

而那個網絡資料集就支撐起了NAServer這個服務類型,三個網絡分析圖層就分别是NAServer中的三個圖層。(聽不懂?沒關系,等下就知道了)

3.3 在ArcMap中檢視Server上的服務

我們還可以順便在ArcMap中檢視AJS中需要的REST URL:

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)

如圖所示,右鍵單擊剛剛釋出的SanFranciscoNetwork這個MapServer的服務屬性

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)

選擇Network Analysis頁籤,就可以找到REST URL了。這個很重要,見3.5 檢視NAServer。

3.4 在Server網頁端檢視服務

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)

登陸ArcGIS Server管理頁,找到ForTest檔案夾,可以看到多了一個SanFranciscoNetwork地圖服務,跟桌面端是一樣的。

3.5 檢視NAServer

把NAServer的REST URL複制粘貼到浏覽器位址欄,打開:

ArcGIS 網絡分析[3] 釋出NAServer到ArcGIS for Server(以Server 10.4為例)

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]

本人不提供軟體,請自行查找。

繼續閱讀