#二维地图性能排查
影响二维地图性能的因素主要有:地图数据、地图配置、缓存使用和网速。本文从这四个方面,对如何查找地图性能问题及地图优化来进行阐述。实际操作中,请结合SuperMap iDesktop性能诊断工具一起使用。
1. 检查数据
数据主要从以下五个方面来检查:
-
-
数据范围是否正确;
-
是否存在一定的错误数据;
-
是否有重复数据的存在;
-
是否因数据太复杂而导致地图太慢;
-
数据是否可以进一步优化。
1.1. 范围错误
1.1.1. 样例展示
1.1.2. 解决方法
对于样例展示中第1、2种情况,需要人工检查,目前尚无方法能直接识别。
对于第3种情况,主要是指上海地图中包含四川区域数据这一类范围错误的情况,推荐解决方法如下:
-
-
在新建地图窗口中添加单个数据集并进行全幅显示可检查数据范围的正确性,如果地图主要区域缩成一小团,就有可能存在坐标异常的数据;
-
检查数据集中坐标,点数据集中是SMX和SMY,线面数据集中是SmSdriW、SmSdriN、SmSdriE、SmSdriS四个字段,通过字段列的升降序可检查是否有异常数据。
1.2. 数据错误
1.2.1. 样例展示
1.2.2. 解决方法
-
-
问题一
-
-
尽可能将数据分开,可以按数据类型进行划分,也可以按地理位置进行划分。
-
-
问题二
-
-
合并同类型的数据集。
-
-
问题三
确定最小长度或面积的标准,如线对象的长度不能小于10米、面对象的面积不能小于100平米等,若存在不符合标准的几何对象,可进行如下操作:
-
-
鉴于数据质量参差不齐,请先对线、面数据集进行融合,并对面数据集进行碎小多边形合并;
-
图层关联浏览属性数据,并对SmLength或SmArea字段进行升序排列,检查是否存在应该存在但长度或面积过小的对象;
-
修改融合容限,及碎小多边形容限,直至不存在长度或面积过小的对象;
-
使用数据集右键菜单中浏览属性数据,对SmLength或SmArea字段进行升序排列,删除长度或面积过小的对象。
-
问题四
在SQL查询中使用distinct方法(桌面SQL查询窗口查询字段输入框中使用),并结合人工检查来判定数据集是否存在名称相同的几何对象。使用distinct方法检查名称相同的几何对象,并配合人工检查。
1.3. 数据重复
数据重复主要是指空间数据或属性数据存在一定的重叠,推荐使用如下方法进行数据冗余的检查:
-
-
使用拓扑检查中的无重复点、线线无重叠、面面无重叠等拓扑规则对数据集进行检查,或使用distinct方法检查数据集中坐标信息的唯一性;
-
使用distinct方法检查属性中字段值重复的情况,尽可能避免字段值相同但并非同一对象的情况,若发生此类情况推荐使用数据融合。
1.4. 数据复杂
数据复杂主要包括两方面:节点过多、子对象过多。
在节点过多问题上,线数据集可直接进行重采样,面数据集推荐先拓扑转线再对线进行重采样,再重新拓扑构面。
在子对象过多的问题上,推荐对几何对象进行分解,在分解前需要排查图层中对象,避免分解岛洞多边形。
1.5. 数据优化
-
-
空间索引
为每一个需要在地图上显示的数据集创建空间索引,推荐使用R树索引和图库索引。
-
-
字段索引
若数据集中某一字段可能用于SQL查询、分析、专题图制作等功能,请为该字段创建字段索引。
-
-
数据抽稀
-
-
此方法与数据复杂中节点过多一致,均使用重采样方法。
-
-
数据集类型
如果可以,请尽量使用简单数据集而非CAD数据集,因为简单数据集不需要存储风格,它比复合数据集数据量小。
-
-
数据集编码
对数据库型数据源,尽可能设置数据集编码,数据集编码能减少数据量大小,对数据库型数据源而言,可以减少数据传输总量。
-
-
影像金字塔
对所有的栅格影像数据务必创建影像金字塔。
2. 检查地图
在检查地图时,需提前将地图输出为地图模板(确定地图图层数量和地图显示比例尺时可以用到模板)。
2.1. 地图图层数量
2.1.1. 原则
控制图层数量,推荐图层数不超过50个(图层数量等于地图模板中sml:Layer的个数)。本原则与1.2节中问题一需要多次尝试,在数据集记录数与图层数量之间寻找一个平衡点,目前暂无推荐值。
2.1.2. 处理办法
根据项目中需要显示的比例尺集来设置。如项目最后使用【100万、50万、25万、10万、5万、2.5万、1万、5千、2.5千、1千】这10个比例尺,需要确定最小比例尺即1:100万显示的图层,随着比例尺变大,再向地图中增加需要显示的图层。
2.2. 地图显示比例尺
2.2.1. 原则
每个图层都需设置最大、最小可见比例尺,保持某一比例尺内显示的内容最少。
2.2.2. 处理办法
图层需要控制最小显示比例尺,即地图放大到某一级别后图层才能显示,同时也需要控制最大显示比例尺,全幅显示的要素在最大的比例尺级别可不必显示,如1:1000或更大的级别就可以不显示全国省级行政区划图。
2.3. 地图属性
请尽可能找到方法替代如下功能:
-
-
动态投影
-
线型反走样
-
文本反走样
-
压盖设置
2.4. 图层属性
2.4.1. 一般图层
针对一般图层,请尽可能使用简单的风格来表达,简单风格耗费的时间相对较短,如纯色填充对比符号填充需要的处理时间更少,在数据量较大的情况下对比尤为明显。
图层风格具体注意事项请参考技术资源中心【SuperMap地图优化初探】文档。
2.4.2. 标签图层
标签图层是对地图性能影响最大的图层,在本图层中,请谨慎设置如下选项:
-
-
流动显示
地图出缓存时会关闭此项,所以在配图过程中也可以去掉此项。
-
-
自动避让
每一个对象的自动避让都是时时计算得到的,在数据量较大的情况下建议关闭此功能。
-
-
沿线标注
沿线标注时,一定要多检查线数据集,看是否存在子对象过多的情况,如果某一线对象包含大量子对象,将该线对象分解后的地图性能可能会提升数倍。
2.4.3. 其他专题图图层
-
-
专题图类型
在数据量较小的情况下(比如单值项在100以内),自定义专题图的性能最差。当数据量较大时,自定义专题图的性能优于其他专题图。
-
-
专题字段
专题字段显示效率对比:byte>short>long>text。
-
-
对象显示顺序
对文件型数据源中单值、分段专题图而言,如果专题图子项为符号填充,且专题表达式由一个字段构成,请在图层属性中将此字段设置为该专题图层的【对象显示顺序字段】。
3. 检查缓存
B/S系统在使用地图时,一般会提前制作地图缓存。然而,在发布服务时,大多数用户会直接发布工作空间,实际上这种行为并非性能最优的做法。在发布服务时,推荐发布缓存数据(将缓存sci保存为一个工作空间)而非原始工作空间,发布缓存会直接读取图片,而发布工作空间需要进行图片位置的计算,二者性能上有较大差异。
4. 检查网速
对数据库型数据源而言,数据显示除了与数据量有关外,还与网络带宽有关。在保证本地地图显示性能没有问题的情况下,若数据库型地图显示性能差异较大,可使用工具监测当前局域网网速(如360测速工具)。
网友评论