ArcGIS Server平台下地图瓦片存储关键技术研究
2014-02-19史宜南
刘 鹏,赵 羲,史宜南
(1. 武汉大学 中国南极测绘研究中心,湖北 武汉 430079;2. 武汉大学 资源与环境科学学院,湖北 武汉430079)
1 地图缓存与瓦片存储方式
地图缓存是一个目录,包含在特定比例尺级别下,对地图范围进行规则划分。需要先规划好比例尺级别(图1中地图被缓存成2个比例尺),设置缓存属性,然后服务器按照一定的数学法则根据每个比例尺下的地图生成若干瓦片保存在缓存目录。使用ArcGIS Server发布缓存地图的大致流程如图2所示。在客户端发出地图请求后,服务器可以直接将这些瓦片进行拼接返回给客户端,而不需要实时地动态绘制地图,因而响应速度大大加快[1-5]。
图1 缓存成2个比例尺的地图
图2 地图缓存生成流程
ArcGIS 9.3及之前版本生成的缓存属于松散型,ArcGIS 10推出了一种新的瓦片缓存文件格式——紧凑型缓存。与松散型相比,它具有迁移方便、创建速度快等优点,已经成为创建切片缓存的默认格式。
1.1 松散型缓存
服务器切图完成后,地图服务缓存的目录结构如图3所示。在缓存根目录中,第一级是地图服务命名的文件夹,第二级是切图的DataFrame命名的文件夹。由于图3展示的是单一融合方式切图,所以第三级是_alllayers。如果采用多层缓存方式,那这里就是MXD中每个图层的序号文件夹。第四级目录是切图设置的各个比例尺级别,如L00代表第一级比例尺。第五级是某个比例尺的行文件夹,命名规则是R加上8位行号(16进制),不足补零。比如图中的R00000001表示此比例尺中的第1行。每行文件夹下就是该行的所有瓦片文件,命名规则是C加上8位列号,不足补零,比如C00000000表示第一列的图片,其他依此类推。可以看出,松散型缓存最底层都是单个的PNG图片。
第三级中的conf.xml文件是缓存配置文件,描述了瓦片的各项参数,包括空间参考、比例尺级别等。
图3 松散型缓存目录
1.2 紧凑型缓存
ArcGIS 10.0引入了紧凑型缓存格式,如图4所示。新的方法将9.3版本中的瓦片归组到大文件中,而不是以单独的图片形式存储。紧凑型缓存,每一级比例尺包含2种文件:.bundle和.bundlx文件(图4第五级所示),其中bundle文件用以存储切片数据,bundlx是bundle文件中数据的索引文件[6]。一个bundle文件中最多可以存储16 384个瓦片,但是创建瓦片时并不是一张张单独生成,而是以4 096像素(无抗锯齿)或2 048(有抗锯齿)为边长渲染的,如果设定瓦片边长为256像素并开启了抗锯齿,那么每次ArcSOC进程(正在运行的服务实例)创建的是一张8×8个切片拼接成的大图,然后切割存入bundle文件中。
图4 紧凑型缓存目录
在瓦片创建过程中,每个包都会被分配给一个ArcSOC.exe进程,由该进程为包创建瓦片,2个ArcSOC.exe进程不能同时处理同一个包[6]。当生成缓存的要素边界都比较小时,容易出现服务器资源未被充分利用的情形。
2 实验比较
使用服务器创建缓存是一项耗时耗资源的工作,尤其在涉及大比例尺的情况下,往往需要生成成千上万张瓦片。这些瓦片不仅会占用大量的磁盘空间,而且会带来数据迁移困难的问题。下面从缓存管理效率和磁盘利用率两个方面对这两种缓存格式进行比较,其中缓存管理效率主要涉及3个方面:创建时间、占用磁盘空间(全部瓦片在磁盘上占用的空间)、迁移时间(全部瓦片从一台电脑转移到另一台电脑耗费时间);磁盘利用率主要考虑2个方面:缓存实际文件大小(全部瓦片文件大小总和)与实际占用磁盘空间是否一致、是否会导致磁盘碎片。为保证结果的公正性,本文引用ESRI官方公布的数据进行比较。
从表1和表2的数据比较(数据来源:2010 ESRI中国区域用户大会[7])可以看出,在同等情况下,松散型缓存的创建时间较长,占用磁盘空间较大,迁移时间明显很慢,从缓存管理方面来说紧凑型格式更高效一些。对于松散型缓存,瓦片一张张单独生成,并以零散的图片形式保存在磁盘上,当需要生成的瓦片数量很大时,需要频繁地更换切图范围和读写磁盘,持续时间较长。而紧凑型缓存以bundle作为处理单元,服务器将更多精力投入到连续切图中去,而不是频繁更换切图范围,生成的瓦片存储在紧凑、连续的文件流中,也不会频繁读写磁盘,节省了时间。
从表3(数据来源:2010 ESRI中国区域用户大会[7])中横向对比可以看出,紧凑型缓存文件的实际大小与占用磁盘空间基本一致,松散型缓存下二者差距比较大,浪费了大量磁盘空间。这是因为Windows平台下主流的磁盘分区NTFS文件系统默认簇大小为4 KB[8](可分配的最小存储单位,文件大小不足4 KB仍占用4 KB磁盘空间),对于松散型缓存,当小的瓦片(文件大小不足4 KB)数量较多时会造成大量的磁盘空间浪费,并且小的瓦片容易产生磁盘碎片;而紧凑型缓存将一定数量的瓦片合并到bundle大文件中,出现小文件的几率较小,对磁盘的利用率比较充分,不易产生磁盘碎片。
从以上对比分析可以看出,紧凑型缓存管理相对方便,并且磁盘利用率高,是利用ArcGIS10及更高版本创建缓存的首选方式。需要注意的是,紧凑型缓存只支持ArcGIS客户端(包括Web APIs)读取,如果想在自由应用中读取缓存文件,则必须使用松散格式的缓存。ArcGIS 10中与缓存相关的GP工具可将之前的松散型缓存转换为紧凑型格式,也可以将紧凑格式转换成松散格式。
表1 美国路易斯安那州(150万张切片)
表2 欧洲全图(380万张切片)
表3 中国全图1︰400万(缓存级别 L0~L10)
3 结 语
本文对基于ArcGIS Server的地图缓存技术进行研究,在介绍其原理的基础上深入剖析了ArcGIS Server平台下的2种瓦片存储方式:松散型和紧凑型,并从缓存管理效率和磁盘利用率2方面对2者进行了比较。实验数据证明,紧凑型缓存创建时间较短、迁移速度快、磁盘利用率高、管理相对方便,是创建缓存的首选方式。
[1]马林兵,张新长,伍少坤.WebGIS原理与方法教程[M].北京:科学出版社,2008
[2]吴信才.地理信息系统原理与方法[M]. 北京:电子工业出版社,2002
[3]戴伟.基于ArcGIS Server平台的WebGIS台风预报系统应用研究[D].武汉:武汉理工大学,2009
[4]黄梦龙.瓦片地图技术在桌面端GIS中的应用[J].地理空间信息,2011,9(4):149-151
[5]姚真凯.瓦片地图技术在水利WebGIS系统中的开发研究与应用[J].浙江水利科技,2009(6):40-42
[6]ESRI.Inside the Compact Cache Storage Format[EB/OL].http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//005300000137000000,2013-10-20
[7]林雪淋.ArcGIS 10地图缓存与设计策略[EB/OL].http://www.esrichina-bj.cn/market/2010uc/upload/Web2/ArcGIS10地图缓存与设计策略.pdf,2013-10-22
[8]居锦武,王兰英. NTFS文件系统剖析[J].计算机工程与设计,2007,28(22):5 437-5 438