ArcGIS for Server入门教程_第五章_发布及使用服务

2
分享 2016-03-13
发布及使用服务
安装好ArcGIS for Server后,就可以准备发布Web GIS服务了。根据发布的服务类型不同,发布的步骤和操作方法稍有区别,但是大体的流程是相同的,可以归纳为以下几步:

在ArcGIS for Desktop中准备GIS资源-->连接到ArcGIS for Server--> 根据需求决定是否注册数据源--> 发布前在Service Editor编辑器中进行分析--> 解决错误和警告--> 将GIS资源发布为GIS服务。

下面以最常用的地图服务为例,介绍一下在Desktop中发布服务到Server上的流程,其他类型的服务发布可以在官方帮助文档中找到详细的操作步骤。

发布地图服务
在Server中发布地图服务前,需要先在Desktop桌面端准备好要发布的地图文档,包括所需的数据和渲染方式,比如颜色、线型粗细、文本标注等等,也就是要先设计好地图看起来应该是什么样子的。我们这里以微软亚洲研究院提供的GeoLife GPS轨迹数据集(http://research.microsoft.com/en-us/downloads/b16d359d-d164-469e-9fd4-daa38f2b2e13)中两个随机选取的GPS轨迹序列为例。这两个GPS轨迹点数据代表了某个参与研究的人员在两个不同的日期使用GPS设备(可能是智能手机)每隔1-5秒或5-10米记录的轨迹点,他/她可能在回家或去公司的路上,也可能在运动、购物、观光、徒步旅行、骑自行车等等。

首先在ArcMap中将两个点数据加载进来,设置好渲染的信息,比如一天的轨迹点用红色表示,另一天的用蓝色表示,颜色的深浅表示时间的先后,颜色越浅代表时间越靠前:



配置好地图文档的信息后,点击菜单栏File—Share As—Service,弹出发布服务向导,选择Publish a service:



下一步后提示要求选择一个与ArcGIS for Server的连接,如果之前没有已经存在的Server连接,点击右边的添加连接按钮
,弹出添加向导:



选择Publish GIS services,也就是以发布者的身份连接到Server。如果选择Administer GIS server则是以管理者的身份连接到Server,除了可以发布服务外还可以对站点和服务本身进行管理,是权限最大的一种方式。在发布服务时不可以选择Use GIS services,这个选项是为服务使用者提供的,只可以使用别人已经发布好的服务,而不可以向Server发布新的服务。我们这里的目的是发布一个地图服务,不需要对站点进行设置,所以选择发布者的身份连接就可以了,选择好后点击下一步,弹出连接属性框:



在Server URL处填写安装了ArcGIS for Server的服务器的url地址,如果是装在本机,可以使用http://localhost:6080/arcgis, 如果是其他机器,可以通过IP地址

http://192.168.100.123:6080/arcgis 或者域名 http://gisserver.domain.com:6080/arcgis 来访问。在下面的用户名和密码处填写站点管理员账号(不是ArcGIS Server账号),如果在创建时使用的是默认管理员账号,那么用户名为siteadmin。

创建好与ArcGIS for Server的连接后,在发布服务向导中选择这个连接,并填写地图服务的名称:



选择服务所在的路径,可以使用站点的根目录,也可以新建一个文件夹:



点击Continue后会弹出Service Editor服务编辑器,在编辑器中可以对服务的各项属性进行设置。在Capabilities选项卡中可以选择该服务想启用的功能,对于地图服务来说只需要启用Mapping即可:



在Item Description选项卡中填入关于这个服务的描述信息、标签,这样发布到互联网上以后其他人可以通过关键字搜索到这个服务:



填好后点击编辑器右上角的Analyze分析按钮
。在发布任何类型的服务前都必须先进行分析,通过分析可以检查出即将发布的服务中有哪些错误和潜在的性能瓶颈。点击分析按钮后会弹出Prepare准备窗口,在Prepare窗口中可看到分析结果:



分析结果有三种类型,Errors错误、Warnings警告和Messages消息。错误是必须要解决的问题,不解决就无法发布服务。警告是可能会影响服务性能、显示效果或者数据的问题,消息是一般的提示性的信息,警告和消息是可以选择性忽略的,不解决也可以成功发布服务。

在我们这个示例的分析结果中,可以看到有两条警告,提示的内容是数据源没有注册到Server所以会将数据拷贝到Server上。虽然将数据拷贝到服务器上可以保证服务器肯定能够访问到数据源,但是如果数据量很大,发布时从桌面端拷贝数据的时间就会很长,而且如果每个服务都拷贝一次数据,对服务器上的存储来说也会造成浪费。为了避免这些情况,可以将数据源注册到ArcGIS for Server上,这样在发布时就不会自动拷贝数据到服务器上,而且在发布服务时Server可以自动调整路径,保证其中的数据能被服务器访问到。

双击分析结果可以自动弹出相应的解决方法,比如双击上面的第一条高级警告,则会弹出注册数据源的窗口。由于GPS数据是存储在本地的File GDB中,可以将存储该GDB的文件夹注册到Server上:



注册过文件夹后再次点击Analyze,发现分析结果中已经没有关于拷贝数据的警告了:



点击Publish发布按钮
,等待服务打包、上传等过程后,看到服务成功发布的提示,就代表地图服务已经成功发布到ArcGIS for Server上了:



在ArcMap中的Catalog窗口或ArcCatalog中,可以看到已经连接上的ArcGIS for Server站点都有哪些,以及站点下都有哪些服务。在刚刚创建的ArcGIS for Server连接中,已经可以看到我们刚刚发布的地图服务GeoLifeGPSTrack了:



可以在ArcMap中直接将这个服务拖拽到地图显示控件上来查看,或者在Services Directory服务目录中查看。在所有程序--ArcGIS安装文件夹下打开Services Directory的快捷方式,或者直接在浏览器中输入url地址,如http://localhost:6080/arcgis/rest/services 打开服务目录,点击服务名称,即GeoLifeGPSTrack,进入服务页面,点击View In ArcGIS JavaScript,即可在浏览器中通过ArcGIS JS API快速查看刚刚发布的地图服务:





生成缓存
我们刚刚发布的是一个动态的地图服务,当客户端向Server发出请求,要求查看地图服务时,Server就会根据请求的范围生成图片,再把图片返回给客户端。另一个客户端如果请求查看另一个范围的地图时,Server又会生成一次图片并返回给客户端。由于这些图片是服务器收到请求以后才开始生成的,也就是动态的根据请求范围生成的,所以速度会比较慢,访问的时候根据网络情况,可能要等待比较长的时间才能看到地图。这时我们可以使用地图缓存来提高访问的速度。地图缓存就是对服务进行预处理,提前在设计好的比例级别下把地图切割成小块的地图切片,也叫瓦片(Tile),也就是小块的图片,保存在服务器上,这样当接收到请求时服务器就可以直接把已经生成好的瓦片拼起来返回给客户端,而不再动态实时的生成图片了。地图缓存技术减少了GIS服务器和数据库服务器的负担,是提高Web GIS服务质量的一种有效途径。



使用动态的地图服务还是地图缓存需要考虑两个问题,一是地图需要更新的频率有多高,二是需要缓存的范围有多大。由于缓存表现的是地图某一个时刻的样貌,所以缓存最适合不经常变化的地图,比如街道地图、地形图、影像图和其他基础地图等。如果数据经常变化,也可以采用定期更新缓存的方式,但是如果需要表现的是实时数据,则不适合用地图缓存,而更适合用动态地图的方式。根据地图的复杂程度和切图的范围,生成缓存可能需要很长的时间完成,如果能够隔离出频繁变化的区域进行单独更新,则可以大大提高重建缓存的效率。

我们下面就来看看如何为刚刚发布的动态地图服务创建缓存。在ArcMap的Catalog窗口或ArcCatalog中连接到服务器,在需要创建缓存的服务上右键选择Service Properties服务属性,弹出Service Editor窗口:



在左侧选项卡中选择Caching缓存,然后在右侧缓存选项中首先选择Using tiles from a cache使用地图缓存,然后在下拉框中选用ArcGIS Online/Bing Maps/Google Maps的切片方案。切片方案定义的是缓存将使用的比例尺级数、每层的比例尺是多少、瓦片尺寸、起点坐标、图片格式等等属性。除了选用预设的ArcGIS Online/Bing Maps/Google Maps在线地图使用的切片方案外,还可以导入自定义的切片方案,或采用ArcGIS建议的切片方案。选择好切片方案后,可以选择在哪些比例尺级别下创建缓存,并能够看到下面提供的缓存预估大小。由于我们使用的数据比较简单,范围也比较小,所以缓存的文件大小只有几兆,可以在最下面选择Update cache automatically,也就是在发布服务的同时就自动更新缓存。但是如果缓存文件很大,最好还是选择Update cache manually,可以在合适的时间集中进行缓存的工作:



点击确定后即将动态的地图服务设置为使用地图缓存了。但是地图缓存要使用的切片文件还没有生成,在Catalog窗口或ArcCatalog中右键单击服务,选择Manage Cache管理缓存,在子菜单中选择Manage Tiles管理切片,即会弹出地理处理工具Manage Map Server Cache Tiles工具,选择要更新的比例尺级别、更新模式和范围等属性后,点击确定即会开始切图,我们这里都选用默认的选项即可:



工具执行完成后切片文件就生成好了,可以在服务器目录下查看切片文件。浏览至服务器目录某个比例尺级别的文件夹下,如:D:\arcgisserver\directories\arcgiscache\GeoLiftGPSTrack\Layers\_alllayers\L18

可以看到有一个后缀名为R*C*.bundle的文件存在,这个bundle文件是ArcGIS for Server创建的紧凑型切片包,也就是把这个比例尺级别下所有生成的瓦片打包成了一个bundle文件,文件名中的R代表的是16进制的行号,C代表的是16进制的列好。如果在定义切片方案时使用的不是紧凑型存储格式,而是松散型存储,则在文件夹下看到的不是一个bundle文件,而是所有的图片格式的文件。使用紧凑型切片可以减少磁盘占用量,更方便的管理和拷贝切片。关于切片的机制、松散型和紧凑型的区别等深入和细节的问题,都可以去帮助文档中找到答案。

测试服务是否正常的使用了切片文件可以借助Firefox浏览器中内置的功能。首先在Firefox中使用ArcGIS JS API快速查看缓存的服务,在地图上右键单击,选择查看页面信息。在页面信息窗口中,单击媒体按钮。检查列表中显示的影像。如果能看到引用服务器缓存目录的 URL,则可以确信缓存正被使用:



使用地图服务
还记得Web GIS应用的模式吗?Web GIS应用 = 基础底图 + 操作图层 + 任务,刚刚发布的地图服务就可以作为我们的操作图层,也就是业务图层来使用。下面我们就来看看如何用这块积木(虽然只有一块,但这只是迈向Web GIS世界的第一步)快速搭建一所房子。
登录ArcGIS Online网站(如果没有正式账户可以在官网申请60天的免费试用账户),选择Map地图,然后点击添加按钮
,在下拉列表里选择Add Layer From Web从Web上添加图层,在弹出的添加对话框中选择ArcGIS Server Web Service,然后填写我们刚发布的地图服务的url地址,点解Add Layer添加图层:



接下来为我们的应用选择底图。点击Basemap底图按钮
,在弹出的共享对话框中选择访问权限,如果想设为公开,可以选择Everyone,即共享给所有人,然后选择CREATE A WEB APP创建Web应用:



在创建新Web应用的对话框中选择Web AppBuilder,填写相关信息后点击GET STARTED,开始配置Web应用:


Web AppBuilder for ArcGIS是一个基于浏览器的工具,可以通过配置而不用写代码来生成Web应用程序。在Web AppBuilder中我们可以选择喜欢的主题、样式、布局,还可以添加和配置一些Widget微件,比如打印、图表、缩略图等等。配置好后点击Save保存,再点击Lauch启动
,即可在浏览器里看到我们刚刚配置好的Web应用程序了:



甚至可以查看Web App在不同的移动设备上的显示效果:



当然真正的Web应用程序可能还会复杂的多,需要的功能也不一定都能够通过配置来实现,但是万变不离其宗,也就是需要通过对服务的聚合来完成。能够提供高质量的Web服务,才能做好Web应用的幕后英雄,真正发挥Web GIS的力量。

小结
发布地图服务可以通过ArcMap连接到ArcGIS for Server来完成,首先在ArcGIS for Desktop中准备GIS资源,然后连接到ArcGIS for Server,如果需要,可以先将数据源注册到服务器上以避免在发布时自动拷贝数据,发布前在Service Editor编辑器中进行分析,双击分析结果解决错误和警告后就可以将GIS资源发布为GIS服务了。对动态地图服务创建缓存是提高Web GIS服务质量的一种常用方法。对地图进行缓存时,服务器会根据切片方案中设计好的一组比例尺级别来创建瓦片,创建后除非重建或更新缓存,否则无法更改地图的显示样式。所以在构建缓存前要对切片方案进行设计和规划,以保证地图在各个比例尺级别下都有良好的显示效果。动态地图服务适合于数据更新频率高、需要近实时显示的地图,而缓存地图服务适合不会经常变化的地图。

已发布的Web服务可以通过聚合叠加组合成Web应用。通过Web AppBuilder for ArcGIS是一个基于浏览器的工具,可以快速的通过配置来生成Web应用,而不需要编写代码,非常适合创建简单的Web GIS应用。复杂需求的Web应用可以通过自定义开发调用服务的方式实现,或者可以使用Web AppBuilder开发者版本。

思考题
1. 除了可以在桌面软件中发布服务,还可以通过Server Manager在浏览器端发布服务。发布的流程为先在桌面软件中配置地图文档,保存为service definition服务定义文件(*.sd),然后在Server Manager中将sd文件发布为服务。根据帮助文档中的教程,在Server Manger中发布一个地图服务:
http://server.arcgis.com/zh-cn/server/latest/publish-services/windows/publishing-a-service-definition-to-the-server-in-manager.htm
 

本入门教程所有章节连接:
ArcGIS for Server入门教程_第一章_开始之前: http://zhihu.esrichina.com.cn/?/article/538
ArcGIS for Server入门教程_第二章_Web GIS入门: http://zhihu.esrichina.com.cn/?/article/539
ArcGIS for Server入门教程_第三章_认识ArcGIS for Server: http://zhihu.esrichina.com.cn/?/article/540
ArcGIS for Server入门教程_第四章_规划ArcGIS for Server站点: http://zhihu.esrichina.com.cn/?/article/541
ArcGIS for Server入门教程_第五章_发布及使用服务: http://zhihu.esrichina.com.cn/?/article/542
ArcGIS for Server入门教程_第六章_服务及站点管理: http://zhihu.esrichina.com.cn/?/article/543
ArcGIS for Server入门教程_第七章_案例分析: http://zhihu.esrichina.com.cn/?/article/544
 

5 个评论

求助,微软这个GPS文件咋打开?我安装操作步骤打开不了,格式不对么?
解压出来的文件都是以.plt结尾的,无法通过ArcMap添加。
可以直接改成.txt,修改一下表头字段,然后就可以通过add xy data的方式加到arcmap中了
我在 管理缓存>>管理切片 操作时,管理地图服务器缓存切片失败,提示是:工作空间未连接。这应该怎么办呐?
请问如果创建地图缓存是否意味着需要把数据拷贝到服务器上呢?而不仅仅是将数据源注册到服务器上

要回复文章请先登录注册