超圖產(chǎn)品需求研究

繪制耗時優(yōu)化

地圖的繪制耗時是指顯示和渲染數(shù)據(jù)所需要的時間。想優(yōu)化地圖的繪制耗時需要提升地圖要素的顯示效率,可從優(yōu)化數(shù)據(jù)集和顯示效果兩方面進行優(yōu)化:數(shù)據(jù)量大小、顯示對象個數(shù)、顯示效率等,具體說明如下:

優(yōu)化數(shù)據(jù)集

數(shù)據(jù)集的優(yōu)化方案有數(shù)據(jù)類型、字段索引、數(shù)據(jù)重復(fù)性、數(shù)據(jù)復(fù)雜度、排查數(shù)據(jù)錯誤這幾方面,下文將對各個方案進行詳細(xì)的介紹。

  • 數(shù)據(jù)集類型

地圖盡量使用簡單數(shù)據(jù)集,少使用 CAD 數(shù)據(jù)集。因為簡單數(shù)據(jù)集不需要存儲對象風(fēng)格,且比復(fù)合數(shù)據(jù)集的數(shù)據(jù)量小。例如,對某地區(qū)的三級道路地圖數(shù)據(jù)進行測試,道路數(shù)據(jù)分別使用簡單線數(shù)據(jù)集存儲和CAD復(fù)合數(shù)據(jù)集存儲,測試兩種情況下地圖刷新一次的效率,結(jié)果如下圖所示,在相同條件下,簡單線數(shù)據(jù)集的刷新耗時約為 500 毫秒,CAD數(shù)據(jù)集的刷新耗時約為 950 毫秒。由此可見,同樣內(nèi)容和數(shù)據(jù)量的數(shù)據(jù),簡單類型數(shù)據(jù)集比復(fù)合類型數(shù)據(jù)集的繪制和查詢時間都少,因此地圖中盡量使用簡單類型數(shù)據(jù)。

  • 字段索引

字段索引提供了對特定鍵值的數(shù)據(jù)快速訪問的能力字段索引一般采用二叉樹或者二叉樹的衍生數(shù)據(jù)結(jié)構(gòu)。若數(shù)據(jù)集中某一字段需要用于 SQL 查詢、分析、專題圖制作、過濾表達式等功能,可為該字段創(chuàng)建字段索引。創(chuàng)建字段索引后可提升地圖繪制的效率。

例如:對 ThreeRoad_Ln 線數(shù)據(jù)要用于制作標(biāo)簽專題圖,在未對該數(shù)據(jù)中字段創(chuàng)建索引時,診斷的地圖耗時約為 310ms,對用于制作標(biāo)簽專題圖中的 NAME 字段創(chuàng)建字段索引之后,地圖刷新的總耗時約為 240ms,地圖的繪制和查詢耗時都有所減少。由此說明,創(chuàng)建數(shù)據(jù)集的字段索引可提升地圖的繪制和查詢效率。

  • 數(shù)據(jù)錯誤

    數(shù)據(jù)錯誤包括數(shù)據(jù)范圍錯誤和數(shù)據(jù)不合理兩種情況,下文分別對這兩種情況進行說明:

    • 數(shù)據(jù)范圍錯誤

    數(shù)據(jù)范圍錯誤主要原因之一就是有坐標(biāo)異常的數(shù)據(jù),如何檢查數(shù)據(jù)范圍錯誤,或者數(shù)據(jù)范圍錯誤的表象是什么,方法如下:

    在新建地圖窗口中添加單個數(shù)據(jù)集并進行全幅顯示可檢查數(shù)據(jù)范圍的正確性,如果地圖主要區(qū)域縮成一小團,就有可能存在坐標(biāo)異常的數(shù)據(jù);

    檢查數(shù)據(jù)集中坐標(biāo),點數(shù)據(jù)集中是SMX和SMY,線面數(shù)據(jù)集中是SmSdriW、SmSdriN、SmSdriE、SmSdriS四個字段,通過字段列的升降序可檢查是否有異常數(shù)據(jù)。

    • 數(shù)據(jù)合理性

    下面幾種數(shù)據(jù)情況會影響到地圖的顯示效率:

    1. 地圖中,記錄數(shù)達到百萬條以上的數(shù)據(jù)圖層非常多。

    2. 有大量的圖層,但每個圖層中的對象數(shù)目太少。

    3. 存在大量的長度小于10米的道路、河流或面積小于100平米的公園。

    4. 問題一:盡可能將數(shù)據(jù)分開,可以按數(shù)據(jù)類型進行劃分,也可以按地理位置進行劃分。

    5. 問題二:合并同類型的數(shù)據(jù)集。

    6. 問題三:確定最小長度或面積的標(biāo)準(zhǔn),如線對象的長度不能小于10米、面對象的面積不能小于100平米等,若存在不符合標(biāo)準(zhǔn)的幾何對象,可進行如下操作:

      • 鑒于數(shù)據(jù)質(zhì)量參差不齊,請先對線、面數(shù)據(jù)集進行融合,并對面數(shù)據(jù)集進行碎小多邊形合并;
      • 圖層關(guān)聯(lián)瀏覽屬性數(shù)據(jù),并對SmLength或SmArea字段進行升序排列,檢查是否存在應(yīng)該存在但長度或面積過小的對象;
      • 修改融合容限,及碎小多邊形容限,直至不存在長度或面積過小的對象;
      • 使用數(shù)據(jù)集右鍵菜單中瀏覽屬性數(shù)據(jù),對SmLength或SmArea字段進行升序排列,刪除長度或面積過小的對象。
  • 降低數(shù)據(jù)復(fù)雜度

