APP下载

跨平台地图缓存一体化的研究与应用

2013-01-27朱俊丰邓仕虎

地理空间信息 2013年2期
关键词:瓦片服务器端文件夹

李 林,朱俊丰,邓仕虎

(1.重庆市地理信息中心,重庆 401121)

跨平台地图缓存一体化的研究与应用

李 林1,朱俊丰1,邓仕虎1

(1.重庆市地理信息中心,重庆 401121)

地图缓存技术是WebGIS中广泛采用的关键技术,然而不同平台的地图缓存应用给数据的生产和维护更新带来诸多不便。针对此问题,从地图缓存的生成算法出发,研究了跨平台地图缓存一体化的技术路线和实现方法,分别探讨了服务器端一体化和客户端一体化2种方式,旨在提高基础数据生成和应用服务的效率,为实现跨平台缓存一体化提供一种可行有效的解决办法。

WebGIS;跨平台;地图缓存 ;一体化;服务器代理

早期的WebGIS应用中,呈现在客户端的地图是根据每一次客户发送的请求在服务器端实时生成后再发送到客户端的[1-3],这一技术特点与WebGIS并发用户多、客户体验要求高是矛盾的,极大地限制了其应用范围和效果。地图缓存技术的出现突破了这个瓶颈,将GIS地图应用从专业领域推向公众视线。地图缓存技术能够减少服务器动态计算图片的操作压力和网络传输数据量,提高WebGIS地图浏览速度和用户体验。目前各种GIS软件平台的地图缓存算法基本思路大致相同,但由于技术体系不同,不同平台的地图缓存图片在存取方法等或多或少存在差异,导致在应用过程中,针对不同平台应用,需要生产多个平台的瓦片数据,从而造成大量地图缓存的冗余存储,同时给数据生成和更新维护带来很多额外的工作量。本文旨在通过分析GIS软件平台图片缓存算法及存储方式,运用软件、标准等来实现各平台缓存地图的一体化应用,最终达到一套基础数据通过一个软件平台生产,供多个平台使用的目的。

1 地图缓存算法

1.1 地图缓存基本算法原理

地图缓存技术,就是按照一定的数学规则,预先把地图按照金字塔模型切成一定规格的图片保存到计算机硬盘里,当用户通过客户端浏览器访问地图服务时,服务器直接返回当前地图坐标区域所对应的“瓦片”,从而达到降低服务器负担、提升地图浏览速度的目的[4-6]。采用瓦片金字塔模型建立地图缓存的算法原理如下:

1)首先确定地图服务平台所要提供的缩放级别的数量N, 每个缩放级别对应一个地图比例尺,把缩放级别最低、地图比例尺最大的地图图片作为金字塔的底层,即第0层,并对其进行分块。从地图图片的左上角开始,按行列进行切割,分割成相同大小(如256像素×256像素)的正方形地图瓦片,形成第0层瓦片矩阵。

2)在第0层地图图片的基础上,按每2像素×2像素合成为1个像素的方法生成第1层地图图片,并对其进行分块,分割成与下一层相同大小的正方形地图瓦片,形成第1层瓦片矩阵。

3)采用同样的方法生成第2层瓦片矩阵。依此类推,直到第N-1层,构成整个瓦片金字塔。图1、图2为瓦片金字塔模型的构建示意图。

图1 瓦片金字塔示意图

图2 按层级组织的地图瓦片形式

地图瓦片除了上面提到的比例尺外,还有2个密切相关的概念:DPI和Resolution。DPI代表每英寸的像素数,一般跟机器有关,目前默认值都是96。Resolution代表分辨率,其实际含义代表当前地图范围内1像素代表多少地图单位,地图单位取决于数据本身的空间参考。Resolution跟DPI和地图的单位有关。一般而言,不同的GIS平台,对应的Resolution值不一样。

1.2 主流GIS平台地图缓存算法

