publish_Service.zip

  • AI_Stu
    了解作者
  • Python
    开发工具
  • 2KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2021-04-27 18:39
    上传日期
自动将一个文件夹下的所有.mxd文件发布为影像服务,并且对发布服务记录存入第三方数据库。已发布的服务通过查询服务列表会自己跳过
publish_Service.zip
  • publish_Service.py
    7.2KB
内容介绍
# -*- coding: utf-8 -*- import sys import os reload(sys) sys.setdefaultencoding('utf-8') path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) '''python import模块时, 是在sys.path里按顺序查找的。sys.path是一个列表,里面以字符串的形式存储了许多路径。使用db.py文件中的函数需要先将他的文件路径放到sys.path中''' sys.path.append(os.path.join(path, 'model', 'db')) import arcpy import db import json import urllib2 arcpy.CheckOutExtension("Spatial") # ArcGIS各种功能模块许可 __name__ = 'publish_Service' # _workSpace:包含.mxd文档和源数据的路径 # _out_AGSName:.ags文件名称 # _out_AGSFolder:存储链接文件(.ags文件)的文件夹路径 # _out_mxdFolder: 储存mxd的文件夹 # _connFilePath:表示连接服务器的.ags的文件路径 # _server_URL:服务目录URL # _serviceFolder:服务所在文件夹,如果为空,则表示根目录 # _summary:表示项目描述摘要的字符串 # _tags:表示项目描述标签的字符串 # _service_Name:表示所发布服务的名称 # 相对路径转绝对路径 path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) _workSpace = os.path.join(path, 'data') _out_AGSName = 'serverAgs.ags' _out_AGSFolder = os.path.join(path, 'data', 'temp', 'serverCache') _out_mxdFolder = os.path.join(path, 'data', 'temp', 'mxd') _connFilePath = os.path.join(_out_AGSFolder, _out_AGSName) _server_URL = 'http://localhost:6080/arcgis/admin' _serviceFolder = 'AutoServices' _summary = '指数提取结果' _tags = 'map' print _workSpace # 将指定目录下所有的.mxd文档发布为地图服务 思路: # 1.首先连接到ArcGIS Server服务器 # 2.将mxd地图文档转换为服务定义草稿文件(sddraft) # 3.分析sddraft文件可能存在的错误、警告和消息 # 4.将服务定义草稿(sddraft) 转换为服务定义(sd)文件 # 5.将sd文件上传并发布服务到指定的GIS服务器 # 1.创建ArcGIS Server连接 def creatGISServerCon(): try: username = 'admin' password = 'admin' # 连接 GIS 服务器 arcpy.mapping.CreateGISServerConnectionFile('ADMINISTER_GIS_SERVICES', _out_AGSFolder, _out_AGSName, _server_URL, "ARCGIS_SERVER", False, _out_AGSFolder, username, password, "SAVE_USERNAME") # 确保该文件夹已在服务器上注册,如果未注册,请将其添加到数据存储中 # if _workSpace not in [i[2] for i in arcpy.ListDataStoreItems(_connFilePath, 'FOLDER')]: # # 注册文件夹 _workSpace (文件夹必须包含.mxd和源数据) # print "注册文件夹..." # dsStatus = arcpy.AddDataStoreItem(_connFilePath, "FOLDER", "DataFile", _workSpace, _workSpace) # print "数据存储:" + str(dsStatus) except Exception, e: print e # 自动发布服务 def PublishAll(): # 检查文件路径 if not os.path.isdir(_workSpace): print "输入的文件夹路径无效!" return arcpy.env.workspace = _workSpace # 创建工作空间 arcpy.env.overwriteOutput = True # 覆盖相同文件 if not os.path.exists(_connFilePath): # os.path.exists()就是判断括号里的文件是否存在的意思 print "正在生成GIS服务器的连接文件!" creatGISServerCon() # 生成连接GIS服务器 conn try: files = os.listdir(_out_mxdFolder) # 返回文件夹下的所有文件名 for fileNames in files: service_Name = os.path.splitext(fileNames)[0] if not db.db_select_service(service_Name): # 发布服务 PublishService(service_Name, fileNames) except Exception, e: print e # 已有服务不需重新发布,插入发布记录即可 def PublishService(service_Name, fileNames): try: urlPath = "http://localhost:6080/arcgis/rest/services/" + _serviceFolder + "/" + service_Name + "/MapServer" services = getCatalog() # 查询服务器中所有的发布服务 arcpy.AddMessage(urlPath) for service in services: service = service['name'] if service[len(_serviceFolder) + 1:] == service_Name: # 储存发布服务记录 db.db_insert_service(service_Name, urlPath, service_Name[-4:]) return # 1.打开需要发布的.mxd mxd = arcpy.mapping.MapDocument(os.path.join(_out_mxdFolder, fileNames)) # 打开需发布的.mxd文件 # 2.将地图文档(.mxd)转换为服务定义草稿(.sddraft) sddraft = os.path.join(_out_AGSFolder, service_Name + '.sddraft') # 服务定义草稿文件(.sddraft)的路径 sd = os.path.join(_out_AGSFolder, service_Name + '.sd') # 服务定义文件(.sd)的路径 arcpy.mapping.CreateMapSDDraft(mxd, sddraft, service_Name, 'ARCGIS_SERVER', _connFilePath, False, _serviceFolder, _summary, _tags) print sd, sddraft # 3.分析服务定义草稿 analysis = arcpy.mapping.AnalyzeForSD(sddraft) # 打印分析返回的错误、警告和消息 arcpy.AddMessage("在分析MXD时返回了以下信息:") for key in ("messages", "warnings", "errors"): print "----" + key.upper() + "---" vars = analysis[key] for ((message, code), layerlist) in vars.iteritems(): print " ", message, "(CODE %i)" % code print " applies to:", for layer in layerlist: print layer.name, print # 如果sddraft分析不包含错误,则转移并上载服务 if analysis['errors'] == {}: # 4.将服务定义草稿(sddraft) 转换为服务定义(sd)文件 arcpy.StageService_server(sddraft, sd) print "开始上传服务!" # 5.执行UploadServiceDefinition 上载服务定义并发布服务。 arcpy.UploadServiceDefinition_server(sd, _connFilePath) # 储存发布服务记录 db.db_insert_service(service_Name, urlPath, service_Name[-4:]) else: print "无法发布服务,因为在分析过程中发现错误!" except Exception, e: print e # 列出服务器中的所有服务 def getCatalog(): baseUrl = "http://localhost:6080/arcgis/rest/services/" + _serviceFolder catalog = json.load(urllib2.urlopen(baseUrl + "/" + "?f=json")) if "error" in catalog: return services = catalog['services'] return services # 调用服务 PublishAll()
评论
    相关推荐
    • GRB2网格预报数据发布影像服务.zip
      arcpy arcgis server 自动发布grib2气象网格数据
    • arcrest:一个Pythonic API,用于从ArcGIS Server使用REST服务
      arcpy-server-util-rest 这是一个Pythonic API,用于使用来自ArcGIS Server的REST服务。 这些是Python绑定,用于使用服务和通过其RESTful API管理ArcGIS 10.1服务器。 请注意,这些还不完整-并非所有REST API都已...
    • hex-trips:Spark、Cassandra、曲面细分和 ArcGIS
      Spark、Cassandra、曲面细分和 ArcGIS 基于的项目,用于镶嵌和聚合六边形马赛克上的一组重合位置。 概述 在大多数情况下,将数以百万计的点可视化是不切实际的,并且无法从地图上彼此堆叠的点中辨别出模式。 但是,...
    • restapi:Python API旨在与ArcGIS REST服务在外部协同工作,以查询和提取数据以及查看服务属性。 对某些功
      还包括用于管理ArcGIS Server站点的子程序包。 该版本会经常更新,因此请继续在此处检查新功能! 你为什么要使用这个包? Esri当前提供了 ,该提供了到ArcGIS REST API的完整绑定。 该软件包对REST API的覆盖较少...
    • ags_connection_tester:试图验证 ArcCatalog 桌面和 AGS 服务器上的连接的脚本
      arcgis_server_connection_tester.py Arcpy 脚本旨在验证 ArcCatalog 桌面和 AGS 服务器上的连接。 注意:在此脚本和我的所有脚本中,所有安全性都包含在您现有的 ArcCatalog 连接中。 该脚本对您的密码或服务器...
    • python脚本发布arcgis server
      基于mxd地图文件上传方式,不需要用arcmap打开,直接通过python脚本上传,有一份代码和一份注意事项,能够实现功能。
    • 注册人:Python软件包,用于生成有关Esri地理数据库内容HTML报告
      已安装ArcGIS Desktop,ArcGIS ServerArcGIS Pro(用于arcpy软件包)。 您将能够在ArcGIS Desktop / Server Python 2.7和ArcGIS Pro Python 3.5+上运行该工具。 GDAL(用于ogr软件包)。 这意味着您无需安装任何...
    • ArcGIS Server Administration Toolkit
      这些工具是使用 Python编写的,而且可以连接ArcGIS Server的REST Admin,来快速和方便的执行相关的管理功能: 停止、 启动或删除服务 重命名服务 修改日志级别和清除旧的日志 上传和注册SOE 发布Service Definitions ...
    • ServerTools.zip
      一般做完矢量图绘制工作后,生成的.mxd文件只能在ArcMap中查看,为了方便用户进行浏览,我们需要发布地图服务
    • codesforimageprocessing.rar
      实现简单图像处理,包括256色转灰度图、Hough变换、Walsh变换、中值滤波、二值化变换、亮度增减、傅立叶变换、反色、取对数、取指数、图像平移、图像旋转、图像细化、图像缩放、图像镜像、均值滤波、对比度拉伸、拉普拉斯锐化(边缘检测)、方块编码、梯度锐化、灰度均衡、直方图均衡、离散余弦变换、维纳滤波处理、逆滤波处理、阈值变换、高斯平滑。