數(shù)據(jù)復(fù)雜性的表現(xiàn)之一為:節(jié)點過多、子對象過多,若存在數(shù)據(jù)節(jié)點過多的問題,線數(shù)據(jù)集可直接進行重采樣,面數(shù)據(jù)集推薦先拓?fù)滢D(zhuǎn)線再對線進行重采樣,再重新拓?fù)錁?gòu)面。在子對象過多的問題上,推薦對幾何對象進行分解,在分解前需要排查圖層中對象,避免分解島洞多邊形。

  • 重采樣

通過重采樣,可將直路線中的不必要節(jié)點減少,只保留了必要的節(jié)點。例如,某條單行線道路,其線對象走勢區(qū)域直線,當(dāng)顯示該線對象的節(jié)點時,發(fā)現(xiàn)此線對象存在眾多節(jié)點,而實際上很多節(jié)點都是多余的,所以有必要刪除這些冗余節(jié)點,這里通過對線數(shù)據(jù)進行重采樣的方式來去除冗余節(jié)點。

  • 避讓

數(shù)據(jù)較大且?guī)в袠?biāo)注的點數(shù)據(jù),在比例尺較小的地圖中顯示時會比較密集,通常我們可以通過標(biāo)簽專題圖的壓蓋和避讓設(shè)置來實現(xiàn)目標(biāo)效果。首先打開該點數(shù)據(jù)對應(yīng)的標(biāo)簽專題圖的屬性面板,在“屬性”面板中勾選“自動避讓”,在“高級”選項卡中設(shè)置“文本避讓的緩存范圍”為合適的距離數(shù)據(jù),于此同時,必須勾選“地圖屬性”設(shè)置對話框中“壓蓋設(shè)置”列表中的“點隨標(biāo)簽顯隱”,設(shè)置完成后,即可實現(xiàn)地圖標(biāo)簽合理顯示的效果。

  • 抽稀點

單個圖層中的點對象顯示緊密,還可以通過點抽稀的方式實現(xiàn),根據(jù)指定的抽稀半徑,即可將點數(shù)據(jù)抽稀,使得地圖達到符合所預(yù)期的點稀疏程度的效果。即可優(yōu)化地圖的繪制效率,又可以提升地圖的美觀性。

地圖顯示優(yōu)化

地圖中顯示的對象個數(shù)和顯示效果的相關(guān)設(shè)置對繪制耗時也有很大的影響,例如分級配圖,是否設(shè)置了流動顯示、反走樣、十字路口優(yōu)化等等,具體優(yōu)化方案如下:

  • 圖層比例尺

地圖在不同比例尺下所體現(xiàn)的內(nèi)容的詳細(xì)程度是不同的,所以地圖中的每一個圖層并不是在所有比例尺下都需要顯示出來,因此有必要控制圖層的最小顯示比例尺和最大顯示比例尺,從而保證保持某一比例尺內(nèi)顯示的內(nèi)容最少。這樣可以有效提升地圖的瀏覽、操作效率。 如下圖所示,四川省電子地圖的三個比例尺的顯示內(nèi)容,隨著比例尺的放大,小比例尺下顯示的圖層內(nèi)容在大比例尺下顯示就顯得毫無意義。相反,大比例尺下的顯示的圖層內(nèi)容在小比例尺下也無需顯示。因此,就需要根據(jù)具體的地圖需求,合理安排不同比例尺級別下的顯示內(nèi)容。在圖層屬性對話框中,“最小可見比例尺”和“最大可見比例尺”可以設(shè)置該圖層的顯隱條件。當(dāng)?shù)貓D的比例尺小于所設(shè)置的“最小可見比例尺”或者大于所設(shè)置的“最大可見比例尺”,圖層都是不可見的。

  • 圖層屬性

  • 設(shè)置對象顯示順序

