基于MapX的海量遥感影像地图浏览平台的构建

2010-05-12 01:32郭俊兵
电网与清洁能源 2010年8期
关键词:分块栅格图层

陈 容,郭俊兵

(甘肃大唐碧口水力发电厂/甘肃大唐白龙江发电有责任公司,甘肃 文县 746412)

0 引言

显示遥感影像地图这类栅格图像是地理信息系统(GIS)的一大功能。在通常情况下一幅卫星影像的大小都有三四百兆,有的甚至超过2G[1]。受限于目前普通计算机的配置,在当前常见的几种GIS工具中直接浏览这些海量遥感影像地图的速度将非常缓慢,甚至于无法显示。

然而另一方面,不管遥感影像地图多大,浏览时只需要显示影像地图在某一比例尺下的某一区域的内容。这部分内容相比整幅遥感影像地图要小得多,因此可以预先创建遥感影像不同比例尺的幅本图像,每个幅本图像都分割成小图像块,然后根据显示范围确定采用哪种比例尺的幅本图像,并动态加载显示范围内的图像块。不在显示范围内的图像块不再加载,从而减少计算机的内存消耗,解决海量遥感图像不能加载显示的问题,同时也可以提高遥感影像地图的浏览速度。

图像块动态加载的过程可以采用已有的GIS工具来实现。在常见的几种GIS工具中,MapX是美国MapInfo公司推出的一种基于OLE的嵌式GIS组件。MapX集成了放大、缩小、定位等常用的地图浏览工具,只需一个简单的命令就能实现这些功能。此外,MapX使用与Map Info Professional一致的地图数据格式,在Map Info Professional中创建的地图可以直接在MapX中加载,遥感图像的配准操作也可在MapInfo Professional中进行,而Map Info Professional操作简单、应用广泛。因此相比其他GIS工具,在MapX中构建海量遥感影像地图浏览平台具有简单、方便、高效等优点[2]。

本文采用对海量遥感图像进行分层分块,然后在MapX中动态加载的方法构建了一个遥感影像地图浏览平台。该方法主要解决两个关键技术,一个是遥感图像的分层分块技术,另一个是在MapX中动态加载图层技术。

1 关键技术

1.1 遥感图像的分层分块

图像分块是将一幅大的初始图像按照一定的规则分割成许多小块图像。图像分层就是对初始图像进行抽样,形成具有多种比例尺度的图像层。对图像进行分层分块的一般方法有Tile方法、四叉树方法及其它基于图像内容的分块方法,不管哪种方法,其核心都是图像块的编码方法及编码索引机制。

本文采用了四叉树方法。编码采用可变长度的数字字符串格式,第一位9是永久标识位,其它位编码只能为1、2、3或4。首先将初始图像编码为9,标记为第0层,使用图像分割软件或通过编写图像处理程序将初始图像按水平和竖直两个方向从正中分割,分成四子块,按从左到右,从上到下顺序编码为91、92、93、94,都标记为第1层,每一个子块做同样的分割,编码为911、912、913、914、921、······ 、941、942、943、944,都标记为第2层,分割N次,直到分割成的子块大小满足设定的大小要求(一般要求最小子块图像像素为256×256,这也就要求初始图像的像素为256×2N×256×2N),标记为第N层,编码长度为N+1。然后使用图像批量处理软件或通过编写图像处理程序将第0层至第N-1层的所有图像缩小为与第N层大小一致的图像(图像像素为256×256),各层各块图像关系如图1所示。

图1 分层分块图像关系示意图

根据图像编码特性及MapX中的显示地图窗口是矩形的特点,图像块的索引机制可以通过创建以下两组函数来实现。

1)获取图像块的右(下)边相邻图像块编码 函数1

从图像块的编码的最后一位开始从后到前逐位操作,当该位为1或3(1或2)时,变为2或4(3或4),停止;当 该位为2或4(3或4)时,变为1或3(1或2)。最后的编码就是该图像块的右(下)边相邻图像块编码。

2)获取两图像块之间的水平(竖直)方向上图像块个数 函数2

将两图像块的编码转化为二进制编码:从编码第二位开始逐位操作,当该位为1或3(1或2)时设为0,当该位是2或4(3或4)时设为1。求出该二进制的十进制值,相减取绝对值再加1就是两图像块之间的水平(竖直)方向上图像块个数。

1.2 在MapX中动态加载图层

1.2.1 原理

图层的动态加载过程就是当地图的显示范围有改变(如地图放大、缩小及平移)时,删除原来加载的图层,再根据新的显示范围加载新图层。在MapX中加载图层是一个比较费时的操作,为减少这种操作的次数,可以对比前后两次显示范围,根据差别确定需要加载的图层,多余的删除、重复的保留、缺少的加载,优化动态加载图层过程。动态加载图层优化原理如图2所示。

图2 动态加载图层优化原理示意图

1.2.2 配准

