吴 迪,赵之年,李 冰
(1.国家测绘地理信息局 黑龙江基础地理信息中心,黑龙江 哈尔滨 150081;2. 雪城大学,美国 纽约 13244-1170)
引用著录:吴迪,赵之年,李冰.基于ArcGIS Server的GIS Web服务自动发布关键技术研究[J].测绘工程,2017,26(12):45-49.
DOI:10.19349/j.cnki.issn1006-7949.2017.12.009
基于ArcGIS Server的GIS Web服务自动发布关键技术研究
吴 迪1,赵之年2,李 冰1
(1.国家测绘地理信息局 黑龙江基础地理信息中心,黑龙江 哈尔滨 150081;2. 雪城大学,美国 纽约 13244-1170)
Web GIS技术主要采用GIS Web服务方式对外提供资源访问和空间分析能力。GIS Web服务提高系统资源利用率,扩大信息使用范围,但GIS Web服务主要依赖于服务器端GIS平台提供的可视化工具进行后台发布,前台用户无法根据自己业务需要自动发布GIS Web服务。文中基于ArcGIS Server平台研究一种GIS Web服务自动发布方案,以双丰林业局林政资源服务系统的在线采编模块为例,阐述该案例的应用。
ArcGIS Server;Web GIS技术;服务自动发布;在线采编
互联网技术的出现悄然改变了的人们的生活方式,互联网为信息的传输、共享甚至订阅、分析提供了通道与载体,同样为地理信息的使用和分享提供了平台和基础[1]。WebGIS是网络环境下的一种兼具存储、处理、分析、显示与应用地理信息的计算机系统[2-3]。基于REST服务的Web GIS是当前网络GIS的主流开发方式,网络用户可以通过GIS服务器发布GIS Server服务在网络的任意位置访问地理信息资源,浏览空间数据,制作专题图,进行空间检索和查询,并对空间数据进行复杂的空间分析并返回结果[4,6]。当前主流的GIS服务器主要有ESRI的ArcGIS Server、超图的SuperMap iServer以及开源的GeoServer等[7]。以上产品的GIS Web服务主要依赖于服务器端GIS平台提供的可视化工具,经过一定步骤的手动操作配置进行人工发布。当前台用户动态发布自定义专题地图服务时,现有的服务发布方式无法满足需求,本文基于ArcGIS Server研究GIS Web服务自动发布的关键技术并将该技术方案应用到双丰林业局林政资源服务系统的在线采编模块的开发中。
1.1 ArcPy
ArcPy是一个以成功的Arcscripting模块为基础并继承了Arcscripting功能进而构建成的站点包。目的是为以实用高效的方式通过Python指定地理数据分析、数据转换、数据管理和地图自动化创建基础。ArcPy包括地图制图模块、空间分析模块、数据访问模块、网络分析模块、时间模块、地统计分析模块等[8-11]。
1.2 ArcToolbox工具
ArcToolbox工具相当于ESRI将ArcGIS桌面软件的组合功能模块化、具体化,用户可以根据自己的业务需求,通过ArcPy实现相应逻辑自定义ArcToolbox工具[12]。
1.3 GP服务
GP服务是Geoprocessing服务的简称,Geoprocessing包含了一系列地理数据处理功能,例如缓冲区分析、叠加分析等。用户可以将在桌面端使用的ArcToolbox工具发布成GP服务供客户端调用,完成特定的功能[13]。
基于ArcGIS Server 的GIS Server服务自动发布的主要技术内容主要包括3个过程:地图服务自动发布工具制作、后台GP服务发布、GP服务前端调用。流程如图1所示。
图1 GIS Server服务自动发布技术流程
2.1 地图服务自动发布工具制作
利用ArcPy编写地图服务自动发布的Python脚本,基于Python脚本制作ArcToolbox工具。Python脚本实现的功能包括图层添加、服务发布两个过程。
2.1.1 图层添加
前端用户将空间数据及地图文档上传至服务器的存储空间内,把空间数据的相应图层添加到地图文档中。该功能基于ArcPy制图模块的AddLayer函数实现,AddLayer函数可以根据通用位置参数向地图文档中的数据框加载图层。核心代码如下:
def AddLayerToMxd(SourceMxd,InFeatures,OutMxd):
mapDoc=arcpy.mapping.MapDocument(SourceMxd)
df=arcpy.mapping.ListDataFrames(mapDoc)[0]
theShape=InFeatures
addLayer=arcpy.mapping.Layer(theShape)
arcpy.mapping.AddLayer(df,addLayer,"AUTO_ARRANGE")
arcpy.RefreshActiveView()
arcpy.RefreshTOC()
mapDoc.saveACopy(OutMxd)
2.1.2 服务发布
添加图层的地图文档进行服务发布。利用ArcPy进行服务发布主要包括创建连接文件、服务定义草稿、服务定义草稿分析、过渡服务定义、过渡定义文件上传5个过程。
创建连接文件。创建连接到ArcGIS Server的连接文件用于发布GIS服务。该过程通过ArcPy制图模块的CreateGISServerConnectionFile函数实现。
服务定义草稿。服务定义草稿文件生成是将地图文档自动发布到GIS Server的第一步。服务定义草稿由地图文档、有关服务器的信息和一组服务属性组合而成,有关服务器信息包括服务器连接或发布到的服务器类型,正在发布的服务类型,服务的元数据及数据参考;服务属性包括服务是否支持缓存(缓存设置)及服务的其他附加功能。服务定义草稿主要通过ArcPy制图模块的CreateMapSDDfraft函数实现。
服务定义草稿分析。分析服务定义草稿文件以识别可能需要解决的错误和其他潜在问题生成服务定义草稿文件。服务定义草稿分析通过ArcPy制图模块的AnalyzeForSD函数实现,函数返回错误、警告和消息等信息。
过渡服务定义。服务定义草稿分析后,进行过渡服务定义,将服务定义草稿文件和服务定义草稿分析文件转为完全合并的服务定义文件。过渡过程会编译能成功发布GIS资源所需的所有必要信息。过渡服务定义通过ArcPy制图模块的StageService_Server函数实现。
过渡定义文件上传。将服务定义文件上传至作为GIS服务发布特定的GIS服务器上。通过ArcPy制图模块的UploadServiceDefiniton_server函数实现。
服务发布的核心代码如下:
def PublishService(Workspace,OutMxd,Con,ServiceName,Summary,Tags):
wrkspc = Workspace
mapDoc = arcpy.mapping.MapDocument(OutMxd)
service = ServiceName
sddraft = wrkspc + service + '.sddraft'
sd = wrkspc + service + '.sd'
summary = Summary
tags =Tags
analysis = arcpy.mapping.CreateMapSDDraft(mapDoc, sddraft, service, 'ARCGIS_SERVER',con, True, None, summary, tags)
if analysis['errors'] == {}:
arcpy.StageService_server(sddraft, sd)
arcpy.UploadServiceDefinition_server(sd, Con)
else:
print analysis['errors']
2.2 后台GP服务发布
将制作好的地图服务自动发布工具,通过服务器端ArcGIS Desktop的服务发布工具及ArcGIS Sever,以GP服务形式进行发布。用户可以在前端调用GP服务执行后台的地图服务自动发布工具。
2.3 GP服务前端调用
基于ArcGIS提供的ArcGIS API for Javascript Web API开发接口,进行前端调用,执行GP服务。ArcGIS API for Javascript 是根据JavaScript技术实现的一组脚本,作为将GIS地图和任务嵌入到Web应用程序的轻量级方式,它能快速创建有效地融合样式的Web应用程序[14-15],前端GP服务采用异步调用的方式进行执行。核心代码如下:
Var gpServiceUrl="";
Var gp = new Geoprocessor(gpServiceUrl);
gp.submitJob(parames, completeCallback, statusCallback);
双丰林业局林政资源服务系统在线采编模块的需求是前端用户基于影像底图服务在线采编地物(如耕地、林地、建筑用地)等空间信息及属性信息,采编地物的类型和属性信息不固定,采用传统手动后台要素服务的发布方式不能满足该模块需求,服务自动发布方案可以对该模块功能实现提供技术支撑。
3.1 在线采编模块设计
在线采编模块分为两个功能:新建图层和在线编辑两个功能。
新建图层,前端用户设定图层名、图层类型(如点、线、面)及属性信息(字段名、字段别名、字段类型),服务后台根据前端用户设定自动发布可编辑的要素服务,并将要素服务名称加载到图层列表中。通过勾选相应图层名称,加载相应要素图层进行编辑。
在线编辑功能,勾选要编辑图层,点击编辑按钮,移动鼠标在地图上勾画出相应图层,进行属性的录入,完成编辑。在线编辑功能,同时可以进行图形属性的修改及删除。
3.2 在线采编功能实现
3.2.1 新建图层
在线编辑功能调用的服务须为要素服务。首先在服务器端的ArcGIS SDE数据库中创建要素数据集并对该数据集进行版本注册和添加GolbalID操作。地图服务自动发布工具中添加新建要素层和添加属性字段两个功能并设置图层名、图层类型及属性字段的输入参数见图2。
新建要素层通过ArcPy的CreateFeatureClass_management函数实现,添加数据通过ArcPy的AddField_management函数实现。输入参数的接受通过ArcPy的GetParameter函数实现。属性字段参数的定义规则为:
“{FeatureName:字段名,Geometry:要素类型,Fields:[FiledName:字段名称,FieldType:字段类型,FieldAlias:字段别名]}”。
添加新建要素层和添加属性字段两个功能后重新生成地图服务自动发布工具,按照地图服务自动发布方案经后台GP服务发布及前端GP服务调用两个过程,发布完成用户自定义的要素服务。同时将生成的服务名添加到采编图层列表中,见图3。
图2 新建图层
图3 采编图层列表
3.2.2 在线编辑
前台在线编辑功能使用ArcGIS API for Javascript的TemplatePicker和Editor两个部件实现,见图4。核心代码如下:
图4 在线编辑界面
Var templatePicker = new TemplatePicker({
featureLayers: templateLayers,
grouping: true,
rows: "auto",
columns: 3
}, "templateDiv");
templatePicker.startup();
var params = {settings: settings };
myEditor = new Editor(params, 'editorDiv');
myEditor.startup();
本研究基于ArcGIS Server平台、ArcPy、Python语言形成一种GIS Web服务自动发布方案,并应用在双丰林业局林政资源服务系统在线采编模块的开发中,该方案满足项目开发的功能需求,提高了系统的灵活性与交互性,取得了良好的应用效果。本研究结果在在线制图、在线采编、在线数据交互等应用中具有较好的前景。
[1] 陈於立.ArcGIS开发权威指南[M].北京:电子工业出版社,2015.
[2] 黄颖,郭明强,罗显刚,等.WebGIS中GIS服务器负载均衡研究与实现[J].测绘科学,2009,34(1):182-183.
[3] 刘南.WebGIS原理及其应用[M].北京:科学出版社,2002.
[4] 刘光,曾敬文,曾庆丰.WebGIS从基础到开发实践:基于ArcGIS API for JavaScript[M].北京:清华大学出版社,2015.
[5] 敖杰刚,王志红.基于ArcGIS Server的REST技术综述[J].测绘标准化,2010(4):13-15.
[6] 张维.基于Flex与ArcGISServer的WebGIS研究与实现[D].南昌:东华理工大学,2012.
[7] 赵卫平,李晓静.基于GeoTools的地图服务快速发布系统研究[J].测绘与空间地理信息,2017,40(7):137-138.
[8] “ArcGIS Help”[OL].[2017-03-12]http://resources.arcgis.com/zh-cn/help.
[9] 田学志.基于Python的Arcgis地理处理应用研究[J].计算机光盘软件与应用,2013(7):46-46.
[10] Paul A. Zandbergen,李明巨.面向ArcGIS的Python脚本编程[M].北京:人民邮电出版社,2014.
[11] 邵保华,田学志.谈Python在Arcgis地理处理中的应用[J].林业勘查设计,2012(2):99-100.
[12] 徐国庆,顾钰培,赵明瑜.在ArcToolbox中实现用户自定义工具[J].测绘与空间地理信息,2014(8):131-132.
[13] 靖常峰,盛林,杜明义.Web环境下基于GP服务的降雨分布图全自动制图探索[J].地理信息世界,2013(3):74-78.
[14] 李道震,张长生,强小俊,等.基于ArcGIS Server的高铁基础设施安全监测管理系统研究[J].测绘工程,2016,25(6):70-75.
[15] 宗恒康.基于ArcGIS Server REST API的安全生产监管信息系统的设计与实现[D].山东青岛:山东科技大学,2011.
[责任编辑:王文福]
ResearchontheTechnologieofGISWebserviceautomaticpublishingbasedonArcGISServer
WU Di1, ZHAO Zhinian2, LI Bing1
(1.Heilongjiang Geomatics Center of NASMG, Haerbin 150081, China;2.Syracuse University,NY,13244-1170,LIS)
With the continuous development of Internet technology, the current Web GIS technology mainly uses GIS Web services to provide resources access and spatial analysis capabilities. The GIS Web service can improve the utilization of system resources, and expand the scope of the use of information, but the release of GIS Web services mainly relies on the server provides GIS platform visualization tool release background, the users, according to their own business, need the dynamic release of GIS Web service. The ArcGIS Server platform is studied based on the automatic release scheme of a GIS Web service. The online cataloging module resource service system taking Shuangfeng Forestry Bureau as an example, this paper introduces the application of the program which has a good effect.
ArcGIS Server;Web GIS;service publishing;online editing
TP393.2
A
1006-7949(2018)01-0045-05
2017-03-18
吴 迪(1987-),女,工程师,博士.