對文件型數(shù)據(jù)源中單值、分段專題圖而言,如果專題圖子項為符號填充,且專題表達式由一個字段構(gòu)成,請在圖層屬性中將此字段設(shè)置為該專題圖層的【對象顯示順序字段】。這種方式可以在一定程度上提升繪制效率,在海量地圖數(shù)據(jù)下,提升較為明顯和重要。

  • 對象最小顯示尺寸

在地圖比例尺較小的情況下,對于圖層中的一些小對象在當(dāng)前比例尺下幾乎不可見,并且顯示處理意義不大,所以,可以通過“圖層屬性”設(shè)置對話框中的“對象最小顯示尺寸”,設(shè)置一個顯示條件,小于給定值的對象不可見,可在一定程度上提升地圖刷新效率。

  • 標(biāo)簽專題圖圖層設(shè)置

地圖中的標(biāo)簽專題圖層對地圖性能影響最大,針對標(biāo)簽專題圖層的一些屬性設(shè)置,需要謹(jǐn)慎對待,例如配圖過程中建議不勾選流動顯示,在數(shù)據(jù)量較大的情況下建議關(guān)閉自動避讓,因為自動避讓是實時計算的。

  • 十字路口優(yōu)化

一般在道路制圖中,遇到道路交叉的路段,默認(rèn)情況下是按照路段矢量化的先后順序來決定其在地圖上的繪制順序,從而產(chǎn)生道路疊放的結(jié)果。此時,會給人一種疊放的兩條道路在實際中是上下層的立交關(guān)系,而實際上,發(fā)生疊置的道路在交叉處是十字路口或者丁字樓口,對于一些道路數(shù)據(jù)圖層。

開啟十字路口優(yōu)化也將降低地圖的性能,在允許的情況下可以選擇另一種制圖手段來實現(xiàn)十字路口優(yōu)化的效果,十字路口優(yōu)化功能開啟后,圖層的繪制性能會有所下降,這里提供一個可替代方案。上面已經(jīng)說明出現(xiàn)道路交叉路口線型效果不合理,是由于使用的線型符號由兩個不同風(fēng)格線條疊加形成,如圖下所示。 我們可以將同一個道路數(shù)據(jù)添加兩次到地窗口中,制作兩個圖層,兩個道路圖層都采用普通單一線條的線型符號,并設(shè)置位于上層道路的顏色為道路的填充顏色,這里設(shè)置為白色,設(shè)置一個合適的線寬;下層道路的顏色為邊線的顏色,這里設(shè)置為灰色,設(shè)置的線寬要大于上個道路圖層的線寬,從而模擬由兩條不同風(fēng)格和寬度的線條疊加而成的線型符號。這種方式道路交叉口的渲染與十字路口優(yōu)化后的效果相同,但是性能卻略高于開啟十字路口優(yōu)化功能的圖層。

image.png
  • 地圖屬性

地圖的一些屬性設(shè)置對性能影響較大,所以在實際應(yīng)用中要考慮是否使用替代方案來達到下面地圖屬性設(shè)置的效果:動態(tài)投影、線型反走樣、文本反走樣、壓蓋設(shè)置。SuperMap 軟件在圖層級別中也提供了反走樣和壓蓋設(shè)置,不需要開啟整個地圖的反走樣和壓蓋設(shè)置,僅對個別圖層設(shè)置反走樣或壓蓋即可。開啟動態(tài)投影也會對地圖性能有所影響,建議將待添加到同一幅地圖中的數(shù)據(jù)先統(tǒng)一轉(zhuǎn)換為一致的投影,以避免因為開啟動態(tài)投影影響地圖的刷新效率。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 CALayer IOS SDK詳解之CALayer(一) http://doc.okbase.net/Hell...
    Kevin_Junbaozi閱讀 5,336評論 3 23
  • 第二章 使用ArcPy編寫腳本 ||| 第四章 查找和修復(fù)數(shù)據(jù)源 我們將在本章介紹以下案例: 引用當(dāng)前地圖文檔 引...
    muyan閱讀 15,258評論 19 23
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,656評論 1 32
  • 基礎(chǔ) 核心動畫是 iOS 和 MacOS 上的圖形渲染和動畫基礎(chǔ)結(jié)構(gòu),用于為應(yīng)用的視圖和其他視覺元素設(shè)置動畫。 核...
    davon閱讀 2,284評論 0 8
  • 2018.3.20.星期二,天氣陰,(99)二年級一班劉紫涵 早上出去買的早飯回來一看二寶醒了在自己玩,大寶...
    鳳舞涵歆閱讀 99評論 0 0

友情鏈接更多精彩內(nèi)容