1.2.1 ArcGIS地图缓存算法

ArcGIS平台的地图缓存算法与一般的算法类似。设定一个原点作为地图切片的起始点(默认是(400,-400),这是个经纬度坐标,这个值可以把其他地区的数据连接进来,使不同服务的数据得到有效的拼接),以一定的规格(长宽为2的n次方的像素)把地图切割成若干小图片,并以科学命名的方式存贮到计算机磁盘。命名的规则是各比例尺的图片放在名为L××的文件夹里面,第1个比例尺的文件夹名为L00,第2个比例尺为L01,依此类推。比例尺文件夹(L文件夹)目录下还会有R开头的文件夹,R表示ROW,当前比例尺的瓦片每1行对应1个文件夹,如图3所示。R文件夹的命名方式是瓦片的行序列(用rIndex表示),把rIndex转为8位16进制,不足的在左边补0,用代码公式表示为FolderName = "R"+rIndex.ToString("x").PadLeft(8, '0')。

R文件夹下面存放的就是地图瓦片,瓦片的命名方式跟R文件夹的命名方式相似,以字母C开头,后面是瓦片在该行的列序号(用cIndex表示),后面依然是一个8位16进制数,代码为FileName = "C"+rIndex.ToString("x").PadLeft(8, '0')+ "."+format.ToString()。

图3 ArcGIS 缓存文件存储方式示意图

1.2.2 SuperMap地图缓存算法

SuperMap的地图缓存算法与ArcGIS大同小异,同样是在左上角设定一个原点作为切图原点,以长宽为2的n次方的像素大小生产正方形瓦片。两者在文件组织方式和缓存文件命名规则上有所差异。ArcGIS平台先按照行再按照列进行扫描切图,SupeMap平台则是先按照列再按照行进行扫描切图,两者正好相反。此外,SuperMap平台的命名规则是以地图比例尺直接作为文件夹名称,文件夹下存储当前比例尺的每一列对应的子文件夹,从0,1,2…依次命名,如图4所示。子文件夹下存储当前列对应的行,也是从0,1,2 …依次命名。

图4 SuperMap 缓存文件存储方式示意图

2 跨平台地图缓存一体化

跨平台地图缓存一体化包括2个层次的内容:一个是平台服务器端实现一体化的地图瓦片服务,另一个是不同客户端实现一体化的地图瓦片调用。

2.1 服务器端地图缓存一体化

2.1.1 服务器端代理方式

服务器端代理方式是指在服务器提供模块与地图缓存数据库之间设置代理程序,当客户端发送地图请求时,服务器端分析该请求,获得相应的瓦片存取地址,再将该瓦片存取地址转换为实际缓存图片平台对应的存取地址,从而获得平台的切片地图服务,如图5所示。

图5 服务器代理方式实现地图缓存一体化示意图

2.1.2 服务器端地图缓存转换方式

服务器端地图缓存转换方式是将数据生产平台生成的瓦片直接转换成其他平台的瓦片,从而在平台提供服务的时候,与调用自身平台生产的瓦片一样提供服务。与服务器代理方式相比,这种方法减少了代理程序对地图图片地址的转换过程,地图服务的效率较好,但是相应的代价是牺牲了一定存储空间和预处理时间,如图6所示。

2.1.3 地图缓存转换算法

无论采用上述哪种方式实现服务器端地图缓存的一体化,都需要理清不同平台瓦片之间的对应关系,即两者之间的转换算法。从地图缓存技术的基本算法可知,2个平台的瓦片之间能互相转换的前提是,首先必须保证两者同一张图片所覆盖的内容在范围和位置上都是一样的,其次还要寻找两者之间的转换关系。从基本的算法可以看出,瓦片都是按行列进行裁切的,因此,这种转换关系不外乎行列互换或者是行列对应2种。

图6 服务器端地图缓存转换方式实现地图缓存一体化示意图

