高性能地图优化策略(一)

高性能地图优化策略

李闻昊

(北京超图软件股份有限公司北京)

摘要:

高性能地图的优化涉及空间数据库技术、操作系统等多种计算机技术。本文通过介绍SuperMap软件提供的诸多地图优化策略,进一步阐明了空间数据库的基本原理和地图显示性能的影像因素。对于今后各个项目中,提高地图性能都提供了系统的、切实可行的解决方案。

 

关键字:数据库 空间数据 空间索引 缓存技术

1    引言

空间数据库是GIS系统的基础,通过多源数据无缝集成的海量数据,组成地图性能的高低,直接关系这整个信息系统是否能够稳定、高效的运转。而随着计算机硬件的、操作系统、计算机网络以及数据库技术的发展,空间数据库以及地图性能的提升也从中汲取了灵感,获益匪浅。

北京超图软件股份有限公司自主研发的空间数据库扩展,即SuperMap SDX+技术在利用先进计算机技术,着眼于深入研究空间数据库,为高性能地图优化提出了很多解决方案。本文就是针对高性能地图优化策略,通过地图性能的影响因素、地图性能优化方法以及实际案例的讨论,为大家系统的解密高性能地图是如何诞生的。

2    地图性能的影像因素

2.1 性能表现

从性能表现来看,地图的性能主要通过两个时间度量来体现,一个事查询时间(Query Time),另一个是绘图时间(Draw Time)。在每次做地图操作时,都会根据显示范围和显示比例通过SDX+向数据库进行查询分析,并返回数据结果。这个阶段花费的时间就是查询时间。

而绘图时间主要是在客户端得到查询结果之后需要重新绘制地图,这个时间主要在客户端本地耗费。这两个性能指标,作为在进行地图优化的工作过程中是最为重要的,用户可以在SuperMap Deskpro 中使用到。首先保证没有SuperMap Deskpro程序运行,然后打开安装目录下.. \SuperMap\SuperMap Deskpro 6\Bin中的SuperMap.ini文件找到一下内容:

[Layer]

# 是否显示调试对话框

# 调试对话框中可以查看每一层的查询时间和显示时间,以及地图的总的刷新时间

# 0 -- 不显示调试对话框

# 1 -- 显示调试对话框

ShowDebug =     0

注意将ShowDebug参数改为1,保存后打开SuperMap Deskpro,打开任意地图或浏览数据集,就会弹出一个小窗体,如下图:

2-1 SuperMap调试窗口

其中我们看到出现一行信息,第一列DrawID表示进行操作的IDLN代表图层名称、QT代表查询时间、DT代表绘图时间、TT代表总时间而OC表示当前窗口浏览的记录数。通过这些信息我们可以基本看出每个图层所消耗的时间,从而体现出整个地图的性能。

下面先从几个方面讨论下究竟哪些因素会影响地图的性能,并确定其各自是影响的查询时间还是绘图时间,这对于后面采取何种对应的优化方法非常关键。

2.2 计算机环境

2.2.1 硬件及操作系统

内存在是地图显示性能的关键,因为在打开一幅电子地图之后,所有显示出来的图层都是保留在内存中的,显示的图层、对象越多占用的内存资源就越大。因此在配置地图的时候要让当前所显示的图层、对象数量以及复杂程度尽可能保持在合理的范围内。

与显示性能相关的还有显卡,显卡芯片处理图像计算的能力越强,独立显存越高,对应着地图在刷新的时候,对于同样的地图数据,绘图时间会更高。

现在的计算机基本都是支持多核CPU,而服务器则具备支持多CPU的主板,所以在运算环节上并不存在瓶颈,而需要关注的则是通过数据、操作系统等环节的设置,合理利用CPU的资源。

在存储介质上,硬盘目前仍然是一个性能提升的瓶颈,比如IDE7200转与SCSI10000转,虽然只提高了20%的转速,但性能却差异相当大,会提升23倍之多。目前不少服务器采用RaidRedundant Array of Inexpensive Disks)技术,即硬盘集群技术,该项技术会带来很多优势,比如高可用性,安全性,性能的提升。但Raid技术也需要合理使用,否则不会达到理想的效果。Raid0Raid1Raid5,目前使用较多。另外,还有软Raid与硬Raid,后者成本较高,但性能优于软Raid,可查阅相关资料,了解更多关于磁盘集群技术的特性与使用。

而为了提高性能需要解决的一个问题是减少磁盘I/O,将一部分或者全部数据保持在内存中,所有的数据读写都是在内存中。而现在32位操作系统理论最大支持4GRAM,比如Windows Server 2003。一般的操作系统配置最高支持3.7GRAM,而这并不是可以全部被利用的。如果采取内存数据源为策略,那么建议使用64位操作系统或64Oracle

另外一个需要解决的问题就是网络,对于GIS数据的传输,网络必然成为瓶颈,如果是桌面应用程序(Client)加空间数据库服务器(Database Service)的模式,每个数据请求返回的查询结果数据都要以几兆几十兆甚至更大的数据量通过网络发送到客户端。即使是以图片数据传输为主的WebGIS应用,相对于传统网站传输的数据量也是巨大的,因此合理选择网络环境,充裕的带宽,或选择专网专线,加大投入成本是非常必要的。

