SuperMap OraclePlus数据源提升地图浏览性能小技巧

来源:互联网 发布:iphone网络制式怎么看 编辑:程序博客网 时间:2024/05/16 04:37

**Mr Man

 随着数据库技术的发展,使用数据库存储数据成为信息时代的主流,超图软件提供了OraclePlus数据库型数据源,用来存储各种矢量,栅格以及影像数据用于制图和分析。由于是数据库型数据源,当我们用到大量矢量数据集来制图时,会出现地图浏览耗时长的现象,这对浏览地图效果造成不佳。下面,我们从理论和优化方法两方面对如何提升OraclePlus数据源地图浏览性能进行阐述:

一、 理论分析:
众所周知,地图缓存技术是为了改善用户体验,提高运行效率,节省工作时间而出现的一门技术,是目前主流地理信息系统中普遍采用的一种图形显示技术手段。该技术的出现,大大缩短了用户的等待时间,同时提高了工作效率,使图形数据的浏览过程变得高效流畅。同理在超图桌面的OraclePlus数据源中的矢量数据集中,也有一种缓存机制,称为“用户缓存”。所谓”用户缓存”:即为在OraclePlus数据源中为矢量数据集创建索引类型为“图库索引”之后生成的一种缓存机制。
图库索引是针对数据库型数据源的。根据范围或者某一字段对矢量数据集创建图库索引。用表示对象所属区域的字段来创建图库索引,或者按范围创建时,每一块里的记录数尽量平均,比如每块范围内有2000~20000个对象,范围不要太大或太小,这样的效果都很好。一般推荐范围:30×30即900个格子,这样的推荐值适合10万条记录的数据集。如果实际数据与此不同,则需要修改范围的长和宽。
图库索引目前仅支持的是数据库型数据源中的点、线、面、文本和 CAD 数据集。
在对矢量数据集重建空间索引(图库索引)后,对应的矢量数据集在Oracle数据库中会生成一张索引表,表名一般为LIB_SMDTV。在对矢量数据集创建了空间索引后,数据集属性表中的SmLibTileID字段对应索引表中的SmID。数据集表中的SmLibTileID字段和索引表中的SMID字段为一对多的关系。由于刷新地图包括绘制总耗时和查询总耗时。建立图库索引提升地图浏览性能的关键就在于提高了查询效率。下面介绍OraclePlus数据源数据查询具体过程:
第一步,根据获取当前地图窗口的范围围;
第二步,根据范围和图库索引分幅时每个图幅的大小,判断在当前视图中都有哪些图幅需要显示;
第三步,在对应的索引表(Lib_数据集表名)中找到与这些图幅对应的SMID值;
第四步,通过这个SMID值与数据集表的SmLibTileID字段的关联关系,找到所需要显示的对象。
通过以上四步,就可以快速定位到所需显示的对象。当在iDesktop桌面中勾选了“用户缓存”,则刷新图层的的时候,系统会从Oracle数据库中通过SMDTV表调用建立空间索引(图库索引)的LIB_SMDTV这张索引表,即使用矢量数据集缓存机制。在制图中,勾选 “用户缓存”使用矢量数据集缓存机制,在地图浏览时将会缩短损耗时间。如果不想用矢量数据缓存机制,在矢量数据集的属性中,选择“矢量”,勾掉“用户缓存”即可。
二、优化方法:
1.测试数据:此优化示范数据为示范数据的China地图,此地图中为37个矢量数据集图层使用“用户缓存”,下边为优化过程以及优化结果。
2.打开OraclePlus数据源,右键“矢量数据集”,点击“属性”,勾选“用户缓存”即可。(注:勾选“用户缓存”前必须为矢量数据集创建“图库索引”类型的空间索引),如下图:
这里写图片描述

3.优化效果:
在勾选“用户缓存”之前,利用iDesktop中的“性能诊断”功能测出地图刷新耗时(1500ms),如下图:
这里写图片描述
在勾选“用户缓存”之后,利用iDesktop中的“性能诊断”功能测出地图刷新耗时(1000ms),如下图:
这里写图片描述
对比之下可以看出,在勾选“用户缓存”使用了缓存机制后,总耗时会优化500ms的时间。根据制图所需矢量数据多少以及不同比例尺下的地图刷新,优化的时间会有不同。童鞋们,还在等什么,快去试试吧!

0 0
原创粉丝点击