基于ArcGIS Engine组件实现瓦片地图的应用

2015-02-19 02:27张广春仲伟政
测绘通报 2015年3期

张广春,仲伟政

(济南市勘察测绘研究院,山东 济南 250013)

Study on the Application of Tile Map Technology Based on ArcGIS Engine

ZHANG Guangchun,ZHONG Weizheng



基于ArcGIS Engine组件实现瓦片地图的应用

张广春,仲伟政

(济南市勘察测绘研究院,山东 济南 250013)

Study on the Application of Tile Map Technology Based on ArcGIS Engine

ZHANG Guangchun,ZHONG Weizheng

摘要:在桌面端,针对瓦片地图数据存储特点,采用ArcGIS Engine的自定义图层,实现了瓦片地图的动态加载与投影;利用异步访问技术、线程池技术,实现了服务器瓦片数据的访问和本地缓存;并在济南高新区综合地下管线信息管理系统建设中进行了具体的应用。

关键词:瓦片地图;ArcGIS Engine;WebGIS

一、引言

瓦片地图是将配置好的一定坐标范围的矢量地图,按照固定的若干比例尺(瓦片级别)和指定图片尺寸,切成若干行及列的正方形图片,并以指定的格式保存成图像文件,按照统一的命名规则和组织方式进行存储,形成金字塔模型的地图图片静态缓存。瓦片地图结构如图1所示。目前国内对矢量地图的切图研究比较多[1-3]。

瓦片地图切图规则参考具体如下[4]:

1) 地图瓦片分块的起始点从西经180°、北纬90°开始,向东、向南行列递增。

2) 地图瓦片分块大小为256像素×256像素。

3) 地图瓦片数据采用PNG格式。

图1 瓦片地图结构

在单机运行或局域网内部运行GIS系统,采用地图瓦片技术比较少。但是,随着GIS技术的推广,以及天地图在全国各省市级节点的建立及应用,基于GIS来实现具体业务的系统越来越多,如何降低业务系统中地理信息数据采集制作的成本,同时解决数据的安全保密及版权等问题,已经成为目前亟须解决的问题[5-6]。

在具体的业务系统应用中,与WebGIS相比,桌面端GIS具有更丰富的功能和强大的分析处理能力。WebGIS尽管可以调用服务器端上的服务来实现一定的分析功能,但是更加复杂的、专业性的分析处理,尤其是针对一些大数据量的访问或本身具有保密性质的业务需求应用,还需要在本地机器处理运行。

瓦片地图数据在对公众使用或应用到具体的业务过程中时,可以先期进行一些必要的脱密处理,把矢量地图中一些涉及国家秘密的数据进行处理和过滤。另外,瓦片地图可以采用数字水印技术[7-9],实现瓦片地图数据版权信息的保护,在地理信息资源共享的同时,对地理信息数据的版权进行有效的保护。

把WebGIS的瓦片地图技术应用到桌面端的GIS系统中,一方面解决了地图数据安全保密问题,另一方面解决了业务系统只能运行于局域网或单机上导致业务系统的底图数据无法获取的问题。因此,基于ArcGIS Engine组件在桌面端采用瓦片地图技术,可以有效解决地图数据成本和地图数据版权保护的问题,有利于地理信息系统应用的推广,且对地理信息资源的共享使用起到积极推动作用。

二、基于瓦片地图数据访问设计

目前,开源社区CodePlex里的ArcBruTile项目,解决了在ArcMap里面实现OpenStreetMap、Bing、SpatialCloud等在线地图的浏览,但是该开源项目是基于ArcMap设计的,采用的是ArcMap工具菜单的形式。本文在ArcBruTile开源项目的基础上,采用ArcGIS Engine组件实现了瓦片数据在线及离线模式下的访问加载,同时支持天地图网站数据访问加载。

ArcGIS Engine中数据的加载是以图层的方式组织的[10],包括矢量数据图层、栅格数据图层等,放到地图容器MapControl控件中。瓦片地图数据是以PNG或JPG格式保存的栅格图像,在地图的绘制过程中可以按照栅格数据处理。瓦片大小以像素为单位,没有具体的空间参照系。但在桌面GIS系统中,必须具有空间参照系才能和其他的矢量数据进行叠加显示。因此瓦片地图在加载的同时需计算瓦片栅格图像的空间位置。本文以C#语言设计实现了TileMapLayer 类,该类继承于ILayer、ILayer Effect等接口。TileMapLayer 类结构如图2所示。

