通过Python脚本自动发布ArcGIS服务

使用Python创建.sd服务定义文件,实现脚本自动发布ArcGIS服务 借助ArcGIS桌面发布ArcGIS服务是一个很熟悉的过程了,发布服务的前提是需要拥有一个已连接的ArcGIS Server服务站点,经过对mxd进行制图配置,定义服务参数,才能实现服务的发布,那么这个过程的自动化和一体化又该如何使用python脚本实现呢?直奔主题~~~~ -------------------------欢迎来访,拒绝转载-------------------------- 阅读详情

通常我们使用ArcCatalog或者ArcGIS Server Manager等图形界面工具来发布ArcGIS服务,然而有些情况下,比如需要发布的服务数量很多,而且需要不定期随时发布的时候,再使用这些工具进行人工操作就显得力不从心了。ArcGIS的强大之处就在于其为我们提供了多种选择,我们可以通过Python编写脚本,调用ArcPy模块中的功能来实现自动扫描文件夹并将其中的地图文档发布为地图服务。

本文将创建一个publishHelper.py文件,在其中编写两个方法,一个是PublishAll,用来遍历文件夹并调用另一个方法PublishMxd,后者完成具体的服务发布工作。

在服务发布之前,需要首先检查mxd文档路径,读取mxd文档,转为msd,分析文档等,最后才是发布服务。

[html]  view plain  copy
  1. # -*- coding: utf-8 -*-  
  2. import arcpy, os  
  3.   
  4. __name__ = 'publishHelper'  
  5.   
  6. # 将指定目录下所有的.mxd文档发布为地图服务  
  7. # folder:包含mxd文档的文件夹路径  
  8. # serviceDir:服务目录URL,例如http://localhost/arcgis/rest/services  
  9. # serviceFolder:服务所在文件夹,如果为空,则表示根目录  
  10. def PublishAll(folder,serviceDir,serviceFolder):  
  11.     print "检查文件夹路径……"  
  12.     if os.path.isdir(folder) == False:  
  13.         print "输入的文件夹路径无效!"  
  14.         return  
  15.     print "遍历文件夹……"  
  16.     files = os.listdir(folder)  
  17.     for f in files:  
  18.         if f.endswith(".mxd"):  
  19.             mxdPath = os.path.join(folder, f)  
  20.             print "publishing: " + f  
  21.             PublishMxd(mxdPath, serviceDir, serviceFolder)  
  22.         else:  
  23.             continue  
  24. #将mxd文档发布为服务:1.将mxd转为msd;2.分析msd;3.发布msd  
  25. def PublishMxd(mxdPath, serviceDir, serviceFolder):  
  26.     #检查mxd和msd文件是否存在  
  27.     print "检查文件路径……"  
  28.     if os.path.exists(mxdPath) == False:  
  29.         print "指定路径的mxd文档不存在!"  
  30.         return  
  31.       
  32.     # 打开mxd文档  
  33.     try:  
  34.         print "正在打开mxd文档……"  
  35.         mxd = arcpy.mapping.MapDocument(mxdPath)  
  36.     except Exception, e:  
  37.         print "open mxd error: ", e  
  38.         return  
  39.     else:  
  40.         print "mxd文档打开成功……"  
  41.   
  42.     # 获取默认的数据框  
  43.     print "正在读取mxd文档默认数据框……"  
  44.     df = ""  
  45.     try:  
  46.         frames = arcpy.mapping.ListDataFrames(mxd, "图层")  
  47.         if len(frames) == 0:  
  48.            frames = arcpy.mapping.ListDataFrames(mxd, "Layers")   
  49.         df = frames[0]  
  50.     except Exception, e:  
  51.         print "读取mxd文档默认数据框失败:", e  
  52.         return  
  53.   
  54.     # 构造msd文档名称  
  55.     msdPath = mxdPath.replace(".mxd", ".msd")  
  56.     # 将mxd转为msd  
  57.     print "正在将mxd文档转换为msd文档……"  
  58.     arcpy.mapping.ConvertToMSD(mxd, msdPath, df, "NORMAL", "NORMAL")  
  59.   
  60.     # 分析msd  
  61.     print "正在分析文档……"  
  62.     analysis = arcpy.mapping.AnalyzeForMSD(mxd)  
  63.     # 列出分析结果信息  
  64.     for key in ('messages', 'warnings', 'errors'):  
  65.       print "----" + key.upper() + "---"  
  66.       vars = analysis[key]  
  67.       for ((message, code), layerlist) in vars.iteritems():  
  68.         print "    ", message, " (CODE %i)" % code  
  69.         print "       applies to:",  
  70.         for layer in layerlist:  
  71.             print layer.name,  
  72.         print  
  73.   
  74.     #获取服务器信息  
  75.     serviceName = os.path.basename(msdPath).replace(".msd", "")  
  76.     serverName = serviceDir.split("/")[2]  
  77.     try:  
  78.         #发布msd  
  79.         print "正在发布服务……"  
  80.         arcpy.mapping.PublishMSDToServer (msdPath, serviceDir, serverName, serviceName, serviceFolder, ["WMS", "KML"])  
  81.     except Exception, e:  
  82.         print "发布服务失败:", e  
  83.     else:  
  84.         print "服务发布成功!"  

