SuperMap SDX+ 引擎优化

本节主要介绍SuperMap SDX + 的优化策略,您可以根据需要选择适合自己的优化方式。

  1. 选择合适的硬件平台

    硬件平台对GIS系统的性能仍起着重要作用,但硬件并不是越昂贵就越合适,必须根据系统的需求进行合理规划,选择适合自己GIS系统的高性价比硬件平台。

    下面是选择硬件平台时可以参考的选项:

  2. 选择使用文件缓存功能

    文件缓存是SuperMap SDX+为均衡网络和服务器负载、提高应用整体性能而提供的智能分布式存储方案。开启文件缓存功能后,应用程序在访问存储在空间数据库或网络服务器中的数据时,会首先检查本地缓存库中是否已经有相应数据的最新版本,如果没有相应的缓存数据或是缓存数据不是最新版本,则从服务器端读取数据并更新本地缓存数据,这样下次访问的时候就可以直接读取本地缓存数据;如果本地缓存中已经有了相应数据的最新版本,则不必通过网络向服务器请求数据,而是直接读取本地缓存数据来完成显示或分析的功能。通过这种解决方案,可以大幅降低数据库服务器负载和网络负载,从而大幅提高应用程序的整体性能。

    下面举例说明使用缓存模式与不使用缓存模式显示速度的差异。测试数据:某市1:500地形图的线状地物数据集(记录数:69万);服务器:普通PC兼容机、CPU(P4 2.4)、内存(DDR 1024M)、硬盘(7200转);客户端与服务器为同一台机器。

    以下测试均为数据全幅显示,测试三次并求平均值:

    表1:缓存与非缓存模式全幅显示时间对比
    模式 时间(秒)
    非缓存模式 第一次 9.50
    第二次 9.41
    第三次 9.32
    平均值 9.41
    缓存模式 第一次 3.56
    第二次 3.40
    第三次 3.50
    平均值 3.49

    从上表可以看出,缓存模式的显示速度要远远快于非缓存模式,因此,若数据不是频繁变更,请选择使用文件缓存模式。

  3. 为Layer设置合适的MinVisibleGeometrySize属性值

    Layer的MinVisibleGeometrySize属性值决定几何对象的最小可见大小,以像素为单位,默认值为4。设置此属性后,如果对象的显示尺寸小于此值,将不显示此对象。

    对于数据量较大或很大(记录数大于50000)的线、面、网络等数据集,为Layer设置合适的MinVisibleGeometrySize属性值可以取得很好的优化效果。

    测试数据:某市1:500地形图的线状地物数据集(记录数:69万)

    服务器:普通PC兼容机,CPU:P4 2.4 内存:DDR 1024M 硬盘:7200转

    客户端:普通PC兼容机,CPU:PIII 667 内存:256 硬盘:5400转

    以下测试均为数据全幅显示,测试三次并求平均值:

    表2:不同的MinVisibleGeometrySize下全幅显示的时间
      0 1 2 3 4 5
    第一次 19.75秒 15.60秒 14.62秒 13.81秒 13.65秒 13.51秒
    第二次 19.59秒 15.28秒 14.84秒 13.90秒 13.91秒 13.66秒
    第三次 19.31秒 15.41秒 14.32秒 13.91秒 13.85秒 13.44秒
    平均值 19.55秒 15.43秒 15.43秒 13.87秒 13.80秒 13.64秒

    通过上面的对比,得出如下结论:

    针对您的系统数据,也可以通过对比测试找到性能与显示效果的最佳切入点。Layer的MinVisibleGeometrySize值推荐范围:0~5。

  4. 建立空间索引

    SuperMap SDX+ 提供了四种空间索引来提高数据访问速度,包括:

    1. R树索引,支持文件型数据源和数据库数据源。R树索引的空间检索效率非常高、精度也高,但R树索引的更新比较复杂,因此更适合于静态数据;
    2. 四叉树树索引,支持文件型数据源和数据库数据源。适用于小数据量的高并发编辑。
    3. 多级网格索引,只适用于数据库数据源。用划分多层网格的方式来组织管理数据。当数据集在进行浏览的时候,多级网格索引方式的速度会比较快,而且多级网格索引的更新和并发能力好,空间检索的精度和准确性高;
    4. 图库索引,只适用于数据库数据源。根据字段或范围设置将空间对象进行分类或分幅显示,主要用来处理分幅数据,适合在海量数据,图库索引和文件缓存相结合大大提高了数据的显示和查询速度,更适合数据浏览,不适合数据编辑。

    SuperMap SDX + 在将数据导入到数据库中时会自动为其建立空间索引(在最新版本中,默认索引类型是多级网格索引),您也可以根据自己的需要建立其他索引。

    随着数据的变更(添加、删除和修改),会出现不完整的空间索引,当修改的数据量很大时,会影响数据的访问速度,这个时候需要更新或重建索引。IsSpatialIndexDirty判断矢量数据集中空间索引是否需要重建,若IsSpatialIndexDirty值为TRUE,则需要重建索引;若IsSpatialIndexDirty值为FALSE,则不需要重建索引。

  5. 建立字段索引

    在使用SuperMap进行二次开发的过程中,如果需要频繁使用某一字段的值进行定位、查询等操作,若为此类字段建立索引,这样可以很大程度地提高程序运行的效率。

  6. 关于影像数据的优化

    SuperMap的影像金字塔技术可以轻松地胜任海量影像数据的组织管理,使用SuperMap影像金字塔技术,可以实现与数据量无关、显示区域无关的海量影像数据的流畅漫游。

    对于比较大的影像数据,建立影像金字塔可以明显提高影像数据的显示速度。举例说明如下,数据文件:北京地区(局部)547平方公里遥感卫星影像(共10图幅);像素格式:24位真彩;总像素数:2606464372;原始数据大小:7457.15438M,下表为未建立影像金字塔与已建立影像金字塔的全副显示和放大显示时间对比。

    表3:全幅显示和放大显示时间对比
      未建立影像金字塔 已建立影像金字塔
    全幅显示 14分28秒 <0.5秒
    放大2倍 6分35秒 <0.5秒
    放大4倍 4分10秒 <0.5秒
    放大8倍 1分57秒 <0.5秒
    放大16倍 1分02秒 <0.5秒
    放大32倍 24秒 <0.5秒
    放大64倍 8.06秒  <0.5秒

    从上表可以看出,将近7.5G的影像数据,SuperMap可以保证任意区域、任意范围的浏览显示时间控制在1秒以内,为海量影像数据的组织管理及使用提供了令人放心的解决方案。