图2 TileMapLayer 类结构

定义TileMapHelper类,实现依据瓦片地图数据配置文件,结合当前地图访问的MapControl空间视图大小,计算当前显示的地图瓦片数据,并从服务器端采用异步多线程方式,缓存所需要的瓦片数据。在缓存瓦片数据之前,依据当前瓦片数据更新周期设置,更新当前的瓦片数据,并保存到本地硬盘中。TileMapHelper类定义如图3所示。

图3 TileMapHelper 类结构

TileMapLayer 类重写了ILayer接口的Draw方法,绘制了由TileMapHelper实例返回的当前MapControl窗口大小和地图图层的级数的瓦片数据,实现了瓦片数据的加载和浏览。

采用ArcGIS Engine组件访问流程如图4所示。

图4 ArcGIS Engine组件访问流程

三、济南高新区综合地下管线信息管理系统建设

济南高新区综合地下管线信息管理系统建设要求系统运行在用户单位的内部网络环境中,系统设计采用ArcGIS Engine组件、C#开发语言。系统实现了济南市瓦片地图数据的离线加载和浏览,以及瓦片数据的定期更新;并在此基础之上叠加了高新区综合地下管线数据和高新区兴趣点(POI)数据,实现了对整个高新区综合地下管线的管理工作,提高了高新区地下管线管理的信息化水平。

四、结束语

本文采用ArcGIS Engine组件,实现了桌面GIS对济南天地图瓦片数据的加载和浏览,并应用到具体的综合管线业务环境中,同时在系统中加载了兴趣点信息,实现了道路、单位和地名的查询定位。桌面GIS实现瓦片地图数据的运用,降低了业务系统地理空间数据的建设成本;同时可以利用桌面GIS的强大数据处理和分析能力,实现用户的业务需求,具有较好的应用前景。

参考文献:

[1]许虎,聂云峰,舒坚.基于中间件的瓦片地图服务设计与实现[J].地球信息科学学报,2010,12(4):562-567.

[2]王小军,刘璐.基于ArcGIS Engine进行瓦片式切图的技术研究[J].测绘与空间地理信息,2010,33(4):49-51.

[3]赵大龙,孙恒宇.地图切片技术分析与简单实现[J].测绘与空间地理信息,2010,33(1):116-118.

[4]国家测绘地理信息局.CH/Z 9011-2011 地理信息公共服务平台电子地图数据规范[S].北京:测绘出版社,2012.

[5]韦胜.ArcEngine环境下实现瓦片地图的访问与拼接[J].武汉大学学报:信息科学版,2012,37(6):737-740.

[6]黄梦龙.瓦片地图技术在桌面端GIS中的应用[J].地理空间信息,2011,9(4):149-151.

[7]任娜,朱长青.一种抗拼接的瓦片遥感数据水印算法[J].测绘通报,2012(S1):491-493.

[8]曹刘娟,门朝光,孙建国.基于空间特征的二维矢量地图可逆水印算法原理[J]. 测绘学报, 2010,39(4):422-427.

[9]闵连权.一种鲁棒的矢量地图数据的数字水印[J]. 测绘学报, 2008, 37(2):262-267.

[10]刘仁义,刘南.ArcGIS 开发宝典-从入门到精通[M].北京:科学出版社,2006:35-37.

引文格式: 张广春,仲伟政. 基于ArcGIS Engine组件实现瓦片地图的应用[J].测绘通报,2015(3):115-116.DOI:10.13474/j.cnki.11-2246.2015.0092

作者简介:张广春(1977—),男,硕士,工程师,研究方向为地理信息系统应用开发。E-mail:zgc08@163.com

基金项目:住房和城乡建设部科学技术项目(2012-K8-17)

收稿日期:2014-02-17

中图分类号:P208

文献标识码:B

文章编号:0494-0911(2015)03-0115-02