对上述的第一个问题,从§1.1中的介绍可知,只需要保证2个平台的Resolution值一样即可。但是事实上,目前主流的GIS平台各自的Resolution值往往不一样,需要相应地调整比例尺的值,也就是说要寻找到A平台Sa比例尺对应的B平台的比例尺Sb。不同平台之间的对应关系不一样,下面以ArcGIS和SuperMap平台为例说明转换方法。

假定地理坐标系是WGS84,地图的单位是(°),DPI为96。那么,根据1 in= 2.54 cm=96像素,则:

根据地球椭球参数可知(°)和m之间的换算参数为:

如果比例尺为1∶64 000 000,相当于:

1像素 = 64 000 000×0.025 4/96 = 16 933.367 2 m再将m转换为(°) ,那么对应的Resolution值为:

用ArcGIS Server 裁图后的配置文档进行验证如下:

总结上面的换算规律,即可得到如下公式:

因此,在确定了某一平台之后,即可得到不同比例尺对应的Resolution值,从而计算出其他平台对应的scale。只需要在地图缓存生产时在同一地图原点下按照转换后的scale值进行,就可以保证同一张图片所覆盖的内容在范围和位置上都是一样的。

2.2 客户端地图缓存一体化

2.2.1 扩展API接口方式

目前的GIS平台都提供了各自的客户端API开发接口,除了提供访问本平台地图缓存的方法和函数外,还提供了一些可以扩展访问其他地图瓦片的接口。以应用最广的ArcGIS平台为例,可以通过扩展接口访问SuperMap瓦片。图7为ArcGIS API中各图层对象模型图。

图7 ArcGIS扩展类对象模型图

本文的研究对象是地图瓦片数据,在这个对象模型图中我们重点关注TiledMapServiceLayer,它继承自Layer,是所有使用了缓存的地图服务的基类。通过它可以在程序中加入经过缓存、来自不同数据源的地图服务,如ArcGIS Server的地图服务、Google Map的地图、Virtual Earth的地图等。TiledMapServiceLayer类拥有4个属性值,分别是fullExtent、initialExtent、spatialReference和tileInfo,对应瓦片地图的全图范围、初始化范围、空间参考系和瓦片信息。具体的2个方法是 getTileUrl(level,row,column)和 refresh()。getTileUrl()函数返回瓦片的地址,这与瓦片的存储组织方式密切相关;Refresh()函数对地图进行刷新操作。从TiledMapServiceLayer类拥有的参数及相关功能看出,如果需要对其进行扩展,需要重点改造tileInfo和getTileUrl(),设置其对应的瓦片参数和地址即可。

2.2.2 通过标准服务接口方式

与WMS、WFS等OGC标准规范提供矢量数据存取方式类一样,OGC等组织同样还对瓦片的存取提供了相应的标准服务接口,如WMTS、WMSC、 TMS和TWMS等[7]。目前应用较多的就是WMTS(Web Map Tile Service,切片地图Web服务)[8],其于2009-02-26推出,它提供了一种采用预定义图块方法发布数字地图服务的标准化解决方案。WMTS弥补了WMS不能提供分块地图的不足。WMS提供可定制地图的服务,是一个动态数据或用户定制地图(需结合SLD标准)的理想解决办法。WMTS牺牲了提供定制地图的灵活性,代之以通过提供静态数据(基础地图)来增强伸缩性,这些静态数据的范围框和比例尺被限定在各个图块内。这些固定的图块集使得对WMTS服务的实现可以使用一个仅简单返回已有文件的Web服务器即可,同时使得可以利用一些标准的诸如分布式缓存的网络机制实现伸缩性。

3 应用案例

3.1 ArcGIS与SuperMap地图瓦片转换及应用

