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