配准就是将遥感图像按照其本身的投影坐标转化成MapX的栅格图层的一个操作。MapX不能直接显示遥感图像,要使遥感图像能在MapX中显示,并且能在上面叠加矢量地图,必须先进行配准操作。

配准操作的实质是增加一个与图像文件文件名一致的文本文件,称之为配准文件。该配准文件指明了遥感图像的投影系统、图像上某三点对应的地理坐标等信息。有两种方法可以完成配准操作:一种是在Map Info Professional中完成,Map Info Professional提供了专门的配准操作界面。另一种是通过程序编写配准文件完成。

配准后的栅格图层编码同遥感图像编码。配准操作完成后可以建立下面这组函数:

1)获取某一点坐标对应的某一图像层上的图像块编码 函数3

2)该组函数取决于初始遥感影像地图的坐标范围及分割图像块的大小,为获得简单高效的函数算法,可以在遥感图像分层分块之前预先设计出算法,适当缩放初始图像使得图像的分层分块满足设计算法的要求。

1.2.3 实现

MapX提供了一个MapViewChanged事件,当显示窗口中地图的水平边距更改或中点移动(如地图放大、缩小及平移)时自动调用。

在MapViewChanged事件中组合本文列出的三组函数就可以实现图层的动态加载,具体过程如下:

1)将前一次显示范围内的栅格图层编码存于数组A。

2)根据地图比例尺,确定加载哪种比例尺的栅格图层。

3)执行函数3获取新显示范围的左上角栅格图层编码B。

4)通过函数2获取新显示范围左上角到右下角的水平方向及竖直方向栅格图层个数x,y。

5)从B编码开始连续执行函数1,先水平方向执行x-1次,获取x个编码,然后从B编码开始竖直方向执行1次,这样的过程连续执行y次就可以获得新显示范围内的所有栅格图层编码x*y个,存于数组C。

6)对比A与C,按照动态加载图层优化原理,先删除A中有且C中无的栅格图层,最后加载A中无且C中有的栅格图层。

2 实例

实例中遥感影像地图采用了Google网站上的卫星图片,每个图像块像素均为256×256。图像坐标范围为东经90° ~135°,北纬0° ~41°,共分0-8层。各层图像块个数及总像素见表1。地图投影采用麦卡托投影,根据麦卡托投影的特性及坐标范围,创建配准文件及函数3。函数3算法可参考相关文献。

表1 各层图像块数及总像素

实例定义了一个地图经差标准StandardZoom,当显示窗口中地图的经差Zoom大于StandardZoom时加载第1层的图像块,当Zoom小于StandardZoom时加载的图像层N通过下面的公式来确定:

N=Int(Log(StandardZoom/Zoom)/Log(2))

其中Int()代表取括号内数值的整数部分

同样的Zoom下,StandardZoom越大,N也就越大,浏览窗口内显示的图像块数目也就越多,图像也越清晰,但加载速度也越慢。通过多次尝试,本例的StandardZoom取值19200 km时图像显示清晰,并且速度较快。不同性能的计算机的StandardZoom取值会有不同,但通过尝试总可以找到合适的StandardZoom。

3 结语

遥感影像地图比其它地图包含着更多的地图信息,MapX拥有强大的GIS处理功能,采用分层分块及动态加载的方法构建基于MapX的海量遥感影像地图的浏览平台不仅可以提供更丰富直观的地图信息,而且可以充分利用MapX的强大功能扩充平台的GIS能力。

本文的实例验证了这种平台可以在实际应用中取得良好的效果,从表1中可以看到,第8层有65536个图像块,如果不分层的话65536个栅格图层在MapX中无法同时加载。如果不分块的话这一层的图像像素大小将是65536×5536,也无法在MapX中加载。

本文提出的地图分层分块及地图配准操作都可以通过计算机程序进行批量处理,大大减少了遥感影像地图的处理时间,也为今后遥感影像地图的实时浏览提供了可能。

本文提出的构建基于MapX的海量遥感影像地图的浏览平台已经在广东省水文站网信息管理系统中得到了实际应用,取得了良好的效果。

[1] 宋江红,赵明忠.图像分块分层结构在海量数据处理中的应用[J].计算机工程与应用,2004(33):31-33.

[2] 齐超,何新华.基于MAPX控件的电子地图控制[J].计算机应用,2000,12(20):69-71.

猜你喜欢
分块栅格图层
基于邻域栅格筛选的点云边缘点提取方法*
分块矩阵在线性代数中的应用
巧用混合图层 制作抽象动感森林
反三角分块矩阵Drazin逆新的表示
图层法在地理区域图读图中的应用
基于多分辨率半边的分块LOD模型无缝表达
跟我学添加真实的光照效果
不同剖面形状的栅格壁对栅格翼气动特性的影响
基于CVT排布的非周期栅格密度加权阵设计
国外建筑CAD图层标准发展现状与研究