以SuperMap为地图服务平台,ArcGIS平台为数据生成平台,那么就需要确定SuperMap平台的Resolution值来修正ArcGIS平台对应的比例尺,再进行数据生成。表1为SuperMap平台部分比例尺及Resolution值。根据§2.1.3,得到两者对应的比例尺关系,如表2所示。根据上述比例尺进行裁图,即可得到地图图片一致的数据;再根据2个平台瓦片之间的转置关系,就可以完成转换。

表1 SuperMap比例尺及对应的Resolution值

表2 ArcGIS和SuperMap比例尺对应关系

目前,该方法已经成功地在重庆市地理信息公共服务平台中得到应用。用ArcGIS平台建设的基础数据处理软件,利用上述方法进行转换后,可以发布到SuperMap平台建设的公共服务平台上应用,从而解决了长期以来需要维护2套基础数据带来的问题。

3.2 客户端一体化应用

目前在重庆市地理信息公共服务平台的应用系统中,基于ArcGIS API开发的系统都是以§2.2所述的方式进行扩展开发的,如基于ArcGIS Flex API 开发的重庆市卫生应急指挥决策系统,如图8所示。

图8 基于API扩展开发的应用系统界面

此外,基于WMTS、WMS等标准接口开发实现的客户端一体化技术也大量应用在工程项目中,取得了良好的应用效果,如“天地图·重庆”省级节点,“数字长寿”、“数字永川”等数字城市建设中的应用示范系统,基于WMS访问NewMap平台提供的地图服务应用,如图9所示。

图9 通过WMTS方式调用地图服务界面

4 结 语

本文研究了GIS平台地图缓存基础算法,通过软件、接口及标准等方式,实现了服务器端和客户端的地图缓存一体化方法,并将这些方法应用在重庆市地理信息公共服务平台建设、“数字长寿”、“数字永川”、“天地图·重庆”省级节点建设等项目及应用系统建设中,取得了良好的效果,为各种地理信息应用提供了丰富的手段,有力推动了地理信息在各行各业的应用。

[1] 李治洪. WebGIS原理与实践[M].北京:高等教育出版社,2009

[2] 郭利利.基于AreGIS Server缓存技术的实现[J].北京测绘,2011(3):67-69

[3] 姚真凯.瓦片地图技术在水利WebGIS系统中的开发研究与应用[J].浙江水利科技,2009(6):40-42

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

[5] 殷福忠,孙立民.基于瓦片金字塔技术的地图发布平台开发研究[J].测绘与空间地理信息,2010,33(5):16-18

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

[7] 周旭.OpenGIS 网络地图分块服务实现标准(WMTS)分析[J].地理信息世界,2011,8(4):11-14

[8] OGC 07-057r7.OpenGIS Web Map Tile Service Implementation Standard[EB/OL]. http://portal.opengeospatial.org/files/?artifact_id=35326.

Application of Cross-platform Map Cache Integration

byLI Lin

The map cache technology is a widely-used key technology in WebGIS. However, much inconvenience has been brought to data production and maintenance by map cache of different platform.Arming at this problem, this paper described the basic algorithm, and discussed the technical route and realization method for cross-platform map cache integration. The server and client integration methods were discussed separately for improving the efficiency of data production and application. The results show that the method provided in this paper is a feasible and effective solution for cross-platform map cache integration.

WebGIS, cross-platform, map cache, integration, server proxy

P208

B

1672-4623(2013)02-0074-04

10.11709/j.issn.1672-4623.2013.02.023

2013-01-05。

项目来源:国家科技支撑计划(2011BAK07B03-4);重庆市科委资助项目(2009CB2015)。

李林,硕士,主要研究方向为GIS集成应用、空间数据共享等。

猜你喜欢

瓦片服务器端文件夹
打水漂
Linux环境下基于Socket的数据传输软件设计
一种基于主题时空价值的服务器端瓦片缓存算法
惯性
摸清超标源头 大文件夹这样处理
调动右键 解决文件夹管理三大难题
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
挂在墙上的文件夹
不容忽视的空文件夹