ArcGIS Server缓存图片提取程序的设计与实现

2011-05-31 11:11谢年吕楠
城市勘测 2011年6期
关键词:配置文件文件夹原点

谢年,吕楠

(重庆数字城市科技有限公司,重庆 400020)

1 引言

目前的WebGIS通常会使用现时比较流行的地图缓存技术以提高地图的访问速度,如流行的GoogleMap和MapABC正是使用该技术。ArcGIS Server 9.2引入地图服务缓存机制,基于地图服务生成多比例尺分块的地图影像图片,从而显著提高地图服务的执行效率。这种机制允许用户直接从缓存影像中快速取出地图图片,而不是和以往传统模式一样,向服务器发出请求,然后再动态生成地图影像。ArcGIS Server的缓存图片构建好之后,进行部署的时候,如果只需要某个区域内的缓存图片,通常需要单独针对该区域重新构建缓存图片,需要花费大量的时间,因此需要一种可以从已经建立好的缓存图片中提取目标范围内缓存图片的方法。本文基于ArcGIS Server构建缓存机制的原理,利用VB和ArcObject开发一个自动化工具,达到提取目标范围内缓存图片的目的。

2 原理分析

2.1 相关定义

在ArcGIS Server创建缓存后,相关参数会储存在缓存图片目录下的conf.xml配置文件中。例如:

(1)比例尺

其中包含比例尺大小,比例尺等级,当前比例尺图片像素精度。比例尺等级指的是创建缓存时分了多少个等级,在配置文件中以LevelID进行表示,第一级表示为0,后面的等级依次递增。比例尺大小则表示的是ArcGIS Server分级创建缓存时所对应的地图显示比例尺大小,在配置文件中以Scale进行表示。像素精度表示的是在当前等级构建的缓存图片一个像素所代表的实际距离,在配置文件中以Resolution表示。

(2)原点

指的是缓存图片结构格网的左上角坐标,在配置文件中以TileOrigin中的X,Y表示。

(3)图片高度和宽度

指的是缓存图片的高度和宽度,在配置文件中分别以TileRows和TileCols表示。

(4)图片格式

指的是缓存图片的存储格式,有png和jpeg两种,在配置文件中以CacheTileFormat进行表示。

2.2 切片原理与命名规则

ArcGIS Server缓存由目录和配置文件组成,并根据一定的规则命名。设定一个原点作为地图切片的起始点,以一定的规格把地图切割成若干的小图片,并以科学命名的方式存储到计算机磁盘,如图1所示。命名的规则是各比例尺的图片放在名为LXX的文件夹里面,第一个比例尺的文件夹名为L00,第二个比例尺的问L01,如此类推。比例尺文件夹目录下还会有R开头的文件夹,当前比例尺的缓存图片每一行对应一个文件夹。R文件夹的命名方式是把行序列转为8位16进制,不足的在左边补0。R文件夹里面保存的就是缓存图片,缓存图片的命名方式跟R文件夹的命名方式相似,以字母C开头,后面则是缓存图片在该行的列序号,将列序列转为8位16进制,不足的在左边补0。

图1 缓存结构

通过获取配置文件conf.xml中相关参数,根据缓存切片规则,可以计算出缓存范围内任意一点所在的行和列。例如需计算某比例尺下坐标(x,y)所在的行数和行数,公式如下:

行数=Int((原点y-y)/(图片高度*像素精度))+1

列数=Int((x-原点x)/(图片宽度*像素精度))+1

然后将行数和列数转化为文件的存储路径,从而可以获得该点所对应的缓存图片。

3 技术实现

本文的思路是通过在VB中使用xml解释器来获取conf.xml中相关参数,xml解释器是封装在msxml.dll的动态链接库中。需读取的参数包括原点坐标、图片格式、图片大小以及各个比例尺下的图片像素精度。然后根据ArcGIS Server缓存图片的切片规则和命名原理,结合ArcObject中的各种接口函数,可以计算出各个比例尺下每张缓存图片的坐标范围,然后与目标区域进行空间运算,如果相交,则满足条件,将缓存图片提取出来。

通过图层对象MapControl中ActiveView属性支持的Extent接口可以获取目标区域的范围;通过IPoint-Collection接口可以添加缓存图片的四个角点坐标,然后转换成一个Polygon对象;通过构建空间查询ISpatialFilter对象,可以计算缓存图片范围与目标区域的空间关系。部分代码如下:

4 应用效果

本实例以从构建好的重庆市主城区缓存图片中提取渝北区范围内的缓存图片为例,并结合上述方面进行程序设计,界面如图2所示。输入缓存图片的存放路径以及相应的配置文件,输入提取缓存图片的范围,提取缓存图片的输出路径以及提取比例尺。然后提取缓存图片。在ArcMap中调用ArcGIS Server服务,分别加载提取前后的缓存图片,并进行对比显示,如图3所示,提取成果合格。

图2 设计界面

图3 提取前后对比

5 结论

本文通过对ArcGIS Server缓存切片原理的分析,利用VB和ArcObject设计开发了可以提取目标区域内的缓存图片的自动化工具。在实际应用中对于缓存数据分发、局部更新等工作具有积极的意义,提高了已有缓存图片数据的利用率。

[1]王艳丽,尹柯,张连堂.基于ArcGIS Server的地图缓存技术研究[J].河南大学学报(自然科学版),2009(6):637~640

[2]李学俊,王尊亮,李晓欢等.基于地图切片预取的WEBGIS系统[J].计算机应用研究,2009(10):3849~3851

[3]李本新,易增林,万敏.网络地理信息系统(WebGIS)的研究与应用[J].测绘与空间地理信息,2008(2):113~115

[4]杨宏鹏,王阿川,王妍玮.GIS二次开发方法与实现[J].信息技术,2008(8):65~67

[5]张涌逸.基于XML的VB数据交换技术及其应用[J].电脑知识与技术(学术交流),2006(4):108

猜你喜欢
配置文件文件夹原点
互不干涉混用Chromium Edge
Book Pilot 飞行选书师,让书重新回到原点
重返历史“原点”的旅程
基于Zookeeper的配置管理中心设计与实现
忘记ESXi主机root密码怎么办
摸清超标源头 大文件夹这样处理
为View桌面准备父虚拟机
调动右键 解决文件夹管理三大难题
在原点震荡的扰动Schrödinger-Poisson系统的无穷多个解
挂在墙上的文件夹