码迷,mamicode.com
首页 > 其他好文 > 详细

如何基于谷歌地图的Server缓存发布Image Service服务

时间:2014-09-03 13:09:06      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:谷歌地图   arcgis缓存   海量数据   google maps   caching   

如何基于谷歌地图的Server缓存发布Image Service服务
第一步:下载地图数据


下载安装水经注万能地图下载器,启动时只选择电子.谷歌(这里可以根据自己的需要选择),如下图所示。


bubuko.com,布布扣


找到成都后框选下载成都区域,如下图所示。


bubuko.com,布布扣


双击新建任务,选择1到19级,如下图所示。


bubuko.com,布布扣


第二步:导出 ArcGIS Server 服务


下载完成后,询问是否导出,点击选择“是”;然后在列表的任务例表中选择“成都”,再点击“确定”显示“导出图片数据”对话框,如下图所示。

bubuko.com,布布扣


在该对话框中选择导出类型为“瓦片:ArcGIS Server”;保存路径为“c:\arcgisserver\directories\arcgiscache”;保存类型为“PNG(*.png)”,最后点击“输出”按钮开始导出数据,结果如下图所示。

bubuko.com,布布扣


需要说明的是,如果瓦片数量特别多(如100万张以上),在导出时就要选择导出到ArcGIS的缓存目录(如“c:\arcgisserver\directories\arcgiscache”)以方便使用。


第三步:导出临时数据


导出临时数据的目的在于快速构建一个Image Server服务,它的用途在后面会详细讲述。
在下载器中选择之前下载的任务,然后在“查看下载结果”区域点击“导出拼接图片”工具,如下图所示。


bubuko.com,布布扣


这里只需要选择几个较小的级别即可,数据越少越好;另外,需要特别注意的是保存路径一定要修改一下,要确保与之前的路径不同,以避免配置文件被覆盖,如下图所示。

bubuko.com,布布扣


导出结果如下图所示。

bubuko.com,布布扣


为了便于区别于之前的导出结果,这里我们把“成都_ArcgisServerTiles”文件夹改为“成都_Temp”,如下图所示。

bubuko.com,布布扣


第四步:新建Image Services服务
启动ArcCatalog 10.2,在“Folder Connections”目录上单击右键并选择“Connect To Folder...”菜单,如下图所示。

bubuko.com,布布扣


在目录树中选择“D:\SGDownload”目录(即临时数据存放的目录)并点击“确定”按钮完成选择,如下图所示。

bubuko.com,布布扣


以上设置完成后,“成都_Temp”将在树中显示,如下图所示。

bubuko.com,布布扣


在“成都_Temp”上单击鼠标右键,并在菜单中选择“Share As Image Service...”,将显示如下图所示对话框。

bubuko.com,布布扣


点击“下一步”,将影像服务的名称改为“成都”,如下图所示。


bubuko.com,布布扣


再点击“Continue”,如下图所示。

bubuko.com,布布扣


在显示的“Service Editor”对话框中分别选择“Caching”选项中的“Using tiles from a cache”和“ArcGIS Online/Bing Maps/Google Maps”参数,如下图所示。

bubuko.com,布布扣


然后,点击右上角的“Publish”发布,将显“Copying Data to Server”对话框,如下图所示。

bubuko.com,布布扣


点击“OK”按钮,将开始将数据复制到服务器并进行打包处理,如果数据量大,这个过程会非常花时间,这就是我们之前只选择少量数据的重要原因。

bubuko.com,布布扣


处理完成后,提示发布成功,点击“OK”按钮可以关闭提示,如下图所示。


bubuko.com,布布扣


这里我们将看到一个名叫“成都”的Image Service影像服务,如下图所示。

bubuko.com,布布扣


同时,在ArcGIS缓存目录“C:\arcgisserver\directories\arcgiscache”也会生成“成都_ImageServer”缓存目录,如下图所示。

bubuko.com,布布扣


但我们打开目录后,会发现文件是紧凑型的缓存文件,理论上这样的文件对访问速度是有好处的,但对于有上100万张的瓦片打包的话,需要花时间太久,据用户反映有时还会报错,且最后在客户端呈现的效果也不太理想。


bubuko.com,布布扣


第五步:偷梁换柱

为了解决第四步中出现的问题,我们把生成的缓存替换为我们第一次导出的1-19级的全部数据。
在影像服务“成都”上单击右键,选择“stop”停止服务。

bubuko.com,布布扣


将缓存目录中的“成都_ImageServer”文件夹改为“成都_ImageServer_2”(也可以改为其它任意名字,也可以删除该目录);然后将“成都_ArcgisServerTiles”改为“成都_ImageServer”,如下图所示。

bubuko.com,布布扣


文件夹改名完成后,重新启动该服务,如下图所示。

bubuko.com,布布扣


为了完整显示所有级别的数据,我们需要重新设置一下需要显示的级别范围。在影像服务上单击右键选择“Service Properties...”,如下图所示。

bubuko.com,布布扣


在显示的“Service Editor”对话框中,拉动级别滑块,将显示级别设置为0到18,即对应下载器中的1到19级。


bubuko.com,布布扣


点击“OK”按钮完成设置并生效。


第六步:查看结果


在浏览器中打开管理器,如下图所示。


bubuko.com,布布扣


输入用户名称密码登录后,如下图所示。


bubuko.com,布布扣


点击“成都”影像服务,可以任意查看地图数据了,如下图所示。


bubuko.com,布布扣


小结:
记得在9.3版本的ArcCalalog中可以直接新建Image Service,并指定下载器导出的ArcGIS Server缓存即可实现Image Service的发布,但在10.0以上的版本中没有找到该功能,经过一天的摸索测试,最终采用了偷梁换柱的方式才得以实现,即用一个比较小的数据快速建立一个Image Service,然后再将该服务所对应的缓存数据替换为需要发布的海量数据。如果大家有更好的方法,欢迎交流指正!

如何基于谷歌地图的Server缓存发布Image Service服务

标签:谷歌地图   arcgis缓存   海量数据   google maps   caching   

原文地址:http://blog.csdn.net/mrib/article/details/39025529

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!