近期在研究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服务了