近期在研究ArcGIS的自動化發佈,就是把在arcgis desktop上的人工操作用腳本完成。
這樣做的目的有三個:
減少人工操作,實施人員在使用系統時無需具備arcgis相關知識即可快速搭建GIS環境
簡化發佈流程,發佈一個MXD到arcgis server往往需要經歷多部操作,且很多操作都是重複的,完全可以通過程序來完成這些工作。這些操作大概流程爲:
創建MXD -> 創建數據源 -> 創建feature class -> 轉換並添加圖層 -> 註冊數據源 -> 生成sddraft -> 分析sddraft -> 勾選所需的服務(WMS,WFS,FeatureAccess等)-> 最終發佈到arcgis server
加強GIS與應用系統的交互,統一管理。圖層管理一直是webgis應用開發中比較令人頭疼的事情,其中涉及到圖層的配置,發佈,數據同步,服務接口調用等諸多方面,如果能夠把這些事情集中到一起管理就能使webgis應用維護性更高,大大提高開發效率。
經過網絡搜尋大量的相關資料,個人感覺底層的服務還是要使用arcpy來完成。
爲了儘量減少python的安裝步驟,未選擇如Django之類的第三方web框架。目前的環境選擇爲:
編程語言:python
生產環境:apache CGI或者tomcat CGI
服務類型:XML-RPC (參考文檔:python SimpleXMLRPCServer)
下面將環境搭建過程記錄下來:
apache CGI
參考資料:Configuring the Apache Web Server to Run Python on Windows
打開 httpd.conf
新建虛擬目錄,注意這裏加了ExecCGI
Alias /arcpy C:/arcpy <Directory "C:/arcpy"> Options Indexes FollowSymLinks ExecCGI AllowOverride None Order allow,deny Allow from all </Directory>
搜索到AddHandler cgi-script .cgi這一行,去掉註釋並加入.py後綴
AddHandler cgi-script .cgi .py
將需要執行的腳本拷貝到虛擬目錄下,重啓apache即可。
經過驗證,修改py文件,不需要重啓apache就能看到效果,非常方便
tomcat CGI
參考資料:Configure Tomcat 7 to run Python CGI scripts in windows
參考資料:tomcat官方文檔
打開<tomcat_home>/conf/web.xml,將CGI相關的servlet配置註釋去掉,並加入如下這行參數,目的是讓tomcat知道python的執行路徑
<init-param> <param-name>executable</param-name> <param-value>/Python27/ArcGISx6410.1/python.exe</param-value> </init-param> <init-param> <param-name>passShellEnvironment</param-name> <param-value>true</param-value> </init-param>
打開<tomcat_home>/conf/context.xml
<Context privileged="true"> ... </Context>
將py文件拷貝到webapp下面如 testpy/WEB-INF/cgi/index.py
啓動tomcat
這時通過http://localhost:8080/testpy/cgi-bin/index.py就能正常訪問到python服務了