專利名稱::一種電網(wǎng)圖形動(dòng)態(tài)分布索引的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及電力自動(dòng)化系統(tǒng)中圖形引擎性能的
技術(shù)領(lǐng)域:
,尤其涉及一種電力自動(dòng)化系統(tǒng)中圖形繪制、調(diào)度員界面圖形刷新的加速。
背景技術(shù):
:電力監(jiān)控軟件系統(tǒng)中,對(duì)設(shè)備和動(dòng)態(tài)圖元刷新的效率要求比較高,一般都采用圖形索引機(jī)制來(lái)提高圖形刷新速度。目前圖形索引常采用四叉樹(shù)tile分配方式,它是具有高效定位的檢索機(jī)制,但是它會(huì)引起重疊圖元次序顛倒,同時(shí)這種分配方式的刷新效率提高也是有限制的1、這種索引機(jī)制無(wú)法體現(xiàn)圖元繪制的先后,引起圖元次序顛倒。1)為了保證順序,編輯的時(shí)候必須對(duì)所有重疊的圖元加順序標(biāo)志。設(shè)置標(biāo)志的情況有所有按自然順序繪制圖元的時(shí)候;圖元所有編輯操作的時(shí)候;及其手動(dòng)設(shè)置重疊圖元先后順序的時(shí)候。這樣就大大增加了編輯的復(fù)雜度。2)在調(diào)度員刷新的時(shí)候,需要分兩次刷新沒(méi)有設(shè)置重疊標(biāo)志的圖元和排序后的設(shè)置重疊標(biāo)志的圖元。2.對(duì)刷新效率提高的限制影響圖形刷新速度的因素主要有兩方面索引塊tile的檢索定位(簡(jiǎn)稱tile的搜索)和圖形實(shí)體(簡(jiǎn)稱Entity)是否需要刷新的次數(shù)判斷(簡(jiǎn)稱Entity的搜索),而后者的效率提高更比前者更重要。
發(fā)明內(nèi)容本發(fā)明的目的是為了克服現(xiàn)有技術(shù)中存在的上述缺陷,提出了一種新的動(dòng)態(tài)分布索引機(jī)制的實(shí)現(xiàn)方法。所述的方法是通過(guò)如下的技術(shù)方案實(shí)現(xiàn)的,所述的方法包括一種電網(wǎng)圖形動(dòng)態(tài)分布索引及其存儲(chǔ)、增量修改的實(shí)現(xiàn)方法,該實(shí)現(xiàn)方法綜合利用四叉樹(shù)索引方法和動(dòng)態(tài)分配平鋪塊索引方法作為電網(wǎng)圖形的兩級(jí)索引,將電網(wǎng)圖形的實(shí)體數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中,通過(guò)索引和實(shí)體數(shù)據(jù)建立映射關(guān)系,其特征在于,所述的方法包括(1)每次打開(kāi)圖形的時(shí)候使用四叉樹(shù)索引方法作為第一級(jí)索引,按照常規(guī)四叉樹(shù)索引方法在電網(wǎng)圖形上進(jìn)行平均四分劃分,然后在每一個(gè)劃分后的部分再進(jìn)行四分,如此遞歸調(diào)用,直到劃分的區(qū)tile能包容最小的塊block的包容矩形為止,將所述區(qū)tile進(jìn)行編號(hào),所述區(qū)tile的編號(hào)是在每次打開(kāi)圖形的時(shí)候重新生成,而不存儲(chǔ)到數(shù)據(jù)庫(kù),所述區(qū)tile不用來(lái)索引電網(wǎng)圖形上的圖元,而是用來(lái)定位索引其包含的塊Block、即計(jì)算第二級(jí)索引生成的塊Block的包容矩形來(lái)決定圖元屬于哪個(gè)區(qū)tile;(2)利用動(dòng)態(tài)分配平鋪block索引方法作為第二級(jí)索引邏輯上建立空間平均分配的平鋪邏輯塊Block,將所述邏輯塊Block編號(hào),即以二維坐標(biāo)定位索引該邏輯塊Block,有圖元Entity生成的時(shí)候,創(chuàng)建包含圖元Entity的真實(shí)的塊Block;每次打開(kāi)圖形的時(shí)候形成真實(shí)塊Block的索引,并且將該真實(shí)塊Block的索引裝載到實(shí)時(shí)數(shù)據(jù)庫(kù)中;將真實(shí)塊Block包含的圖元Entity的實(shí)體數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,并且建立該實(shí)體數(shù)據(jù)與真實(shí)塊Block的索引之間映射;(3)在系統(tǒng)運(yùn)行狀態(tài)變化或者其他原因引起圖形刷新的時(shí)候,用當(dāng)前視窗去截切電網(wǎng)圖形,如果區(qū)tile的包容矩形在當(dāng)前視窗的包容矩形內(nèi),或者區(qū)tile的包容矩形與當(dāng)前視窗的包容矩形有交迭找到需要刷新的區(qū)tile,再按照步驟(1)所述的第一級(jí)索引方法把區(qū)tile中包含的實(shí)際塊Block找出;(4)把實(shí)際塊block中按照生成的時(shí)間先后排好順序的每個(gè)圖元的包容矩形與當(dāng)前視窗的包容矩形比較,如果圖元的包容矩形在當(dāng)前視窗的包容矩形內(nèi),或者圖元的包容矩形與當(dāng)前視窗的包容矩形有交迭,則這個(gè)圖元需要刷新數(shù)據(jù),最終返回需要刷新的圖元組,對(duì)這些需要更新的圖元進(jìn)行真正的實(shí)體數(shù)據(jù)繪制,完成電網(wǎng)圖形的刷新。在編輯過(guò)圖形后,增量的修改涉及到內(nèi)存庫(kù)中塊block表和entity表的修改。索引增量的實(shí)施具體方案在圖形比較小(圖元Entity的個(gè)數(shù)小于一定的數(shù)量)或者圖形大但增量數(shù)量比較多的情況(大于一設(shè)定的數(shù)量),所有增量操作更新表記錄,然后塊Block表重新分配,Tile也重新分配。在圖形比較大增量比較少的情況采用下面的索引增量方案根據(jù)圖元編輯的增刪改的標(biāo)志向?qū)崟r(shí)庫(kù)更新的時(shí)候,發(fā)送"實(shí)時(shí)庫(kù)更新"字段不為0的記錄到實(shí)時(shí)庫(kù)更新模塊,實(shí)時(shí)庫(kù)更新模塊根據(jù)操作碼調(diào)用算法產(chǎn)生Entity和block表索引更新的記錄發(fā)送到實(shí)時(shí)庫(kù)。本發(fā)明公開(kāi)的這種以塊為核心的兩級(jí)索引在實(shí)際應(yīng)用的刷新效率能很好地滿足電力系統(tǒng)的調(diào)度的需求,在配網(wǎng)測(cè)試系統(tǒng)中也取得了滿意的刷新效果。圖1是本發(fā)明方法使用的常規(guī)四叉樹(shù)模式示意圖;圖2是本發(fā)明方法使用的利用block索引機(jī)制的一個(gè)圖例。具體實(shí)施例方式下面根據(jù)說(shuō)明書(shū)附圖對(duì)本發(fā)明的技術(shù)方案作進(jìn)一步詳細(xì)說(shuō)明。本發(fā)明綜合利用四叉樹(shù)索引方法和動(dòng)態(tài)分配平鋪塊索引方法作為電網(wǎng)圖形的兩級(jí)索弓l,將電網(wǎng)圖形的實(shí)體數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中,通過(guò)索引和實(shí)體數(shù)據(jù)建立映射關(guān)系,具體包括1.區(qū)Tile的建立如圖1所示Tile的劃分按照四叉樹(shù)組織原則,把整張圖形按照空間進(jìn)行平均四分劃分,然后在每四個(gè)中的一個(gè)再進(jìn)行四分,如此遞歸調(diào)用,直到劃分的子區(qū)域能包容最小的塊block的包容矩形為止。2.動(dòng)態(tài)分配平鋪塊Block的建立2.1邏輯上建立空間平均分配的平鋪邏輯塊Block,以二維坐標(biāo)(x,y)索引定位邏輯塊Block。有圖元Entity生成的時(shí)候,創(chuàng)建真實(shí)的塊Block包含圖元Entity,仍然用邏輯Block的二維坐標(biāo)作為索引。以索引為順序,真實(shí)Block有先后順序先畫(huà)的在下面,后畫(huà)的在上面。例如附圖2所示,先后繪制了1,2,3,4四個(gè)圖元,Block先后順序?yàn)?0,0)(0,-1)(-l,0)(-l,-1)。2.2塊Block的大小是動(dòng)態(tài)的,即塊Block當(dāng)前所包含圖元Entity的最大包容矩形。增加圖元Entity的時(shí)候,塊Block會(huì)擴(kuò)大;刪除圖元Entity的時(shí)候。塊Block會(huì)縮小。如果一個(gè)塊Block中所有圖元Entity都被刪除,此塊Block被刪除。2.3圖元Entity在添加的時(shí)候分配到屬于哪個(gè)塊Block的時(shí)候采用原則1)若沒(méi)有和其他已經(jīng)有圖元Entity交迭,屬于以圖元Entity中心做索引的塊Block(如果圖元Entity跨越2個(gè)塊Block,以圖元Entity左下角所在塊Block為父塊Block).2)若有交迭,圖元屬于當(dāng)前交迭圖元中最上面的塊Block.2.4圖元Entity在編輯(旋轉(zhuǎn)、改變線寬、改變字體、粘貼等)的時(shí)候分配到屬于哪個(gè)塊Block的時(shí)候采用原則從當(dāng)前塊Block刪除,再按照2.3的原則重新找圖元Entity適合的塊Block2.5有交迭的圖元Entity在置前的時(shí)候分配到屬于哪個(gè)塊Block的時(shí)候1)從當(dāng)前塊Block刪除2)圖元屬于當(dāng)前交迭圖元中最上面的塊Block.2.6有交迭的圖元Entity在置后的時(shí)候分配到屬于哪個(gè)塊Block的時(shí)候1)從當(dāng)前塊Block刪除2)圖元屬于當(dāng)前交迭圖元中最下面的塊Block.3.索引存儲(chǔ)區(qū)tile索引編號(hào)不存儲(chǔ)在關(guān)系庫(kù)中,是在圖形加載到內(nèi)存的時(shí)候一次生成的。實(shí)時(shí)庫(kù)中存儲(chǔ)區(qū)索引塊block表和圖形的實(shí)體數(shù)據(jù)Entity表,并且在實(shí)時(shí)庫(kù)圖形的實(shí)體數(shù)據(jù)Entity表中存儲(chǔ)按照繪制先后順序的下一個(gè)圖元的ID。在編輯過(guò)電網(wǎng)圖形后,需要修改內(nèi)存庫(kù)中索引±央block表和圖元entity表3.1編輯操作后索引變化選取的原則由于大數(shù)據(jù)記錄的修改同時(shí)更新到實(shí)時(shí)庫(kù)中,會(huì)引起電力監(jiān)控系統(tǒng)的暫時(shí)CPU過(guò)高,如果長(zhǎng)時(shí)間高負(fù)荷,會(huì)引起監(jiān)控系統(tǒng)實(shí)時(shí)數(shù)據(jù)狀態(tài)刷新的延時(shí),這是不容許的。通過(guò)系統(tǒng)容量測(cè)試,對(duì)大批量記錄修改測(cè)試結(jié)果顯示當(dāng)數(shù)據(jù)記錄增量為20萬(wàn)條時(shí),各個(gè)操作系統(tǒng)的CPU負(fù)荷能控制在1分鐘內(nèi)60%。所以確定產(chǎn)生操作變化時(shí)候,索引變化原則1)在圖形比較小、即圖元Entity的個(gè)數(shù)小于1000;.或者圖形比較大、即圖元Entity的個(gè)數(shù)大于IOOO,并且操作比較多、即增量數(shù)量大于10萬(wàn)的數(shù)量時(shí),根據(jù)相應(yīng)的操作更新圖元Entity表的記錄,然后索引塊Block表重新生成,區(qū)Tile也重新分配2)在圖形比較大即圖元Entity的個(gè)數(shù)大于1000,并且操作比較少、即增量數(shù)量小于于10萬(wàn)的數(shù)量時(shí),根據(jù)圖元編輯的增刪改的標(biāo)志向?qū)崟r(shí)庫(kù)更新,產(chǎn)生圖元Entity和索引更新的記錄發(fā)送到實(shí)時(shí)庫(kù)3.2建立實(shí)時(shí)索引塊SBlock表(BLOCK索引的內(nèi)存表)<table>tableseeoriginaldocumentpage7</column></row><table>其中PKId是快索引的ID;indeXindexY是索引X,Y號(hào)(xO,y0)(xl,yl)分別為索引塊的左上和右下角坐標(biāo)startEntityld是第一個(gè)圖元ID;nextBlockld是下一個(gè)塊索引記錄的ID3.3圖元的實(shí)體數(shù)據(jù)的內(nèi)存表SEntity增加索引字段<table>tableseeoriginaldocumentpage7</column></row><table><table>tableseeoriginaldocumentpage8</column></row><table>其中PKId是圖元ID,nextEntityld是下一個(gè)圖元ID綜上所述,本發(fā)明的方法是在現(xiàn)有技術(shù)基礎(chǔ)上,針對(duì)現(xiàn)有技術(shù)應(yīng)用領(lǐng)域的不足,提供一種這種以block為核心的兩級(jí)索引己經(jīng)成功應(yīng)用于調(diào)度一體化平臺(tái)CSGC-3000中,實(shí)際應(yīng)用的刷新效率很好滿足電力系統(tǒng)的調(diào)度的需求,在配網(wǎng)測(cè)試系統(tǒng)中也取得了滿意的測(cè)試刷新結(jié)果。權(quán)利要求1、一種電網(wǎng)圖形動(dòng)態(tài)分布索引及其存儲(chǔ)、增量修改的實(shí)現(xiàn)方法,該實(shí)現(xiàn)方法綜合利用四叉樹(shù)索引方法和動(dòng)態(tài)分配平鋪塊索引方法作為電網(wǎng)圖形的兩級(jí)索引,將電網(wǎng)圖形的實(shí)體數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中,通過(guò)索引和實(shí)體數(shù)據(jù)建立映射關(guān)系,其特征在于,所述的方法包括(1)每次打開(kāi)圖形的時(shí)候使用四叉樹(shù)索引方法作為第一級(jí)索引,按照常規(guī)四叉樹(shù)索引方法在電網(wǎng)圖形上進(jìn)行平均四分劃分,然后在每一個(gè)劃分后的部分再進(jìn)行四分,如此遞歸調(diào)用,直到劃分的區(qū)tile能包容最小的塊block的包容矩形為止,將所述區(qū)tile進(jìn)行編號(hào),所述區(qū)tile的編號(hào)是在每次打開(kāi)圖形的時(shí)候重新生成,而不存儲(chǔ)到數(shù)據(jù)庫(kù),所述區(qū)tile不用來(lái)索引電網(wǎng)圖形上的圖元,而是用來(lái)定位索引其包含的塊Block、即計(jì)算第二級(jí)索引生成的塊Block的包容矩形來(lái)決定圖元屬于哪個(gè)區(qū)tile;(2)利用動(dòng)態(tài)分配平鋪block索引方法作為第二級(jí)索引邏輯上建立空間平均分配的平鋪邏輯塊Block,將所述邏輯塊Block編號(hào),即以二維坐標(biāo)定位索引該邏輯塊Block,有圖元Entity生成的時(shí)候,創(chuàng)建包含圖元Entity的真實(shí)的塊Block;每次打開(kāi)圖形的時(shí)候形成真實(shí)塊Block的索引,并且將該真實(shí)塊Block的索引裝載到實(shí)時(shí)數(shù)據(jù)庫(kù)中;將真實(shí)塊Block包含的圖元Entity的實(shí)體數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,并且建立該實(shí)體數(shù)據(jù)與真實(shí)塊Block的索引之間映射;(3)在系統(tǒng)運(yùn)行狀態(tài)變化或者其他原因引起圖形刷新的時(shí)候,用當(dāng)前視窗去截切電網(wǎng)圖形,如果區(qū)tile的包容矩形在當(dāng)前視窗的包容矩形內(nèi),或者區(qū)tile的包容矩形與當(dāng)前視窗的包容矩形有交迭找到需要刷新的區(qū)tile,再按照步驟(1)所述的第一級(jí)索引方法把區(qū)tile中包含的實(shí)際塊Block找出;(4)把實(shí)際塊block中按照生成的時(shí)間先后排好順序的每個(gè)圖元的包容矩形與當(dāng)前視窗的包容矩形比較,如果圖元的包容矩形在當(dāng)前視窗的包容矩形內(nèi),或者圖元的包容矩形與當(dāng)前視窗的包容矩形有交迭,則這個(gè)圖元需要刷新數(shù)據(jù),最終返回需要刷新的圖元組,對(duì)這些需要更新的圖元進(jìn)行真正的實(shí)體數(shù)據(jù)繪制,完成電網(wǎng)圖形的刷新。2、根據(jù)權(quán)力要求1所述的實(shí)現(xiàn)方法,其特征為所述實(shí)際塊block塊是動(dòng)態(tài)生成的,只有該區(qū)tile下存在圖元才生成,圖元Entity在生成的時(shí)候若沒(méi)有和其他已經(jīng)有的圖元Entity交迭,則該生成的圖元Entity屬于以圖元Entity中心坐標(biāo)做索引的實(shí)際塊Block,如果圖元Entity跨越2個(gè)塊Block,則該圖元屬于圖元Entity左下角所在的實(shí)際塊Block;若該生成的圖元Entity與其他己有的圖元Entity交迭有交迭,該圖元屬于當(dāng)前交迭圖元中最上面的實(shí)際塊Block,從而保證正確表示圖元在塊Block中生成的先后順序。3、根據(jù)權(quán)力要求1所述的實(shí)現(xiàn)方法,其特征為,在編輯過(guò)電網(wǎng)圖形后,需要修改內(nèi)存庫(kù)中索引塊block表和圖元entity表在圖形比較小、即圖元Entity的個(gè)數(shù)小于設(shè)定的數(shù)量時(shí),或者圖形比較大、即圖元Entity的個(gè)數(shù)大于設(shè)定的數(shù)量,并且操作比較多、即增量數(shù)量大于另一設(shè)定的數(shù)量時(shí),根據(jù)相應(yīng)的操作更新圖元Entity表的記錄,然后索引塊Block表重新生成,區(qū)Tile也重新分配;在圖形比較大即圖元Entity的個(gè)數(shù)大于所述設(shè)定的數(shù)量,并且操作比較少、即增量數(shù)量小于所述另一設(shè)定的數(shù)量時(shí),根據(jù)圖元編輯的增刪改的標(biāo)志向?qū)崟r(shí)庫(kù)更新,產(chǎn)生圖元Entity和索引更新的記錄發(fā)送到實(shí)時(shí)庫(kù)。全文摘要本發(fā)明公開(kāi)了一種動(dòng)態(tài)分配平鋪塊索引及其存儲(chǔ)、增量修改的實(shí)現(xiàn)方法,擴(kuò)展了常規(guī)索引方法,綜合四叉樹(shù)和動(dòng)態(tài)分配平鋪塊兩種索引機(jī)制的特點(diǎn),采用兩級(jí)索引機(jī)制提高圖形系統(tǒng)的刷新先用一級(jí)四叉樹(shù)索引生成區(qū)tile,用來(lái)索引塊。然后用二級(jí)動(dòng)態(tài)分配平鋪塊索引生成塊block,塊包含的是圖元對(duì)象,用來(lái)組織圖元對(duì)象的順序。在圖形刷新的時(shí)候,是用當(dāng)前視窗去截切區(qū)tile,找到需要刷的區(qū)tile,再把區(qū)中包含的塊找出排序。最后檢查排好順序的塊block中的圖元對(duì)象是否在當(dāng)前視窗中,最終返回在視窗中需要重新刷新的圖元對(duì)象列表。動(dòng)態(tài)分配平鋪塊索引存儲(chǔ)和增量修改都有對(duì)應(yīng)的算法。這種以塊為核心的兩級(jí)索引在實(shí)際應(yīng)用的刷新效率能很好地滿足電力系統(tǒng)的調(diào)度的需求,在配網(wǎng)測(cè)試系統(tǒng)中也取得了滿意的刷新效果。文檔編號(hào)H02J3/00GK101587487SQ20091008229公開(kāi)日2009年11月25日申請(qǐng)日期2009年4月22日優(yōu)先權(quán)日2009年4月22日發(fā)明者于曉陽(yáng),余庭豹,云劉,張?jiān)颇?祝朝暉,亮葛,趙玉才申請(qǐng)人:北京四方繼保自動(dòng)化股份有限公司;北京四方繼保工程技術(shù)有限公司