一種模式線(xiàn)串的繪制方法及系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明提供了一種模式線(xiàn)串的繪制方法,包括:在繪制地圖的模式線(xiàn)串時(shí),依據(jù)預(yù)先生成的所述模式線(xiàn)串的線(xiàn)要素的模式偏移量設(shè)置偏移設(shè)置函數(shù)的參數(shù)值;本發(fā)明還提供一種模式線(xiàn)串的繪制系統(tǒng)。根據(jù)本發(fā)明提供的技術(shù)方案,能夠高效地繪制出正確的模式線(xiàn)串。
【專(zhuān)利說(shuō)明】一種模式線(xiàn)串的繪制方法及系統(tǒng)
【【技術(shù)領(lǐng)域】】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)應(yīng)用領(lǐng)域,尤其涉及一種模式線(xiàn)串的繪制方法及系統(tǒng)。
【【背景技術(shù)】】
[0002]目前,互聯(lián)網(wǎng)應(yīng)用的地圖繪制技術(shù)中,模式線(xiàn)串繪制方法主要有以下三種:
[0003]第一種,切分法,無(wú)論是非模式線(xiàn)串還是模式線(xiàn)串,都進(jìn)行矢量數(shù)據(jù)的網(wǎng)格切分,能夠有效地進(jìn)行數(shù)據(jù)管理和組織;對(duì)于點(diǎn)數(shù)據(jù)、面數(shù)據(jù)或非模式線(xiàn)串而言,在進(jìn)行矢量數(shù)據(jù)的網(wǎng)格切分后,進(jìn)行地圖繪制時(shí)不會(huì)造成繪制錯(cuò)誤,但是對(duì)于模式線(xiàn)串,由于模式線(xiàn)串是有固定圖案規(guī)律和固定模式的線(xiàn)串,例如圖1 (a)所示的地圖上常見(jiàn)的鐵路線(xiàn),是黑白相間且長(zhǎng)度相等的圖案組成的模式線(xiàn)串;對(duì)模式線(xiàn)串的矢量數(shù)據(jù)進(jìn)行網(wǎng)格切分后,在進(jìn)行地圖繪制時(shí),繪制引擎將繪制出錯(cuò)誤的地圖,圖1 (a)是正確的繪制結(jié)果,圖1 (b)是錯(cuò)誤的繪制結(jié)果,這是因?yàn)槔L制引擎默認(rèn)下面一個(gè)網(wǎng)格的模式偏移量為0,使得黑色的模式線(xiàn)串相連,造成了錯(cuò)誤的繪制結(jié)果,用戶(hù)將看到錯(cuò)誤的顯示地圖,體驗(yàn)較差。
[0004]第二種,不切分法。不切分法指的是對(duì)所有非模式線(xiàn)串的矢量數(shù)據(jù)進(jìn)行網(wǎng)格切分,對(duì)模式線(xiàn)串的矢量數(shù)據(jù)不進(jìn)行網(wǎng)格切分,因此不會(huì)造成錯(cuò)誤的繪制結(jié)果,可以達(dá)到圖1 (a)所示的效果。但是,利用這種方法,由于沒(méi)有對(duì)模式線(xiàn)串的矢量數(shù)據(jù)進(jìn)行切分,因此需要將所有的矢量數(shù)據(jù)提供給繪制引擎,由繪制引擎決定使用哪些矢量數(shù)據(jù)進(jìn)行繪制,這就需要繪制引擎對(duì)矢量數(shù)據(jù)進(jìn)行裁剪,找到需要繪制網(wǎng)格內(nèi)的所有矢量數(shù)據(jù),裁剪過(guò)程中需要將網(wǎng)格內(nèi)所有的矢量數(shù)據(jù)進(jìn)行相交運(yùn)算,才能夠找到用于繪制的矢量數(shù)據(jù),因此如果模式線(xiàn)串的矢量數(shù)據(jù)較少,對(duì)繪制引擎的繪制效率影響較小,但是目前模式線(xiàn)串的矢量數(shù)據(jù)普遍比較多,就導(dǎo)致繪制引擎的地圖繪制過(guò)程非常耗時(shí),繪制效率較低。而且由于依據(jù)所有的矢量數(shù)據(jù)進(jìn)行繪制,因此當(dāng)跨越網(wǎng)格的矢量數(shù)據(jù)較多時(shí),將產(chǎn)生大量的數(shù)據(jù)存儲(chǔ)冗余,也會(huì)影響到繪制效率。
[0005]第三種,合并法。合并法指的是對(duì)所有矢量數(shù)據(jù)進(jìn)行網(wǎng)格切分,繪制引擎繪制地圖時(shí),會(huì)將當(dāng)前需要繪制的被切分過(guò)的矢量數(shù)據(jù)合并,然后將合并后的矢量數(shù)據(jù)作為一個(gè)整體進(jìn)行繪制,就不會(huì)造成模式線(xiàn)串的錯(cuò)誤繪制結(jié)果。這種方法雖然能夠通過(guò)對(duì)矢量數(shù)據(jù)進(jìn)行網(wǎng)格劃分,降低繪制時(shí)的矢量數(shù)據(jù)的數(shù)據(jù)量,而且沒(méi)有錯(cuò)誤的繪制結(jié)果,但是矢量數(shù)據(jù)的合并需要花費(fèi)較多的時(shí)間,也會(huì)導(dǎo)致繪制效率較低。
【
【發(fā)明內(nèi)容】
】
[0006]本發(fā)明提供了一種模式線(xiàn)串的繪制方法及系統(tǒng),能夠高效地繪制出正確的模式線(xiàn)串O
[0007]本發(fā)明的具體技術(shù)方案如下:
[0008]根據(jù)本發(fā)明一優(yōu)選實(shí)施例,一種模式線(xiàn)串的繪制方法,包括:
[0009]在繪制地圖的模式線(xiàn)串時(shí),依據(jù)預(yù)先生成的所述模式線(xiàn)串的線(xiàn)要素的模式偏移量設(shè)置偏移設(shè)置函數(shù)的參數(shù)值。
[0010]上述方法中,所述模式偏移量為在模式線(xiàn)串方向上所述線(xiàn)要素的起始點(diǎn)與所述模式線(xiàn)串的起始點(diǎn)之間的距離。
[0011]上述方法中,該方法還包括:依據(jù)預(yù)設(shè)的屬性名從數(shù)據(jù)庫(kù)中預(yù)設(shè)的模式線(xiàn)串的線(xiàn)要素的偏移量屬性中獲取屬性值,所述屬性值為預(yù)先生成的模式偏移量。
[0012]上述方法中,該方法還包括:為模式線(xiàn)串的線(xiàn)要素添加偏移量屬性,將所述偏移量屬性的屬性值設(shè)置為預(yù)先生成的模式偏移量。
[0013]上述方法中,生成模式偏移量的方法為:
[0014]依據(jù)線(xiàn)串上點(diǎn)的坐標(biāo)和預(yù)設(shè)的網(wǎng)格上邊節(jié)點(diǎn)的坐標(biāo),對(duì)非模式線(xiàn)串的矢量數(shù)據(jù)和模式線(xiàn)串的矢量數(shù)據(jù)進(jìn)行網(wǎng)格切分,同一網(wǎng)格中屬于同一線(xiàn)串的點(diǎn)組成所述線(xiàn)串的線(xiàn)要素;
[0015]依據(jù)線(xiàn)要素的模式屬性的屬性值從得到的線(xiàn)要素中識(shí)別出模式線(xiàn)串的線(xiàn)要素,計(jì)算所述模式線(xiàn)串的線(xiàn)要素的模式偏移量了。
[0016]一種模式線(xiàn)串的繪制系統(tǒng),包括:數(shù)據(jù)處理單元和地圖繪制單元;其中,
[0017]地圖繪制單元,用于在繪制地圖的模式線(xiàn)串時(shí),依據(jù)數(shù)據(jù)處理單元預(yù)先生成的所述模式線(xiàn)串的線(xiàn)要素的模式偏移量設(shè)置偏移設(shè)置函數(shù)的參數(shù)值。
[0018]上述系統(tǒng)中,所述模式偏移量為在模式線(xiàn)串方向上所述線(xiàn)要素的起始點(diǎn)與所述模式線(xiàn)串的起始點(diǎn)之間的距離。
[0019]上述系統(tǒng)中,所述地圖繪制模塊,還用于依據(jù)預(yù)設(shè)的屬性名從數(shù)據(jù)庫(kù)中預(yù)設(shè)的模式線(xiàn)串的線(xiàn)要素的偏移量屬性中獲取屬性值,所述屬性值為預(yù)先生成的模式偏移量。
[0020]上述系統(tǒng)中,所述數(shù)據(jù)處理單元,還用于為模式線(xiàn)串的線(xiàn)要素添加偏移量屬性,將所述偏移量屬性的屬性值設(shè)置為預(yù)先生成的模式偏移量。
[0021]上述系統(tǒng)中,數(shù)據(jù)處理單元在生成模式偏移量時(shí),具體為:
[0022]依據(jù)線(xiàn)串上點(diǎn)的坐標(biāo)和預(yù)設(shè)的網(wǎng)格上邊節(jié)點(diǎn)的坐標(biāo),對(duì)非模式線(xiàn)串的矢量數(shù)據(jù)和模式線(xiàn)串的矢量數(shù)據(jù)進(jìn)行網(wǎng)格切分,同一網(wǎng)格中屬于同一線(xiàn)串的點(diǎn)組成所述線(xiàn)串的線(xiàn)要素;
[0023]依據(jù)線(xiàn)要素的模式屬性的屬性值從得到的線(xiàn)要素中識(shí)別出模式線(xiàn)串的線(xiàn)要素,計(jì)算所述模式線(xiàn)串的線(xiàn)要素的模式偏移量了。
[0024]由以上技術(shù)方案可以看出,本發(fā)明提供的具有以下有益效果:
[0025]在進(jìn)行地圖繪制時(shí),依據(jù)實(shí)際計(jì)算的模式偏移量進(jìn)行繪制,從而能夠繪制出正確的地圖,得到正確的繪制結(jié)果,保證用戶(hù)能夠看到正確的顯示地圖,提高用戶(hù)體驗(yàn);而且,對(duì)所有的矢量數(shù)據(jù)都進(jìn)行網(wǎng)格切分,降低提供給繪制引擎的矢量數(shù)據(jù)的規(guī)模,不需要繪制引擎在繪制地圖時(shí)對(duì)矢量數(shù)據(jù)進(jìn)行裁剪,減少繪制引擎的地圖繪制過(guò)程的時(shí)長(zhǎng),減少數(shù)據(jù)存儲(chǔ)幾余,提聞繪制效率。
【【專(zhuān)利附圖】
【附圖說(shuō)明】】
[0026]圖1(a)是現(xiàn)有技術(shù)中繪制引擎繪制的正確的模式線(xiàn)串;
[0027]圖1(b)是現(xiàn)有技術(shù)中繪制引擎繪制的錯(cuò)誤的模式線(xiàn)串;
[0028]圖2是本發(fā)明實(shí)現(xiàn)模式線(xiàn)串的繪制方法的優(yōu)選實(shí)施例的流程示意圖;
[0029]圖3是本發(fā)明對(duì)模式線(xiàn)串進(jìn)行網(wǎng)格切分的示例圖;
[0030]圖4是本發(fā)明實(shí)現(xiàn)模式線(xiàn)串的繪制系統(tǒng)的優(yōu)選實(shí)施例的結(jié)構(gòu)示意圖。
【【具體實(shí)施方式】】
[0031]本發(fā)明的基本思想是:在繪制地圖的模式線(xiàn)串時(shí),依據(jù)預(yù)先生成的所述模式線(xiàn)串的線(xiàn)要素的模式偏移量設(shè)置偏移設(shè)置函數(shù)的參數(shù)值。
[0032]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。
[0033]本發(fā)明提供一種模式線(xiàn)串的繪制方法,圖2是本發(fā)明實(shí)現(xiàn)模式線(xiàn)串的繪制方法的優(yōu)選實(shí)施例的流程示意圖,如圖2所示,該優(yōu)選實(shí)施例包括以下步驟:
[0034]步驟201,對(duì)線(xiàn)串的矢量數(shù)據(jù)進(jìn)行網(wǎng)格切分,得到對(duì)應(yīng)的線(xiàn)要素。
[0035]具體的,本優(yōu)選實(shí)施例中,對(duì)所有矢量數(shù)據(jù)都進(jìn)行網(wǎng)格切分,包括非模式線(xiàn)串的矢量數(shù)據(jù)和模式線(xiàn)串的矢量數(shù)據(jù);線(xiàn)串的矢量數(shù)據(jù)是構(gòu)成線(xiàn)串的點(diǎn)的坐標(biāo),依據(jù)線(xiàn)串上點(diǎn)的坐標(biāo)和預(yù)設(shè)的網(wǎng)格上邊節(jié)點(diǎn)的坐標(biāo),可以得到網(wǎng)格的坐標(biāo)范圍,從而判斷出線(xiàn)串上的點(diǎn)所屬的網(wǎng)格,實(shí)現(xiàn)對(duì)線(xiàn)串的矢量數(shù)據(jù)進(jìn)行網(wǎng)格切分;屬于同一網(wǎng)格的同一線(xiàn)串上的點(diǎn)組成該線(xiàn)串的一個(gè)線(xiàn)要素,各個(gè)網(wǎng)格內(nèi)該線(xiàn)串的線(xiàn)要素可以拼接成完整的線(xiàn)串。
[0036]例如,如圖3所示,模式線(xiàn)串ACE位于兩個(gè)網(wǎng)格內(nèi),依據(jù)這兩個(gè)網(wǎng)格的邊節(jié)點(diǎn)的坐標(biāo)和模式線(xiàn)串上點(diǎn)的坐標(biāo),對(duì)模式線(xiàn)串ACE進(jìn)行網(wǎng)格切分,模式線(xiàn)串ACE被網(wǎng)格切分成三個(gè)線(xiàn)要素:線(xiàn)要素AB、線(xiàn)要素BCD和線(xiàn)要素DE,其中,線(xiàn)要素AB和線(xiàn)要素DE位于同一網(wǎng)格,線(xiàn)要素B⑶位于另外一個(gè)網(wǎng)格。
[0037]步驟202,依據(jù)線(xiàn)要素的屬性找到模式線(xiàn)串的線(xiàn)要素,計(jì)算得到模式線(xiàn)串的線(xiàn)要素的模式偏移量。
[0038]具體的,在對(duì)所有線(xiàn)串的矢量數(shù)據(jù)進(jìn)行網(wǎng)格切分后,得到一個(gè)以上線(xiàn)要素;由于線(xiàn)串的矢量數(shù)據(jù)以及線(xiàn)串的屬性都是預(yù)先設(shè)置在數(shù)據(jù)庫(kù)中的,在對(duì)線(xiàn)串的矢量數(shù)據(jù)進(jìn)行網(wǎng)格切分后,同樣可以得到線(xiàn)要素上點(diǎn)的坐標(biāo)和線(xiàn)要素的屬性,線(xiàn)要素的屬性包括:名稱(chēng)、形狀和模式屬性;依據(jù)線(xiàn)要素的模式屬性,可以判斷出線(xiàn)要素所屬的線(xiàn)串是模式線(xiàn)串還是非模式線(xiàn)串,如果是模式線(xiàn)串,則需要計(jì)算模式線(xiàn)串的線(xiàn)要素的模式偏移量。
[0039]例如,有如下線(xiàn)要素的屬性:
[0040]void SetLineAttrs(cairo_t*cr, const LineStyleElement&le, double dash_offset=0)
[0041]其中,cairo_t*cr為線(xiàn)要素的名稱(chēng),const LineStyleElement&le為線(xiàn)要素的形狀,double daSh_ofTSet為線(xiàn)要素的模式屬性,模式屬性的屬性值為O時(shí)表示線(xiàn)要素所述的線(xiàn)串為非模式線(xiàn)串,模式屬性的屬性值為非O時(shí)表示線(xiàn)要素所屬的線(xiàn)串為模式線(xiàn)串,上述線(xiàn)要素的屬性中,表示該線(xiàn)要素所屬的線(xiàn)串為非模式線(xiàn)串。
[0042]在線(xiàn)要素中找到模式線(xiàn)串的線(xiàn)要素后,計(jì)算得到該線(xiàn)要素的模式偏移量,所述模式偏移量為在模式線(xiàn)串方向上該線(xiàn)要素的起始點(diǎn)與模式線(xiàn)串的起始點(diǎn)之間的距離。
[0043]例如,如圖3所示,對(duì)于模式線(xiàn)串ACE被網(wǎng)格切分成的三個(gè)線(xiàn)要素:線(xiàn)要素AB、線(xiàn)要素BCD和線(xiàn)要素DE,起始點(diǎn)A是線(xiàn)要素AB的起始點(diǎn)和整個(gè)模式線(xiàn)串的起始點(diǎn),因此,線(xiàn)要素AB的模式偏移量為O ;起始點(diǎn)B是網(wǎng)格切分時(shí)產(chǎn)生的切點(diǎn),因此起始點(diǎn)B是線(xiàn)要素BCD的起始點(diǎn)也是線(xiàn)要素AB的結(jié)束點(diǎn),線(xiàn)要素BCD的模式偏移量等于在模式線(xiàn)串方向上起始點(diǎn)B與模式線(xiàn)串的起始點(diǎn)A之間的距離,因此線(xiàn)要素BCD的模式偏移量為AB的長(zhǎng)度;起始點(diǎn)D是網(wǎng)格切分時(shí)產(chǎn)生的切點(diǎn),因此起始點(diǎn)D是線(xiàn)要素DE的起始點(diǎn)也是線(xiàn)要素BCD的結(jié)束點(diǎn),線(xiàn)要素DE的模式偏移量等于在模式線(xiàn)串方向上起始點(diǎn)D與模式線(xiàn)串的起始點(diǎn)A之間的距離,因此線(xiàn)要素DE的模式偏移量為AB與BCD的長(zhǎng)度和值;本優(yōu)選實(shí)施例中,可以依據(jù)線(xiàn)要素上點(diǎn)的坐標(biāo)值計(jì)算兩點(diǎn)之間的長(zhǎng)度,例如,圖3中起始點(diǎn)A的坐標(biāo)為(xa, ya),起始點(diǎn)B的坐標(biāo)為(xb,Yb),則AB白勺長(zhǎng)度等于
【權(quán)利要求】
1.一種模式線(xiàn)串的繪制方法,其特征在于,該方法包括: 在繪制地圖的模式線(xiàn)串時(shí),依據(jù)預(yù)先生成的所述模式線(xiàn)串的線(xiàn)要素的模式偏移量設(shè)置偏移設(shè)置函數(shù)的參數(shù)值。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述模式偏移量為在模式線(xiàn)串方向上所述線(xiàn)要素的起始點(diǎn)與所述模式線(xiàn)串的起始點(diǎn)之間的距離。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法還包括:依據(jù)預(yù)設(shè)的屬性名從數(shù)據(jù)庫(kù)中預(yù)設(shè)的模式線(xiàn)串的線(xiàn)要素的偏移量屬性中獲取屬性值,所述屬性值為預(yù)先生成的模式偏移量。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,該方法還包括:為模式線(xiàn)串的線(xiàn)要素添加偏移量屬性,將所述偏移量屬性的屬性值設(shè)置為預(yù)先生成的模式偏移量。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,生成模式偏移量的方法為: 依據(jù)線(xiàn)串上點(diǎn)的坐標(biāo)和預(yù)設(shè)的網(wǎng)格上邊節(jié)點(diǎn)的坐標(biāo),對(duì)非模式線(xiàn)串的矢量數(shù)據(jù)和模式線(xiàn)串的矢量數(shù)據(jù)進(jìn)行網(wǎng)格切分,同一網(wǎng)格中屬于同一線(xiàn)串的點(diǎn)組成所述線(xiàn)串的線(xiàn)要素; 依據(jù)線(xiàn)要素的模式屬性的屬性值從得到的線(xiàn)要素中識(shí)別出模式線(xiàn)串的線(xiàn)要素,計(jì)算所述模式線(xiàn)串的線(xiàn)要素的模式偏移量了。
6.一種模式線(xiàn)串的繪制系統(tǒng),其特征在于,該系統(tǒng)包括:數(shù)據(jù)處理單元和地圖繪制單元;其中, 地圖繪制單元,用于在繪制地圖的模式線(xiàn)串時(shí),依據(jù)數(shù)據(jù)處理單元預(yù)先生成的所述模式線(xiàn)串的線(xiàn)要素的模式偏移量設(shè)置偏移設(shè)置函數(shù)的參數(shù)值。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述模式偏移量為在模式線(xiàn)串方向上所述線(xiàn)要素的起始點(diǎn)與所述模式線(xiàn)串的起始點(diǎn)之間的距離。
8.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述地圖繪制單元,還用于依據(jù)預(yù)設(shè)的屬性名從數(shù)據(jù)庫(kù)中預(yù)設(shè)的模式線(xiàn)串的線(xiàn)要素的偏移量屬性中獲取屬性值,所述屬性值為預(yù)先生成的模式偏移量。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述數(shù)據(jù)處理單元,還用于為模式線(xiàn)串的線(xiàn)要素添加偏移量屬性,將所述偏移量屬性的屬性值設(shè)置為預(yù)先生成的模式偏移量。
10.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,數(shù)據(jù)處理單元在生成模式偏移量時(shí),具體為: 依據(jù)線(xiàn)串上點(diǎn)的坐標(biāo)和預(yù)設(shè)的網(wǎng)格上邊節(jié)點(diǎn)的坐標(biāo),對(duì)非模式線(xiàn)串的矢量數(shù)據(jù)和模式線(xiàn)串的矢量數(shù)據(jù)進(jìn)行網(wǎng)格切分,同一網(wǎng)格中屬于同一線(xiàn)串的點(diǎn)組成所述線(xiàn)串的線(xiàn)要素; 依據(jù)線(xiàn)要素的模式屬性的屬性值從得到的線(xiàn)要素中識(shí)別出模式線(xiàn)串的線(xiàn)要素,計(jì)算所述模式線(xiàn)串的線(xiàn)要素的模式偏移量了。
【文檔編號(hào)】G06T11/00GK104077790SQ201310108988
【公開(kāi)日】2014年10月1日 申請(qǐng)日期:2013年3月29日 優(yōu)先權(quán)日:2013年3月29日
【發(fā)明者】趙紅超 申請(qǐng)人:百度在線(xiàn)網(wǎng)絡(luò)技術(shù)(北京)有限公司