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服务了

时间: 2024-11-07 04:02:24

arcpy CGI XML-RPC服务的搭建的相关文章

NFS服务的搭建与RPC协议

NFS(Network File System)的缩写,意为网络文件系统.其功能主要是通过网络在不同的主机之间共享目录或者文件.NFS客户端通过挂载将NFS服务器端共享的数据目录挂载到本地系统.由于NFS支持的功能很多,不同的功能会启动不同的端口来传输数据,由于端口的不固定会造成NFS客户端与NFS服务器端的通信障碍,为了解决这个问题就出现了RPC(Remote Procedure Call)服务.RPC即远程调用协议 相当于NFS客户端与NFS服务器端数据传输的桥梁. 本文通过NFS服务在两台

SprngCloud微服务框架搭建(一)

参照来源 :https://blog.csdn.net/forezp/article/details/70148833 1.简介 目前来说,SpringCloud是比较完整的微服务解决方案框架.不像其他rpc远程调用框架,只是解决某个微服务中的问题. 2.微服务框架搭建 2.1.服务的注册与发现Eureka(Finchley版本) 本次采用Eureka作为服务注册与发现的组件. 2.1.1.创建服务注册中心 首先创建一个空的maven工程,在其pom文件引入依赖, Spring Boot 版本采

基于netty轻量的高性能分布式RPC服务框架forest&lt;下篇&gt;

基于netty轻量的高性能分布式RPC服务框架forest<上篇> 文章已经简单介绍了forest的快速入门,本文旨在介绍forest用户指南. 基本介绍 Forest是一套基于java开发的RPC框架,除了常规的点对点调用外,Motan还提供服务治理功能,包括服务节点的自动发现.摘除.高可用和负载均衡等. 架构概述 Forest中分为服务提供方(RPC Server),服务调用方(RPC Client)和服务注册中心(Registry)三个角色. Server提供服务,向Registry注册

《NFS文件共享服务的搭建》RHEL

首先要清楚一点:NFS服务的共享是建立在linux和linux之间的. 配置任何服务之前我们要做的2件事: iptables  -F setenforce 0    NFS服务内核防火墙影响不大,主要还是iptables 服务端: 安装nfs服务软件包: 启动nfs服务 下面说一个NFS服务起不来的解决方法,这个错误还是比较常见的. 报错:RPC.....问题,这个是因为我把rpc给关了: 把rpc打开重启下服务: 服务端共享出去/mnt对所有的主机(以只读的方式) 客户端 终端为白色 首先要识

Web Service学习之服务端搭建与客户端调用

?工作中用到了Web Service,但是对这块不是很熟悉,决定花时间学习一下,现在记录一下最基本的入门知识点. 使用Java搭建Web Service服务端,使用Python脚本调用接口. 一.Web Service服务端 1.在Eclipse中新建一个Java工程,新建test.TestWebService类 package test; import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebService public 

基于CentOS6.5进行IPA服务的搭建——客户端配置

前面介绍了IPA服务端的配置,IPA服务可以为Linux系统提供用户的集中化管理服务.下面我们看一下客户端的具体配置. 操作步骤: (1)在另外一台主机上安装CentOS6.5操作系统,作为IPA客户端主机 (2)配置客户端网络参数(配置完成后重启系统) [[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR=00:0C:29:F4:B0:3A TYPE=Ethernet UU

基于开源Dubbo分布式RPC服务框架的部署整合

一.前言 Dubbo 作为SOA服务化治理方案的核心框架,用于提高业务逻辑的复用.整合.集中管理,具有极高的可靠性(HA)和伸缩性,被应用于阿里巴巴各成员站点,同时在包括JD.当当在内的众多互联网项目中有着广泛应用.dubbo 通过高性能 RPC 实现服务的输出和输入功能,框架基于 Spring Framework 进行无缝集成,使用过程中基本看不到 Dubbo API的直接调用,Dubbo服务支持RMI.Hessian.Dubbo.WebService等众多通信协议,同时提供了对服务的监控和管

&lt;linux下extmail服务的搭建&gt;

下载2个软件包: extmail-1.1.0.tar.gz     extman-1.1.tar.gz 下载地址:http://www.cpan.org/ 创建extsuite目录 mkdir /var/www/extsuite 解压这2个包到这个目录下: tar zxf extman-1.1.tar.gz -C /var/www/extsuite tar zxf extmail-1.1.0.tar.gz -C /var/www/extsuite 改个短的名字 mv extmail-1.1.0

【Rpc】基于开源Dubbo分布式RPC服务框架的部署整合

一.前言 Dubbo 作为SOA服务化治理方案的核心框架,用于提高业务逻辑的复用.整合.集中管理,具有极高的可靠性(HA)和伸缩性,被应用于阿里巴巴各成员站点,同时在包括JD.当当在内的众多互联网项目中有着广泛应用.dubbo 通过高性能 RPC 实现服务的输出和输入功能,框架基于 Spring Framework 进行无缝集成,使用过程中基本看不到 Dubbo API的直接调用,Dubbo服务支持RMI.Hessian.Dubbo.WebService等众多通信协议,同时提供了对服务的监控和管

什么是XML RPC?

# -*- coding: cp936 -*- #python 27 #xiaodeng #什么是XML RPC? #中文叫:远程过程调用 #使用http协议做传输协议的rpc机制,使用xml文本的方式传输命令和数据 #一个rpc系统必然包含2个部分: #1.rpc client:用来向rpc server调用方法,并接收方法的返回数据 #2.rpc server:用于响应rpc client的请求,执行方法,并回送方法的执行结果. #工作原理 #1.rpc client的工作原理是rpc cl