除了硬件因素影像地图性能意外,操作系统也是非常关键的环节。对于操作系统我们都了解,Windows OS本身设计人性化,图形化界面交互能力强,但是系统稳定性相对Unix\Linux较差。

在我们关注的性能方面,经测试,对于单客户端访问Windows,其性能会优于默认配置的Linux操作系统,其原因可能是默认配置的Linux并非最佳,一些不需要的服务和图形界面会占用资源。根据上文所述,采用无图形界面纯Linux内核的操作系统,性能肯定会优于Windows。在高并发访问上,并发数在20个以下时,Linux上的优势同样不明显,一般多于50个时,其优势会逐渐显现。

2.2.2 数据库

SQL ServerOracle依然是现今使用最为广泛的两种数据库,SQL Server方便的界面化以及依附Windows操作系统使用的便捷性上是其重要的优势。而从性能、稳定性上还是建议使用Oracle,对于海量空间数据的管理,处理高并发,大数据量的吞吐Oracle占据了较大的优势。同时针对其性能可控制的环节更多了。

下文中主要针对Oracle数据库进行性能优化策略的分析。

2.3 数据组织

2.3.1 数据

GIS中的数据主要分为矢量和栅格数据两类,各自对于性能的影响因素不同,这跟源于其各自的数据结构:

矢量数据

矢量数据是用点,线,面及其XY坐标来构建点,线,面等具体空间要素的数据模型。

点实体:在二维空间中,点实体可以用一对坐标XY来确定位置;

线实体:线实体可以认为是由连续的直线段组成的曲线,用坐标串的集合(X1Y1X2Y2……XnYn)来记录;

面实体:在记录面实体时,通常通过记录面状地物的边界来表现,因而有时也称为多边形数据。

每个空间对象的复杂度往往和节点数有关,比如在较大比例尺的全国行政区划数据层中,每个省、自治区面对象节点数就有成千上万个,这样的数据没有进行优化的话,浏览的性能会相对低一些。

另外某些数据是类似CAD数据格式制作的,那么在导入到SuperMap数据源中之后如果依然使用复合数据集的方式管理,那么在显示性能方面也会存在些问题。

首先复合数据集是可以同时存储点、线、面、文本数据的,也就是所有的地图数据全部在一个图层中,如果在全幅显示的情况下,速度会比较慢,而如果选择导入为简单数据集,那么后面经过地图图层显示比例的控制,可以很好的提升地图的整体性能。

总之,在矢量数据的组织上,建议合理降低数据本身的复杂度,同时尽可能分层管理数据,并进行显示比例的控制,达到地图调优的目的。

栅格数据

栅格数据的范围和分辨率是影响地图性能的主要因素,同时大多数的影像格式都对影像进行了压缩,根据影像用途的不同影像压缩的方式也不同,压缩比越高的数据显示性能越高,但数据精度越低。而使用SuperMap导入的影像并没有主要采取压缩的策略进行优化,而是采用了影像金字塔的方式,在保持数据原有数据精度的基础上提高了数据的显示效率。

编码技术

矢量和栅格数据都可以使用编码压缩技术,对数据进行压缩,提高数据的显示效率。

矢量数据有SDCSWC两种,应用于线、面类型,对点数据集不起作用。压缩比为4倍。精度损失为1/216。数据集中对象大小比较平均的情况下,推荐使用此种编码方式。

SDCDWORD编码类型,应用于矢量数据集(线、面类型)的一种编码方式,对点数据集不起作用。压缩比为2倍。精度损失为1/232,按照全球大小的对象估计,精度损失在毫米级。总结其优势:压缩速度快,损失小,原图和编码后的图对比浏览时,基本看不到差别。可以说SDC是几乎接近无损的一种编码方式,一般的数据推荐使用SDC

栅格数据使用DCT编码方式,即离散余弦变换,是最适合于遥感影像的一种编码方式,压缩比一般为20倍。另外SuperMap自主研发的影像压缩格式SIT,并没有对影像进行压缩,而是采用影像金字塔技术,提高了数据的显示性能,同时这类数据导入到由SuperMap创建的数据源中的效率也是非常高的。

2.3.2 图层划分

前面已经提到过,如果要配置一幅高性能的地图,数据组织上最好通过分层管理的方式。由于地图性能主要取决于当前地图窗口中可显示的图层,因此合理设置每个图层的显示比例,是最基础也是效果最突出的优化方式。

控制图层显示比例的目的是为了使原本保存在同一个数据集中的数据,由于其中的几类数据不适合显示在同一比例下,才采用了分层管理的方式。然而,如果图层过多,而很多图层的显示比例是一样的,这样就没有必要了,地图的性能也会受影响。所以,是否需要分层还需要根据数据规范、业务逻辑来进行分析判断。


你可能感兴趣的:(高性能)