使用Arcpy实现批量生成arcgis server 服务和切片缓存

引言

发布地图服务并生成切片缓存是一个重复且没有技术含量的一项工作。在经过无数次的重复性工作后,突然想到可以借助arcpy来实现批量的发布。这样便可以大大提高效率,给摸鱼留出更多的时间。
下面将介绍如何使用arcpy库来实现批量发布服务

主要函数

arcpy是一个 Python 站点包,可提供以实用高效的方式通过 Python 执行地理数据分析、数据转换、数据管理和地图自动化。基本上只要Arcgis可以实现的,都可以通过arcpy来实现,所以在面对重复性的工作时可以考虑使用arcpy编写脚本来完成。
1.首先使用arcpy函数CreateGISServerConnectionFile()(在arcpy.mapping模块中)创建连接到 server服务器的连接文件。该函数的重要参数为:server_url;username;password。具体使用方法详见arcgis的帮助文档,里面包含函数的使用说明和例子。
2.使用arcpy.mapping中的CreateMapSDDraft()函数将mxd地图文档转换为服务定义草稿文件(.sddraft)
3.使用**AnalyzeForSD()函数分析.sddraft文件可能存在的错误、警告和消息,以便在将服务定义草稿文件转换为sd文件之前解决潜在的问题
4.使用
StageService()**过渡服务工具将服务定义草稿(.sddraft) 转换为服务定义(.sd)文件
5.使用 UploadServiceDefinition上载服务定义工具将服务定义 (.sd)文件上传并发布服务到指定的GIS服务器
这时已经生成了server服务
6.发布服务后,CreateMapServerCache_server创建地图缓存这个函数是生成的切片缓存的主要函数,需要设置很多参数,一定要注意。
7.最后,ManageMapServerCacheTiles_server进行切片
具体使用方法见帮助文档(其实帮助文档会比博客说的更清楚,所以一定要学会看文档)

具体代码

1.连接服务器

"""
out_name = 要创建的文件名称
server_url = server地址(ArcCatalog程序下/GIS服务器/arcgis on localhost_6080 (发布者)/右键属性中查看)
username = ArcGIS Server Manager用户名(如果忘记,可再安装一次ArcGIS_for_Server,无需卸载原有程序)
password = ArcGIS Server Manager密码
"""

out_folder_path = env.workspace
out_name = 'servercon.ags'
server_url = 'http://localhost:6080/arcgis/admin'
use_arcgis_desktop_staging_folder = False
staging_folder_path = env.workspace
username = '***'
password = '***'

servercon = arcpy.mapping.CreateGISServerConnectionFile("ADMINISTER_GIS_SERVICES",
                                                        out_folder_path,
                                                        out_name,
                                                        server_url,
                                                        "ARCGIS_SERVER",
                                                        use_arcgis_desktop_staging_folder,
                                                        staging_folder_path,
                                                        username,
                                                        password,
                                                        "SAVE_USERNAME")

2.生成草稿文件和动态服务文件

    sddraft = arcpy.mapping.CreateMapSDDraft(mxdname, sddraftname, servicename, 'ARCGIS_SERVER',servercon,False,foldername)
    arcpy.mapping.AnalyzeForSD(sddraftname)
    arcpy.StageService_server(sddraftname,sdname)
    arcpy.UploadServiceDefinition_server(sdname,out_name)

3.生成切片缓存
里面的参数什么的根据需要自己调整,参数说明还是要看帮助文档

    inputService = conname + '/' + foldername + '//' + servicename + '.MapServer'
    serviceCacheDirectory = arcpy.GetParameterAsText(2)
    # serviceCacheDirectory = 'F:/arcgisserver/directories/arcgiscache'  # 指定缓存切片地址
    tilingSchemeType = "NEW"
    scalesType = "CUSTOM"
    numOfScales = "12"
    dotsPerInch = "96"
    tileSize = "256 x 256"
    predefinedTilingScheme = ""
    tileOrigin = "-20037508.342787001 20037508.342787001"
    #scales = "3000;1500;750;375;150"
    scales ="591657527.591555;295828763.79577702;147914381.89788899;73957190.948944002;36978595.474472001;18489297.737236001;9244648.8686180003;4622324.4343090001;2311162.2171550002;1155581.108577;577790.55428899999;288895.27714399999;144447.638572"
    cacheTileFormat = "PNG"
    tileCompressionQuality = ""
    storageFormat = "EXPLODED"

    arcpy.CreateMapServerCache_server(inputService,serviceCacheDirectory,
                                      tilingSchemeType, scalesType,numOfScales,
                                      dotsPerInch,tileSize, predefinedTilingScheme,
                                      tileOrigin, scales,cacheTileFormat,
                                      tileCompressionQuality,storageFormat)
    arcpy.ManageMapServerCacheTiles_server(inputService, scales,'RECREATE_EMPTY_TILES')
    #arcpy.ConvertMapServerCacheStorageFormat_server(inputService)

注:

在使用arcgis发布服务时若地图的坐标系统不是WGS_1984_Web_Mercator_Auxiliary_Sphere坐标系,则将会自动转为该坐标系。但是使用arcpy时并不会自动转换吗,需要将坐标系进行投影转换,转为WGS_1984_Web_Mercator_Auxiliary_Sphere坐标,只有这样才可以成功发布生成切片缓存。

发布服务和切片

在这里插入图片描述

在这里插入图片描述

下载链接: https://download.csdn.net/download/qq_39590040/15817753?spm=1001.2014.3001.5501.


References:
[1]: https://blog.csdn.net/esrichinacd/article/details/7592908
[2]: https://blog.csdn.net/dahongdahong/article/details/51447680
[3]: https://blog.csdn.net/qq_40376439/article/details/104529254
[4]: https://desktop.arcgis.com/zh-cn/arcmap/10.3/analyze/arcpy/

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值