调用代码:

[html]  view plain  copy
  1. import sys  
  2. sys.path.append("E:\\Codes\\Python")  
  3. from publishHelper import PublishAll # 必须要有正确的许可,否则导入失败  
  4. PublishAll("D:\\TestData", "http://localhost/ArcGIS/rest/services", "sichuan")  

如此即可通过Python脚本去遍历文件夹,并发布其中的mxd文档为地图服务。稍作完善,还可作为windows服务自动运行,实现服务的随到随发。
ArcGIS Engine 10.2 如何发布服务 1         ArcGIS Engine 10.2 如何发布服务 ArcGIS Engine的代码不能直接将MXD地图文档作为数据源进行发布,如果要发布的话,需要用ArcMap将MXD转成MSD,然后使用转换成功的MSD文档进行发布,代码如下:   public void Publish(string host,string username,string pass 阅读详情

相关推荐

02-python脚本自动发布arcgis server服务

1-多个MXD文档自动生成sd文件 # 制作多个sd文件 def createSds(mxdFold,sdDir,con): for home,dir,filenames in os.walk(mxdFold): for filename in filenames: if(filename.endswith(('.mxd'))): mxdPath = home+"/"+filename ser

limeng19的博客 339

arcgis server发布服务--python自动发布arcgis服务全过程解析

保存草稿服务 如果在发布前退出服务编辑器,则系统将询问您是否要保存草稿服务定义。如果选择保存,则将创建草稿服务定义文件 (.sddraft),其中包含对服务所做的所有修改。可以从 ArcCatalog 或目录窗口打开此草稿服务定义。草稿服务定义保存的位置取决于您在共享为服务向导的第一个面板中是选择发布服务还是另存为服务定义文件,如下所示: 如果选择发布服务,草稿服务将保存至您选择发布到的服务器上的“草稿”文件夹。 如果选择另存为服务定义文件,草稿服务将保存到您选择保存服务定义的位置中。 https://en

GIS哼哈哈的博客 3316

Python自动化脚本发布ArcGIS Server地图服务

本文还有配套的精品资源,点击获取 简介:本文详细介绍如何通过Python脚本实现批量发布ArcGIS Server地图服务的功能,提高在处理大量地图服务时的效率。通过编写Python脚本可以绕过手动操作,直接处理MXD文件,实现自动化发布。文章提供了一份实际的Python脚本示例以及使用该脚本时需要注意的要点,以帮助IT专业人士高效管理GIS服务。 1. Pyth...

weixin_28840811的博客 1529

利用python脚本自动发布服务之arcgis pro篇

arcgis pro发布切片服务: arcgis pro发布要素服务: 注册数据库: https://pro.arcgis.com/zh-cn/pro-app/arcpy/functions/adddatastoreitem.htm https://pro.arcgis.com/zh-cn/pro-app/arcpy/functions/listdatastoreitems.htm arc...

qq_40376439的博客 1924

arcgisserver地图服务批量发布工具

发布arcgisserver服务一般采用是arccatalog和arcgis service manager,如果服务太多,一个个发布太麻烦。这个工具可以解决这个问题。具有批量发布地图服务功能。同时具有查看、启动、停止、删除服务等多项实用功能。是搞arcgisserver开发不可少的工具。 运行环境: ArcgisServer9.3+.net2.0

Python发布mxd并覆盖ArcServer服务

Python发布mxd文件并覆盖原有的地图服务

Arcgis10.2批量发布地图服务工具

Arcgis10.2批量发布地图服务工具 Arcgis10.2批量发布地图服务工具 因公司需要室内地图切片服务,但人工一个一个发布再生产切片缓存太浪费时间,所以做了个批量发布地图服务工具。 “”" 根据MXD工程文件发布地图服务 程序运行前需修改server_url、username、password函数值(44、47、48行) ArcMap添加脚本时创建三个输入值(XMD目录,文件夹类型;新增服务器文件夹名称,变量类型,可选选项;切片缓存目录,文件夹类型) 性能测试: 测试建筑物名称:北京西单大悦城 测试

weixin_45855016的博客 1105

ArcPy 发布mxd为地图服务

利用Python叫发布mxd文件为地图服务 发布为GPServer后,即可不通过ArcMap或ArcCatalog软件,既可以将mxd文件发布为地图服务MapServer

AcrGIS批量操作mxd发布动态服务

场景描述 在使用ArcGIS发布服务时,经常会因为数据量大而卡死,部分原因是因为ArcGIS本身图形渲染和组件占用内存较多,使用Arcpy进行批量发布可以较好的规避这个问题。 实践示例 批量发布动态服务 #coding:utf-8 import arcpy,os,logging # 发布动态服务 def publicDynamicMxd(mxdpath,servicedir,servicenam...

愤怒的小兵 884

python脚本发布arcgis server

基于mxd地图文件上传方式,不需要用arcmap打开,直接通过python脚本上传,有一份代码和一份注意事项,能够实现功能。

Synopsys的CoreConsultant使用简析

CoreConsultant使用简析

weixin_58165606的博客 1万+

【转】通过Python脚本自动发布ArcGIS服务

通常我们使用ArcCatalog或者ArcGIS Server Manager等图形界面工具来发布ArcGIS服务,然而有些情况下,比如需要发布的服务数量很多,而且需要不定期随时发布的时候,再使用这些工具进行人工操作就显得力不从心了。ArcGIS的强大之处就在于其为我们提供了多种选择,我们可以通过Python编写脚本,调用ArcPy模块中的功能来实现自动扫描文件夹并将其中的地图文档发布为地图服务。

lvdou2518的专栏 993

本届挑战赛亚军方案:基于大模型和多AGENT协同的运维

我们分别构建了异常检测基础模型,一旦系统接受到异常即会通知LLM主管Agent,主管Agent对异常问题进行决策与子领域Agent进行桥接,多个子领域Agent协同工作,实现运维故障自动诊断和多个任务模型的编排,提升运维效率。

weixin_52705010的博客 2292

arcpy发布要素服务

目录思路代码 思路 通过arcgis server发布,连接arcgis server 发布要素服务,需要先创建草稿文件 创建草稿文件之后,需要修改草稿文件的配置,将要素服务开启以及去掉创建功能 分析草稿文件 编译资源 发布服务 代码 # -*- coding: utf-8 -*- import arcpy, sys import xml.dom.minidom as DOM import os # batch publishing feature service # Modify as your

Zzzpiu的博客 597

深入解析TI C2000 ePWM模块:峰值电流模式Buck与LLC谐振变换器实战配置

脉宽调制(PWM)技术是电力电子与数字电源控制的核心,它通过调节开关信号的占空比或频率,实现对功率变换器输出电压、电流的精确控制。其基本原理是利用微控制器内部的定时器和比较器,生成具有特定时序的方波信号,驱动功率开关器件。这项技术的核心价值在于将复杂的模拟控制环路数字化,从而提升系统的可控性、灵活性和可靠性。在电机驱动、不间断电源(UPS)、服务器电源和新能源逆变器等广泛应用场景中,PWM技术都是实现高效能量转换的基石。本文聚焦于德州仪器(TI)C2000系列微控制器中功能强大的增强型PWM(ePWM)模块

weixin_30410119的博客 344

Excel COUNTIF函数精确统计全解析:从模糊匹配到精准计数

在数据处理与办公自动化领域,条件计数是数据分析的基础操作,其核心原理在于对特定范围内满足设定条件的单元格进行识别与汇总。Excel中的COUNTIF函数是实现这一功能的常用工具,它通过文本匹配逻辑与通配符机制来执行条件判断。然而,其默认的模糊匹配行为常导致统计结果偏离预期,这正是精确统计的技术价值所在——确保数据汇总的准确性与可靠性,直接影响业务报告、薪酬核算、销售分析等应用场景的决策质量。本文聚焦COUNTIF函数的精确匹配技巧,深入剖析通配符(如星号*和问号?)的转义使用(通过波浪号~),并针对大小写敏

weixin_29040367的博客 353

ArcGIS中python实现地图服务的自动发布

项目的具体需求是,每天下载几张tiff图片,放在mxd文件里,然后将其发布到ArcGISServer,后来 参照网上有一篇文章,可以自动发布地图服务,但是,后来发现,现在使用的ArcGIS版本10.2.2已经放弃了原来的方式发布服务,根据ArcMap里的帮助文档,发现里面的例子还是挺多的,自己又修改了实现的代码: 下载tiff文件的代码downLoadTiff.py: import urlli

liyan_gis的专栏 6988

高校学籍管理系统(SQL Server数据库课程设计)

摘要: 高校的管理工作是一项复杂且系统化的工作。而随着当代社会积极响应国家“科教兴国”的战略。高校建设规模和招生人数每年均高不下,庞大的学生群体对高校的管理工作带来了巨大的挑战。而对学生的学籍管理工作更是高校管理工作的一个重要环节。 面对高校学生学籍信息如此庞大的数据群,如采用传统的管理模式,管理工作的效率不仅低下,而且数据错误的发生率相对较高,还会产生人力和物力上的巨大开支。面对这样的情况,开发一个高校学籍管理系统就显得尤为重要。 运用高校学籍管理系统可以大大提高高校管理工作效率、方便系统维护、减小开支、

qq_52030824的博客 7万+
上一篇: arcgis rest server动态图层管理
下一篇: ArcGIS动态图层
engineer_he
博客等级 码龄10年 109粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值