工作需要研发一个大平台,需要有发布地图服务的功能。

之前做过一个平台,使用 GeoServer 发布地图服务,后台使用 Java+SpringBoot,前端使用 Vue+OpenLayers,平台整体比较稳定,但是图层符号化配色那块比较难搞。

后面担心其他的单位都用的是 ArcGIS 那一套。所以准备研发一套基于ArcGIS 的平台。初步决定使用 Arcpy 调用 ArcGIS Server 发布地图服务,将 Arcpy 做成能发布地图服务的插件,后台还是使用 Java+SpringBoot,前端可能使用 Vue+OpenLayers/esri-leaflet,准备边做边写多几篇文章。目前写第一篇 Arcpy 发布地图服务。

一、发布的流程

(1)第一步,调用arcpy.mapping中的CreateMapSDDraft()函数,将地图文档文件(.mxd)转换为服务定义草稿文件(.sddraft),该文件由一个地图文档、服务器信息和一组服务属性组合而成。

(2)第二步,调用StageService Tool(.sd,过渡服务工具),arcpy.StageService_server方法,编译能成功发布 GIS 资源所需的所有必要信息。

(3)第三步,使用Upload Service Definition Tool(上载服务定义处理工具)上传服务定义文件,并将其作为GIS服务发布到指定的GIS服务器。此步骤将获取服务定义文件、将其复制到服务器、提取所需信息并发布 GIS 资源。

二、代码

# -*- coding:UTF-8 -*-import arcpy
from arcpy import env
server_username='arcgis'
server_password='123456'
env.workspace="D:/data/Test"
wrkspc="D:/data/Test"#创建serve连接
connection_type='ADMINISTER_GIS_SERVICES'
out_folder_path="D:/data/Test/"
out_name='DLHX.ags'
server_url='http://localhost:6080/arcgis/admin'
use_arcgis_desktop_staging_folder=False
staging_folder_path=out_folder_path
arcpy.mapping.CreateGISServerConnectionFile(connection_type,out_folder_path,out_name,server_url,'ARCGIS_SERVER',use_arcgis_desktop_staging_folder,staging_folder_path,server_username,server_password,"SAVE_USERNAME")
mxdname = wrkspc+'/DLHX.mxd'
mapDoc=arcpy.mapping.MapDocument(wrkspc+'/DLHX.mxd')
service_name='DLHX0313'
sddraft=wrkspc+'/'+service_name+'.sddraft'
sd=wrkspc+'/'+service_name+'.sd'
summary='Tese use sd'
tags='DLHX,LZ,MAP'
con=wrkspc+'/'+out_name
analysis=arcpy.mapping.CreateMapSDDraft(mapDoc,sddraft,service_name,'ARCGIS_SERVER',con,True,'Test',summary,tags)
if analysis['errors']=={}:arcpy.StageService_server(sddraft, sd)arcpy.UploadServiceDefinition_server(sd, con)
else:print analysis['errors']

两个重要方法说明:

1、创建草图文件方法CreateMapSDDraft (map_document, out_sddraft, service_name, {server_type}, {connection_file_path}, {copy_data_to_server}, {folder_name}, {summary}, {tags})

参数 说明 类型
map_document Map Document 类型的对象,即一个mxd文档。 mxd类型
out_sddraft Service Definition Draft (.sddraft) 文件输出路径。 string
service_name 服务的名字,由字母和数字组成,不允许使用空格或特殊字符,长度不得超过120。 string
server_type 服务的类型,如果未提供「connection_file_path」参数,则必须提供「server_type」。如果提供了「connection_file_path」参数,则从连接文件中获取「 server_type」。
• ARCGIS_SERVER — ArcGIS for Server 服务类型,默认值。
• FROM_CONNECTION_FILE — 从 connection_file_path 参数获取服务类型。
• SPATIAL_DATA_SERVER — Spatial Data Server 服务类型,ArcGIS 10.2.1 版本之后就不再支持。
• MY_HOSTED_SERVICES — My Hosted Services 服务类型,应用与 ArcGIS Online 或者 Portal for ArcGIS 的托管服务。
string
connection_file_path ArcGIS for Server connection file (.ags) 文件的路径。通常在ArcCatalog创建后的路径为「C:\Users\Administrator\AppData\Roaming\ESRI\Desktop10.2\ArcCatalog」 string
copy_data_to_server mxd文档的数据是否要拷贝到服务器中。当数据没有在服务器内被注册时,此参数应设为false,反之应设为true。
当「server_type」设置为SPATIAL_DATA_SERVER时,「copy_data_to_server」将始终为False。 Spatial Data Server 服务始终使用已注册的数据,因此不会将数据复制到服务器。
当「server_type」设置为MY_HOSTED_SERVICES时,「copy_data_to_server」将始终为True。My Hosted Maps services 服务始终将数据复制到服务器。
Boolean
folder_name 服务发布的文件夹名,如果不存在则会新建,默认值None对应的是根文件夹。 String
summary 服务的摘要。 String
tags 服务的标签。 String

2、GIS服务器连接:

arcpy.mapping.CreateGISServerConnectionFile(connection_type, out_folder_path, out_name, server_url, 'ARCGIS_SERVER', use_arcgis_desktop_staging_folder, staging_folder_path, username, password, True)

3、编译能成功发布GIS资源所需的所以必要信息:

arcpy.StageService_server(sddraft, sd)

4、上传服务定义文件,并将其作为GIS服务发布到指定的GIS服务器:

