超图产品需求研究

绘制耗时优化

地图的绘制耗时是指显示和渲染数据所需要的时间。想优化地图的绘制耗时需要提升地图要素的显示效率,可从优化数据集和显示效果两方面进行优化:数据量大小、显示对象个数、显示效率等,具体说明如下:

优化数据集

数据集的优化方案有数据类型、字段索引、数据重复性、数据复杂度、排查数据错误这几方面,下文将对各个方案进行详细的介绍。

  • 数据集类型

地图尽量使用简单数据集,少使用 CAD 数据集。因为简单数据集不需要存储对象风格,且比复合数据集的数据量小。例如,对某地区的三级道路地图数据进行测试,道路数据分别使用简单线数据集存储和CAD复合数据集存储,测试两种情况下地图刷新一次的效率,结果如下图所示,在相同条件下,简单线数据集的刷新耗时约为 500 毫秒,CAD数据集的刷新耗时约为 950 毫秒。由此可见,同样内容和数据量的数据,简单类型数据集比复合类型数据集的绘制和查询时间都少,因此地图中尽量使用简单类型数据。

  • 字段索引

字段索引提供了对特定键值的数据快速访问的能力字段索引一般采用二叉树或者二叉树的衍生数据结构。若数据集中某一字段需要用于 SQL 查询、分析、专题图制作、过滤表达式等功能,可为该字段创建字段索引。创建字段索引后可提升地图绘制的效率。

例如:对 ThreeRoad_Ln 线数据要用于制作标签专题图,在未对该数据中字段创建索引时,诊断的地图耗时约为 310ms,对用于制作标签专题图中的 NAME 字段创建字段索引之后,地图刷新的总耗时约为 240ms,地图的绘制和查询耗时都有所减少。由此说明,创建数据集的字段索引可提升地图的绘制和查询效率。

  • 数据错误

    数据错误包括数据范围错误和数据不合理两种情况,下文分别对这两种情况进行说明:

    • 数据范围错误

    数据范围错误主要原因之一就是有坐标异常的数据,如何检查数据范围错误,或者数据范围错误的表象是什么,方法如下:

    在新建地图窗口中添加单个数据集并进行全幅显示可检查数据范围的正确性,如果地图主要区域缩成一小团,就有可能存在坐标异常的数据;

    检查数据集中坐标,点数据集中是SMX和SMY,线面数据集中是SmSdriW、SmSdriN、SmSdriE、SmSdriS四个字段,通过字段列的升降序可检查是否有异常数据。

    • 数据合理性

    下面几种数据情况会影响到地图的显示效率:

    1. 地图中,记录数达到百万条以上的数据图层非常多。

    2. 有大量的图层,但每个图层中的对象数目太少。

    3. 存在大量的长度小于10米的道路、河流或面积小于100平米的公园。

    4. 问题一:尽可能将数据分开,可以按数据类型进行划分,也可以按地理位置进行划分。

    5. 问题二:合并同类型的数据集。

    6. 问题三:确定最小长度或面积的标准,如线对象的长度不能小于10米、面对象的面积不能小于100平米等,若存在不符合标准的几何对象,可进行如下操作:

      • 鉴于数据质量参差不齐,请先对线、面数据集进行融合,并对面数据集进行碎小多边形合并;
      • 图层关联浏览属性数据,并对SmLength或SmArea字段进行升序排列,检查是否存在应该存在但长度或面积过小的对象;
      • 修改融合容限,及碎小多边形容限,直至不存在长度或面积过小的对象;
      • 使用数据集右键菜单中浏览属性数据,对SmLength或SmArea字段进行升序排列,删除长度或面积过小的对象。
  • 降低数据复杂度

数据复杂性的表现之一为:节点过多、子对象过多,若存在数据节点过多的问题,线数据集可直接进行重采样,面数据集推荐先拓扑转线再对线进行重采样,再重新拓扑构面。在子对象过多的问题上,推荐对几何对象进行分解,在分解前需要排查图层中对象,避免分解岛洞多边形。

  • 重采样

通过重采样,可将直路线中的不必要节点减少,只保留了必要的节点。例如,某条单行线道路,其线对象走势区域直线,当显示该线对象的节点时,发现此线对象存在众多节点,而实际上很多节点都是多余的,所以有必要删除这些冗余节点,这里通过对线数据进行重采样的方式来去除冗余节点。

  • 避让

数据较大且带有标注的点数据,在比例尺较小的地图中显示时会比较密集,通常我们可以通过标签专题图的压盖和避让设置来实现目标效果。首先打开该点数据对应的标签专题图的属性面板,在“属性”面板中勾选“自动避让”,在“高级”选项卡中设置“文本避让的缓存范围”为合适的距离数据,于此同时,必须勾选“地图属性”设置对话框中“压盖设置”列表中的“点随标签显隐”,设置完成后,即可实现地图标签合理显示的效果。

  • 抽稀点

单个图层中的点对象显示紧密,还可以通过点抽稀的方式实现,根据指定的抽稀半径,即可将点数据抽稀,使得地图达到符合所预期的点稀疏程度的效果。即可优化地图的绘制效率,又可以提升地图的美观性。

