友好閱讀鏈接:(http://swj.me/2015/08/26/batchPublishtools/)
update0918:
- 修復了創建鏈接文件時而出錯的bug
- 修復了在24011的警告已處理的情況下,依然出現提示的異常。
- 將多個腳本文件,壓縮成一個腳本文件。壓縮后的腳本文件名稱為Publishservice.py,使用如下命令執行工具
python Publishservice.py
- 重新創建了一個repo,更改了腳本git 存放的地址,新地址如下:
BathPublishMapServices
==============================================================================
介紹
在日常工作中,經常碰到用戶多次訴求需要批量發布服務。esri官方發布方式,只能是通過arcMap連接server去逐個發布。但是其也為開發者提供了批量發布服務兩種方式:一種是通過arcpy的腳本,一種是通過其提供的arcgis admin api
本工具使用arcpy的形式實現,並使用cmd 命令行執行。一開始通過tkinter ui的形式進行實現。但是最后發現tkinter太不人性,果斷棄之。
環境
- windows
- python 2.7.x
- arcpy 10.1+
實現流程
實現流程即是arcgis for server的發布流程
- 輸入GIS服務器的信息
包括GIS服務器的IP,站點管理員用戶名和密碼,mxd文件所在的文件夾,當集群環境時,指定服務發布的cluster,默認是的default,服務發布到server的目錄名,默認是root - 創建server鏈接文件
在當前腳本執行的目錄下,生成一個后綴為.ags 的server鏈接文件 - 遍歷mxd文件
遍歷mxd文件夾中的mxd文件,並檢查該文件是否存在數據源損壞 - 生成sddraft文件
- 過渡sd文件
- sd文件上傳到服務器端
使用
去下面地址下載腳本。將整個BatchPublishMapService 目錄下載
運行cmd,cd 到BatchPublishMapService。執行如下腳本. 如果出現python是無效的命令的錯誤。請配置環境變量
python BatchPublishMapService.py
根據命令行中的提示輸入相關的參數。如下圖所示:
發布過程的詳細信息,以及分析操作的信息輸出
在manager中查看批量發布的服務
注意
- 服務名為mxd文件名。如需要指定服務名,請將mxd文件名改為對應的文件名
- 輸入的用戶名和密碼為站點管理員的用戶名和密碼
- 該程序沒有注冊數據源的功能,當數據源路徑,已經注冊,數據不拷貝到服務器上。如果沒有注冊,數據則默認拷貝到服務器
- 該工具沒有打包。本想打包成exe,但是arcpy打包存在問題。
后續更新
由實際反饋和使用情況決定