arcpy.UploadServiceDefinition_server(sd, con)

三、遇到的问题

1、编码问题:

解决办法:在代码前面加上:

# -*- coding:UTF-8 -*-

2、路径问题

之前运行时显示找不到 mxd 文件的路径,后天单步调试发现是因为路径中少了“/”。

3、PyCharm调试时,因为我之前电脑用的是 python3.6,需要换到 ArcGIS 安装时安装的 python2.7。但是不知道为啥一直换不去,试了好几遍才成功。

四、运行结果

五、参考博客

https://blog.csdn.net/gislaozhang/article/details/90900227?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-4&spm=1001.2101.3001.4242

https://www.cnblogs.com/lLazy/p/10663157.html

Arcpy发布地图服务相关推荐

  1. 通过Arcpy发布地图服务

    1.发布地图服务的流程 使用 ArcPy 将地图文档自动发布到 GIS 服务器的流程分为四步: 第一步,运行 CreateMapSDDraft 函数.CreateMapSDDraft 的输出是服务定义 ...

  2. ArcGIS二次开发——Arcpy批量自动化发布地图服务

    参考博客 补充:在发布地图服务前,首先需要连接到ArcGIS for Server服务器,需要利用到arcpy.mapping.CreateGISServerConnectionFile接口,,在Ar ...

  3. geoserver 通过代码实现发布地图服务

    转自原文 geoserver 通过代码实现发布地图服务 GeoServer:代码实现批量发布地图服务 利用GeoServer发布WCS服务,那么如果我有很多数据需要进行发布,这样利用GeoServer ...

  4. 利用 PortableBasemapServer 发布地图服务

    前段时间需要给自己的C/S系统加一个地图,但是没有数据,于是就想到了使用网上的切片地图,但是C/S系统又不能联网,于是就想本地发布切片服务来使用. 本来想用ArcGIS Server来发布从网上下载的 ...

  5. GeoServer自动发布地图服务

    1 NetCDF气象文件自动发布案例 GeoServer是一个地理服务器,提供了管理页面进行服务发布,样式,切片,图层预览等一系列操作,但是手动进行页面配置有时并不满足业务需求,所以GeoServer ...

  6. Arcgis连接sql server发布地图服务详解

    Arcgis+sql server发布地图服务详解 1.ArcGIS中创建企业地理数据库 通过ArcGIS创建一个地理数据库至SQLServer数据库中. 1.需要有一个登陆ArcGIS的管理员账号, ...

  7. geoserver发布地图服务后不能预览,竟然变成下载WMS文件

    geoserver发布地图服务后不能预览,竟然变成下载WMS文件 问题描述:geoserver发布地图服务后不能预览,竟然变成下载WMS文件,用记事本打开下载文件显示错误信息:java.lang.Nu ...

  8. ArcSDE与SQL sevrver的连接、ArcSDE导入数据、ArcGIS Server发布地图服务

    本文主要是关于ArcSDE的使用. 一.软件环境 ArcGIS10.2,ArcSDE10.2,数据库为SQL Server 2008R2 及以后版本(本人电脑上是2012版本). 二.软件安装 1.S ...

  9. 使用Arcmap往服务器上发布地图服务

    要在服务器上发布地图服务,只需要在服务器上把ArcGIS server安装好就可以了,然后有服务器的ip地址就可以在别的电脑上往服务器上发布服务了 1.先将地图配置好,然后选择文件菜单栏下的共享为-- ...

最新文章

  1. 线性连续时间状态空间模型的离散化及实例
  2. USB基础---OHCI、UHCI、EHCI和XHCI控制器简介
  3. XSS 前端防火墙 —— 天衣无缝的防护
  4. ruby 将字符转数字计算_Ruby程序计算一个数字中的位数
  5. js中遇到的一个错误Uncaught SyntaxError: missing )after argument list
  6. SpringBoot 精通系列-SpringBoot如何操作Memcache
  7. [教程]Tensorflow + win10 + CPU + Python3.6+ 安装教程
  8. Spring定时任务@scheduled多线程的使用(@Async注解)
  9. C++ Debug:fatal error C1083: Cannot open include file: 'streams.h': No such file or directo 2010-7-5
  10. C语言实现蔡勒公式求周几
  11. windows7 C盘清理(图解)
  12. 超级课程表查成绩显示服务器错误,超级课程表怎么查询期末成绩
  13. 假设检验与常见的统计检验方法
  14. windows x64和x86区别
  15. Typora怎么插入图片链接,并设置图片居中
  16. 电脑开机启动项选择快捷键大全
  17. 团组织关系的转接流程
  18. OMNIPAY(欧米派、欧米链)-全球领先的多链数字钱包
  19. Notepad++增加读取二进制文件的功能——HexEditor的所有
  20. 鼎力测试软件安不上,e5 2665 安装成功,但是不能睿频

热门文章

  1. stm32毕设分享 自动售货机设计与实现(源码+硬件+论文)
  2. 基于微信小程序的在线考试系统源码
  3. 配置fckeditor
  4. FCK编辑器使用手册
  5. 移动硬盘安装西门子,台达,Eplan等工业自动化软件
  6. 云平台包含的基本特征介绍
  7. docker tag 详解
  8. hdu3833 YY's new problem--哈希表
  9. Fuji FinePix S5Pro 全面介绍(转自作者-全钟海)
  10. echarts 飞线、轨迹图与地方地图联动