地图显示优化

地图中显示的对象个数和显示效果的相关设置对绘制耗时也有很大的影响,例如分级配图,是否设置了流动显示、反走样、十字路口优化等等,具体优化方案如下:

  • 图层比例尺

地图在不同比例尺下所体现的内容的详细程度是不同的,所以地图中的每一个图层并不是在所有比例尺下都需要显示出来,因此有必要控制图层的最小显示比例尺和最大显示比例尺,从而保证保持某一比例尺内显示的内容最少。这样可以有效提升地图的浏览、操作效率。 如下图所示,四川省电子地图的三个比例尺的显示内容,随着比例尺的放大,小比例尺下显示的图层内容在大比例尺下显示就显得毫无意义。相反,大比例尺下的显示的图层内容在小比例尺下也无需显示。因此,就需要根据具体的地图需求,合理安排不同比例尺级别下的显示内容。在图层属性对话框中,“最小可见比例尺”和“最大可见比例尺”可以设置该图层的显隐条件。当地图的比例尺小于所设置的“最小可见比例尺”或者大于所设置的“最大可见比例尺”,图层都是不可见的。

  • 图层属性

  • 设置对象显示顺序

对文件型数据源中单值、分段专题图而言,如果专题图子项为符号填充,且专题表达式由一个字段构成,请在图层属性中将此字段设置为该专题图层的【对象显示顺序字段】。这种方式可以在一定程度上提升绘制效率,在海量地图数据下,提升较为明显和重要。

  • 对象最小显示尺寸

在地图比例尺较小的情况下,对于图层中的一些小对象在当前比例尺下几乎不可见,并且显示处理意义不大,所以,可以通过“图层属性”设置对话框中的“对象最小显示尺寸”,设置一个显示条件,小于给定值的对象不可见,可在一定程度上提升地图刷新效率。

  • 标签专题图图层设置

地图中的标签专题图层对地图性能影响最大,针对标签专题图层的一些属性设置,需要谨慎对待,例如配图过程中建议不勾选流动显示,在数据量较大的情况下建议关闭自动避让,因为自动避让是实时计算的。

  • 十字路口优化

一般在道路制图中,遇到道路交叉的路段,默认情况下是按照路段矢量化的先后顺序来决定其在地图上的绘制顺序,从而产生道路叠放的结果。此时,会给人一种叠放的两条道路在实际中是上下层的立交关系,而实际上,发生叠置的道路在交叉处是十字路口或者丁字楼口,对于一些道路数据图层。

开启十字路口优化也将降低地图的性能,在允许的情况下可以选择另一种制图手段来实现十字路口优化的效果,十字路口优化功能开启后,图层的绘制性能会有所下降,这里提供一个可替代方案。上面已经说明出现道路交叉路口线型效果不合理,是由于使用的线型符号由两个不同风格线条叠加形成,如图下所示。 我们可以将同一个道路数据添加两次到地窗口中,制作两个图层,两个道路图层都采用普通单一线条的线型符号,并设置位于上层道路的颜色为道路的填充颜色,这里设置为白色,设置一个合适的线宽;下层道路的颜色为边线的颜色,这里设置为灰色,设置的线宽要大于上个道路图层的线宽,从而模拟由两条不同风格和宽度的线条叠加而成的线型符号。这种方式道路交叉口的渲染与十字路口优化后的效果相同,但是性能却略高于开启十字路口优化功能的图层。

image.png
  • 地图属性

地图的一些属性设置对性能影响较大,所以在实际应用中要考虑是否使用替代方案来达到下面地图属性设置的效果:动态投影、线型反走样、文本反走样、压盖设置。SuperMap 软件在图层级别中也提供了反走样和压盖设置,不需要开启整个地图的反走样和压盖设置,仅对个别图层设置反走样或压盖即可。开启动态投影也会对地图性能有所影响,建议将待添加到同一幅地图中的数据先统一转换为一致的投影,以避免因为开启动态投影影响地图的刷新效率。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,635评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,628评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,971评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,986评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,006评论 6 394
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,784评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,475评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,364评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,860评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,008评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,152评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,829评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,490评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,035评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,428评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,127评论 2 356

推荐阅读更多精彩内容

  • 1 CALayer IOS SDK详解之CALayer(一) http://doc.okbase.net/Hell...
    Kevin_Junbaozi阅读 5,152评论 3 23
  • 第二章 使用ArcPy编写脚本 ||| 第四章 查找和修复数据源 我们将在本章介绍以下案例: 引用当前地图文档 引...
    muyan阅读 14,693评论 19 23
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,105评论 1 32
  • 基础 核心动画是 iOS 和 MacOS 上的图形渲染和动画基础结构,用于为应用的视图和其他视觉元素设置动画。 核...
    davon阅读 1,907评论 0 8
  • 2018.3.20.星期二,天气阴,(99)二年级一班刘紫涵 早上出去买的早饭回来一看二宝醒了在自己玩,大宝...
    凤舞涵歆阅读 90评论 0 0