arcpy CGI XML-RPC服務的搭建

近期在研究ArcGIS的自動化發佈,就是把在arcgis desktop上的人工操作用腳本完成。


這樣做的目的有三個:

  1. 減少人工操作,實施人員在使用系統時無需具備arcgis相關知識即可快速搭建GIS環境

  2. 簡化發佈流程,發佈一個MXD到arcgis server往往需要經歷多部操作,且很多操作都是重複的,完全可以通過程序來完成這些工作。這些操作大概流程爲:

    創建MXD -> 創建數據源 -> 創建feature class -> 轉換並添加圖層 -> 註冊數據源 -> 生成sddraft -> 分析sddraft -> 勾選所需的服務(WMS,WFS,FeatureAccess等)-> 最終發佈到arcgis server

  3. 加強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服務了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章