亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

多邊形矢量數(shù)據(jù)文件的并行拼接方法

文檔序號(hào):6398133閱讀:316來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):多邊形矢量數(shù)據(jù)文件的并行拼接方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種多邊形矢量數(shù)據(jù)文件的并行拼接方法,屬于地理信息處理技術(shù)領(lǐng)域。
背景技術(shù)
地理信息系統(tǒng)是計(jì)算機(jī)科學(xué)、地理學(xué)、測(cè)量學(xué)、地圖學(xué)等多門(mén)學(xué)科綜合的技術(shù)。高性能地理計(jì)算指通常使用很多處理器(作為單個(gè)機(jī)器的一部分)或者某一集群中組織的幾臺(tái)計(jì)算機(jī)(作為單個(gè)計(jì)算資源操作)的計(jì)算系統(tǒng)和環(huán)境。矢量結(jié)構(gòu)和柵格結(jié)構(gòu)是地理信息系統(tǒng)中兩種主要的數(shù)據(jù)結(jié)構(gòu)形式。地理信息系統(tǒng)采用的矢量數(shù)據(jù)結(jié)構(gòu)模型,是將空間地質(zhì)實(shí)體抽象成點(diǎn)、線、面三種幾何要素,矢量數(shù)據(jù)結(jié)構(gòu)通過(guò)優(yōu)化拓?fù)浣Y(jié)構(gòu)表達(dá)空間實(shí)體的相關(guān)關(guān)系,為空間數(shù)據(jù)庫(kù)建立基本框架。柵格數(shù)據(jù)結(jié)構(gòu)是最簡(jiǎn)單最直觀的空間數(shù)據(jù)結(jié)構(gòu),又稱(chēng)為網(wǎng)格數(shù)據(jù)結(jié)構(gòu),是將平面劃分為mXn個(gè)正方形小方格,每個(gè)小方格用(X,y)坐標(biāo)標(biāo)識(shí),即自然地理實(shí)體的位置和形狀用它們所占據(jù)的柵格行列號(hào)來(lái)定義。并行計(jì)算技術(shù)是現(xiàn)代科學(xué)研究、工程技術(shù)開(kāi)發(fā)和大規(guī)模數(shù)據(jù)處理的關(guān)鍵支撐技術(shù),并行計(jì)算技術(shù)的發(fā)展水平已經(jīng)成為衡量一個(gè)國(guó)家科技發(fā)展水平的重要指標(biāo)。因此,無(wú)論是國(guó)際上還是國(guó)內(nèi),并行計(jì)算技術(shù)一直都是研究的熱點(diǎn)和重點(diǎn)。并行計(jì)算技術(shù)以及并行計(jì)算在空間信息科學(xué)領(lǐng)域中的應(yīng)用又來(lái)已久,尤其是在遙感和航測(cè)柵格影像數(shù)據(jù)的并行處理方面,國(guó)內(nèi)外已有大量的研究成果和應(yīng)用系統(tǒng)。在空間信息科學(xué)領(lǐng)域中并行計(jì)算技術(shù)和方法的研究主要包括圖像數(shù)據(jù)的并行處理、矢量數(shù)據(jù)的并行存取與處理、高性能和高可用GIS研究以及大規(guī)模地理空間數(shù)據(jù)的并行處理等。對(duì)于矢量數(shù)據(jù)的拼接,國(guó)內(nèi)已經(jīng)有較多研究。1994年,汪西莉在期刊《西安電子科技大學(xué)學(xué)報(bào)》第21卷第4期發(fā)表“矢量化地圖中線的自動(dòng)拼接”一文,通過(guò)分析線的各種情況,提出了一種全新的方法用以解決線的自動(dòng)拼接問(wèn)題;2004年,程治國(guó)等在期刊《計(jì)算機(jī)應(yīng)用研究》第12期發(fā)表“一種數(shù)字地圖自動(dòng)生成系統(tǒng)及其拼接技術(shù)” 一文,介紹了以后總數(shù)字地圖自動(dòng)生成系統(tǒng)的功能原理及實(shí)現(xiàn)形式,同時(shí)詳細(xì)研究了大幅數(shù)字地圖自動(dòng)拼接問(wèn)題;2010年,張贏等在期刊《計(jì)算機(jī)工程與設(shè)計(jì)》第31卷第16期發(fā)表“數(shù)字地幅接邊的虛拼接算法”一文,提出了基于矢量ID映射的“虛拼接”算法來(lái)進(jìn)行拼接。然而這些研究都是針對(duì)圖幅中的線矢量的拼接,而在實(shí)際應(yīng)用中面矢量割裂的問(wèn)題也廣泛存在,目前還沒(méi)有成熟的方法解決這一問(wèn)題。

發(fā)明內(nèi)容
本發(fā)明要解決技術(shù)問(wèn)題是:克服上述技術(shù)的缺點(diǎn),提供一種多邊形矢量數(shù)據(jù)文件的并行拼接方法,能夠有效地解決基于行劃分的柵格矢量化并行算法的結(jié)果出現(xiàn)多邊形被切分的問(wèn)題,并且大大提高了矢量文件的拼接效率。
為了解決上述技術(shù)問(wèn)題,本發(fā)明提出的技術(shù)方案是:一種多邊形矢量數(shù)據(jù)文件的并行拼接方法,包括以下步驟: 第一步、系統(tǒng)初始化,生成管理進(jìn)程和多個(gè)拼接進(jìn)程,所述管理進(jìn)程讀取多邊形矢量文件,并將多邊形矢量文件分成兩類(lèi),一類(lèi)為需要拼接的矢量文件,另一類(lèi)為不需要拼接的矢量文件;
第二步、所述管理進(jìn)程對(duì)需要拼接的矢量文件進(jìn)行排序,形成矢量文件拼接序列,將相鄰且成對(duì)的需要拼接的矢量文件的文件名分配給各拼接進(jìn)程,同時(shí)將所述成對(duì)的需要拼接的矢量文件名從管理進(jìn)程的矢量文件拼接序列中刪除;
第三步、所述拼接進(jìn)程接收從管理進(jìn)程傳遞的成對(duì)的需要拼接的矢量文件名并從硬盤(pán)讀取矢量文件,依次遍歷需要拼接的矢量文件中的多邊形,找到需要拼接的多邊形;
第四步、所述拼接進(jìn)程對(duì)第三步找到的需要拼接的多邊形進(jìn)行拼接,從而完成所述成對(duì)矢量文件的拼接,并將拼接后的矢量文件存入硬盤(pán),拼接后的矢量文件名傳遞回管理進(jìn)程,如果拼接后的矢量文件仍需要進(jìn)行拼接,則由管理進(jìn)程將相應(yīng)的矢量文件名按順序插入到矢量文件拼接序列中;
第五步、轉(zhuǎn)至第二步,直到管理進(jìn)程的矢量文件拼接序列為空,即完成對(duì)所有矢量文件的拼接,管理進(jìn)程最終得到所有不需要拼接的矢量文件。本發(fā)明的創(chuàng)新點(diǎn)在于:本發(fā)明的多邊形矢量數(shù)據(jù)文件的并行拼接算法是通過(guò)管理進(jìn)程進(jìn)行合理地調(diào)度,將有跨界問(wèn)題的矢量數(shù)據(jù)文件的多邊形按照屬性值相同和有交界的原則進(jìn)行分類(lèi),結(jié)合多邊形位置關(guān)系的多種情形進(jìn)行合并,最終形成完整的矢量文件。本發(fā)明中采用主從式方式進(jìn)行消息傳遞,將多個(gè)待拼接的臨時(shí)矢量文件合理分配給各拼接進(jìn)程,每個(gè)拼接進(jìn)程負(fù)責(zé)相鄰上下兩塊矢量文件的拼接,最終形成完整的矢量文件。本發(fā)明提供了一種將多邊形矢量文件分成需要拼接的矢量文件和不需要拼接的矢量文件的方法,具體如下:如果該矢量文件跨界則為需要拼接的矢量文件,否則為不需要拼接的矢量文件。本發(fā)明在第二步中,所述管理進(jìn)程對(duì)需要拼接的矢量文件進(jìn)行排序的方法如下:根據(jù)需要拼接的矢量文件下邊界線對(duì)應(yīng)的屏幕縱坐標(biāo)將各需要拼接的矢量文件按從小到大的順序進(jìn)行排序。本發(fā)明在第三步中,提供了一種拼接進(jìn)程將多多邊形分成需要拼接的多邊形和不需要拼接的多邊形的方法,具體如下:如果多邊形與矢量文件邊界的交點(diǎn)個(gè)數(shù)大于I則為需要拼接的多邊形,否則為不需要拼接的多邊形。本發(fā)明在第四步中提供了一種對(duì)需要拼接的多邊形進(jìn)行拼接的方法,具體如下:將成對(duì)的需要拼接的矢量文件分為上方矢量文件和下方矢量文件,并將上方矢量文件中需要拼接的多邊形點(diǎn)集存入第一待拼接點(diǎn)集,下方矢量文件中需要拼接的多邊形點(diǎn)集存入第二待拼接點(diǎn)集,第一待拼接點(diǎn)集與第二待拼接點(diǎn)集中的點(diǎn)集根據(jù)多邊形相對(duì)位置關(guān)系進(jìn)行匹配,完成多邊形的拼接。本發(fā)明在第四步中提供了一種對(duì)相鄰且成對(duì)的需要拼接的矢量文件進(jìn)行拼接的方法,具體如下:以下方矢量文件中的多邊形為基準(zhǔn)按照預(yù)定的屬性值進(jìn)行遍歷,在每一次遍歷中,將下方矢量文件中的多邊形與上方矢量文件中的多邊形根據(jù)屬性值相等和邊界有重合兩個(gè)必要條件按照獨(dú)立多邊形、一對(duì)一、一對(duì)多或多對(duì)多的位置關(guān)系進(jìn)行組合,完成所有多邊形的組合匹配,將每一個(gè)組合中的各個(gè)多邊形點(diǎn)集進(jìn)行拆分與合并,最終完成所有多邊形組合的拼接。本發(fā)明帶來(lái)的有益效果是:
I)本發(fā)明解決了基于行劃分的柵格矢量化并行算法的結(jié)果出現(xiàn)多邊形被切分的問(wèn)題。本發(fā)明在考慮將現(xiàn)有多邊形柵格數(shù)據(jù)矢量化算法并行化的過(guò)程中出現(xiàn)的最終目標(biāo)矢量文件多邊形被切分現(xiàn)狀的基礎(chǔ)上,增加了多邊形矢量數(shù)據(jù)文件的并行拼接算法,有效地解決了基于行劃分的柵格矢量化并行算法中形成的多邊形因跨界而導(dǎo)致被切分的問(wèn)題。第二,本發(fā)明在很大程度上提升多邊形矢量數(shù)據(jù)文件拼接的效率,縮短了拼接的時(shí)間,在海量數(shù)據(jù)處理方面尤其明顯。本發(fā)明充分利用現(xiàn)有的多核處理器和計(jì)算機(jī)集群,并行處理多邊形矢量數(shù)據(jù)的拼接問(wèn)題,采用主從式的調(diào)度,對(duì)待拼接的臨時(shí)矢量文件建立堆棧數(shù)據(jù)結(jié)構(gòu)的調(diào)度序列,可以合理有效地對(duì)任意多個(gè)需要拼接的矢量文件進(jìn)行拼接,從而在保證矢量文件多邊形拓?fù)潢P(guān)系正確的基礎(chǔ)之上形成一個(gè)完整的矢量文件。綜上,本發(fā)明將多邊形矢量數(shù)據(jù)文件拼接算法與并行處理技術(shù)結(jié)合,采用主從式的并行模式,實(shí)現(xiàn)了多邊形矢量數(shù)據(jù)文件的并行拼接,在一定程度上解決了多個(gè)矢量數(shù)據(jù)文件中的多邊形因跨界而導(dǎo)致多邊形被切分的問(wèn)題。本發(fā)明充分利用多核處理器等新型架構(gòu)的計(jì)算機(jī)設(shè)備,能夠快速有效地實(shí)現(xiàn)多個(gè)多邊形矢量數(shù)據(jù)文件的并行拼接。實(shí)踐證明,該方法具有較高的并行性,可以解決數(shù)據(jù)行劃分引起的多邊形跨界問(wèn)題。


下面結(jié)合附圖對(duì)本發(fā)明的多邊形矢量數(shù)據(jù)文件的并行拼接方法作進(jìn)一步說(shuō)明。圖1是本發(fā)明實(shí)施例的流程圖。圖2是本發(fā)明實(shí)施例的待拼接矢量數(shù)據(jù)文件示意圖。圖3是本發(fā)明實(shí)施例的矢量文件拼接原理示意圖
圖4是本發(fā)明實(shí)施例的矢量文件拼接過(guò)程多邊形分類(lèi)情形示意圖。圖5是本發(fā)明實(shí)施例的拼接后的矢量數(shù)據(jù)文件示意圖。
具體實(shí)施方式
實(shí)施例本實(shí)施例采用圖2所示的Shapefile格式的某地6個(gè)待拼接矢量數(shù)據(jù)文件,其拼接的原理如圖3所示,空間參考系為1980西安坐標(biāo)系。程序運(yùn)行的環(huán)境為IBM System X系列服務(wù)器環(huán)境下的6臺(tái)Windows XP SP3系統(tǒng)組成的MPI并行計(jì)算集群環(huán)境,處理器為8核。本實(shí)施例具體實(shí)施在Microsoft Visual Studio 2010開(kāi)發(fā)平臺(tái)下采用標(biāo)準(zhǔn)C++編程語(yǔ)言,結(jié)合MPI并行環(huán)境與開(kāi)源地理數(shù)據(jù)格式轉(zhuǎn)換類(lèi)庫(kù)GDAL 1.80實(shí)現(xiàn)。本實(shí)施例的多邊形矢量數(shù)據(jù)文件的并行拼接方法,如圖1所示,包括以下步驟: 第一步、系統(tǒng)初始化,生成管理進(jìn)程和多個(gè)拼接進(jìn)程,所述管理進(jìn)程(利用GDALOpen
方法)讀取多邊形矢量文件,并將多邊形矢量文件分成兩類(lèi),一類(lèi)為需要拼接的矢量文件(Incomplete文件),另一類(lèi)為不需要拼接的矢量文件(Completed文件)。本實(shí)施例中如果該矢量文件跨界則為需要拼接的矢量文件,否則為不需要拼接的矢量文件。
本實(shí)施例中,將不需要拼接的臨時(shí)矢量文件中的多邊形矢量數(shù)據(jù)直接寫(xiě)入目標(biāo)矢量文件,對(duì)所有需要拼接的臨時(shí)矢量文件按從下至上的順序利用堆棧的數(shù)據(jù)結(jié)構(gòu)形成調(diào)度序列。第二步、所述管理進(jìn)程對(duì)需要拼接的矢量文件進(jìn)行排序,形成矢量文件拼接序列,將相鄰且成對(duì)的需要拼接的矢量文件的文件名分配給各拼接進(jìn)程,同時(shí)將所述成對(duì)的需要拼接的矢量文件名從管理進(jìn)程的矢量文件拼接序列中刪除。本實(shí)施例中根據(jù)需要拼接的矢量文件下邊界線對(duì)應(yīng)的屏幕縱坐標(biāo)將各需要拼接的矢量文件按從小到大的順序進(jìn)行排序。第三步、所述拼接進(jìn)程接收從管理進(jìn)程傳遞的成對(duì)的需要拼接的矢量文件名并(使用OGROpen方法)從硬盤(pán)讀取矢量文件,依次遍歷需要拼接的矢量文件中的多邊形,找到需要拼接的多邊形。本實(shí)施例中如果多邊形與矢量文件邊界的交點(diǎn)個(gè)數(shù)大于I則為需要拼接的多邊形,否則為不需要拼接的多邊形。第四步、所述拼接進(jìn)程對(duì)第三步找到的需要拼接的多邊形進(jìn)行拼接,從而完成所述成對(duì)矢量文件的拼接,并將拼接后的矢量文件存入硬盤(pán),拼接后的矢量文件名傳遞回管理進(jìn)程,如果拼接后的矢量文件仍需要進(jìn)行拼接,則由管理進(jìn)程將相應(yīng)的矢量文件名按順序插入到矢量文件拼接序列中。程序中,首先在矢量數(shù)據(jù)集中利用OGR的CreatLayer方法創(chuàng)建新的臨時(shí)待拼接矢量文件,其次根據(jù)上下兩塊矢量文件的多邊形點(diǎn)集進(jìn)行拼接。最后將拼接完成的點(diǎn)集寫(xiě)入新的臨時(shí)待拼接矢量文件中。本實(shí)施例將成對(duì)的需要拼接的矢量文件分為上方矢量文件和下方矢量文件,并將上方矢量文件中需要拼接的多邊形點(diǎn)集存入第一待拼接點(diǎn)集,下方矢量文件中需要拼接的多邊形點(diǎn)集存入第二待拼接點(diǎn)集,第一待拼接點(diǎn)集與第二待拼接點(diǎn)集中的點(diǎn)集根據(jù)多邊形相對(duì)位置關(guān)系進(jìn)行匹配,完成多邊形的拼接。對(duì)相鄰且成對(duì)的需要拼接的矢量文件進(jìn)行拼接的方法如下:
以下方矢量文件中的多邊形為基準(zhǔn)按照預(yù)定的屬性值進(jìn)行遍歷,在每一次遍歷中,將下方矢量文件中的多邊形與上方矢量文件中的多邊形根據(jù)屬性值相等和邊界有重合兩個(gè)必要條件按照獨(dú)立多邊形、一對(duì)一、一對(duì)多或多對(duì)多的位置關(guān)系進(jìn)行組合,如圖4所示,從而完成所有多邊形的組合匹配,將每一個(gè)組合中的各個(gè)多邊形點(diǎn)集進(jìn)行拆分與合并,最終完成所有多邊形組合的拼接。針對(duì)矢量文件拼接,本發(fā)明在程序中的具體實(shí)現(xiàn)方法如下:
(I)讀取矢量文件,遍歷所有多邊形,判斷當(dāng)前多邊形是否需要拼接,判斷的方法是是否該多邊形是否與邊界線相交,如果沒(méi)有相交,則該多邊形完全處于當(dāng)前數(shù)據(jù)塊內(nèi),是不需要拼接的多邊形;如果相交,則該多邊形是需要拼接的多邊形。將不需要拼接的多邊形點(diǎn)集存儲(chǔ)NoNeedMatch數(shù)組中;將需要拼接的上方矢量文件點(diǎn)集存儲(chǔ)至UpPolygon數(shù)組中,下方矢量文件點(diǎn)集存儲(chǔ)至DownPolygon數(shù)組中。(2)遍歷下方矢量文件的多邊形的屬性值,并對(duì)屬性值進(jìn)行歸類(lèi),存入屬性值數(shù)組ValueList 中。(3)按照屬性值的不同對(duì)下方矢量文件的多邊形進(jìn)行遍歷。在每一次遍歷中,將上方矢量文件的多邊形屬性值為當(dāng)前屬性值的所有多邊形的點(diǎn)集存儲(chǔ)至數(shù)組UpPolygonMatch中;將下方矢量文件的多邊形屬性值為當(dāng)前屬性值的所有多邊形的點(diǎn)集存儲(chǔ)至數(shù)組DownPolygonMatch中。(4)遍歷數(shù)組UpPolygonMatch和DownPolygonMatch,分別求出多邊形與邊界線相交的所有點(diǎn),即遍歷點(diǎn)集中的點(diǎn),找到與邊界線的Y值相同的點(diǎn),找出其中X值最小和最大的兩個(gè)點(diǎn)記為(MinX, BoundryY), (MaxX, BoundryY)并進(jìn)行存儲(chǔ)。(5)將數(shù)組UpPolygonMatch和DownPolygonMatch中存放的多邊形的點(diǎn)按照MinX值從小到大的順序進(jìn)行排序,排序完畢后首先對(duì)上、下方矢量文件的多邊形分別從O開(kāi)始進(jìn)行編號(hào),其次進(jìn)行第一次的多邊形剔除操作,被剔除的多邊形滿足以下條件:該多邊形的MinX大于前一個(gè)多邊形的MinX,但MaxX小于前一個(gè)多邊形的MaxX ;即剔除的多邊形完全位于另外一個(gè)多邊形內(nèi)部。剔除完畢后對(duì)多邊形編號(hào)進(jìn)行更新。(6)對(duì)所有多邊形的點(diǎn)集以點(diǎn)(MinX, BoundryY)作為起始點(diǎn)并按照逆時(shí)針順序進(jìn)行重組.遍歷下方矢量文件的多邊形,找出上方矢量文件的多邊形中與下方矢量文件中每一個(gè)多邊形有交界且屬性值相同的多邊形,并將上方矢量文件的多邊形的序號(hào)存入Polygon 數(shù)組。(7)遍歷Polygon數(shù)組對(duì)多邊形的拼接組合按照獨(dú)立多邊形、一對(duì)一、一對(duì)多和多對(duì)多進(jìn)行分類(lèi),并建立拼接組合的索引(多邊形分類(lèi)情形示意圖參見(jiàn)附圖4)。(8)根據(jù)已經(jīng)確定的拼接組合索引進(jìn)行遍歷并分別進(jìn)行點(diǎn)集的拆分與合并,對(duì)當(dāng)前多邊形是否已經(jīng)處理完畢進(jìn)行識(shí)別(O代表待拼接,I代表已拼接)。點(diǎn)集的拆分和合并分為三種層次:一是將多邊形中存在的獨(dú)立洞存入獨(dú)立洞數(shù)組;二是找出所有的洞,并將洞分為作為獨(dú)立洞和歸入外環(huán)點(diǎn)集的情形,將確認(rèn)為獨(dú)立洞的點(diǎn)集存入獨(dú)立洞數(shù)組;三是將二中歸入外環(huán)點(diǎn)集的洞的點(diǎn)集歸入外環(huán)點(diǎn)集數(shù)組。具體步驟如下:
①首先遍歷該拼接組合中上、下方矢量文件的多邊形,并將已經(jīng)存在的獨(dú)立洞的點(diǎn)集存入獨(dú)立洞數(shù)組IndependentHole中。②找出上、下方矢量文件中所有的洞分別進(jìn)行從O開(kāi)始的編號(hào),以下方矢量文件的洞為優(yōu)先,找出上方矢量文件的洞中與當(dāng)前洞有交界的所有洞,再進(jìn)行獨(dú)立洞、一對(duì)一、一對(duì)多和多對(duì)多的組合匹配。將獨(dú)立洞存入獨(dú)立洞數(shù)組Ind印endentHole中;對(duì)其他組合的多邊形首先進(jìn)行點(diǎn)集的拆分和合并形成一個(gè)完整的洞,其次判斷在拼接后該洞屬于獨(dú)立洞還是屬于外環(huán)中的一部分,判斷的方法是:若該洞與對(duì)面塊多邊形外環(huán)完全沒(méi)有交界則屬于外環(huán)中的一部分,反之則屬于獨(dú)立洞;若獨(dú)立洞則存入獨(dú)立洞數(shù)組IndependentHole中;若是屬于外環(huán)中的一部分,則遍歷當(dāng)前洞的對(duì)面塊中的多邊形,找出與當(dāng)前洞距離最近的多邊形,并將該洞的點(diǎn)集與該多邊形點(diǎn)集進(jìn)行拆分與合并。③首先從左至右遍歷下方矢量文件的多邊形,對(duì)于每個(gè)多邊形將(MinX,BounrdyY)與(MaxX, BourndryY)之間邊界線上的點(diǎn)剔除,保留剩下的點(diǎn),依次存入OutRing數(shù)組中;其次從右至左遍歷上方矢量文件的多邊形,對(duì)于每個(gè)多邊形將(MinX, BourndryY)與(MaxX, BourndryY)之間邊界上的點(diǎn)剔除,保留剩下的點(diǎn),并依次存入OutRing數(shù)組中。④分別將OutRing點(diǎn)集與IndependentHole點(diǎn)集寫(xiě)入目標(biāo)矢量文件。(9)將NoNeedMatch數(shù)組中的點(diǎn)集寫(xiě)入目標(biāo)矢量文件。第五步、轉(zhuǎn)至第二步,直到管理進(jìn)程的矢量文件拼接序列為空,即完成對(duì)所有矢量文件的拼接,管理進(jìn)程最終得到所有不需要拼接的矢量文件。本實(shí)施例最終得到拼接后的矢量文件如圖5所示。本實(shí)施例將多邊形矢量數(shù)據(jù)文件拼接算法與并行處理技術(shù)結(jié)合,采用主從式的并行模式,實(shí)現(xiàn)了多邊形矢量數(shù)據(jù)文件的并行拼接,在一定程度上解決了多個(gè)矢量數(shù)據(jù)文件中的多邊形因跨界而導(dǎo)致多邊形被切分的問(wèn)題。本實(shí)施例充分利用多核處理器等新型架構(gòu)的計(jì)算機(jī)設(shè)備,能夠快速有效地實(shí)現(xiàn)多個(gè)多邊形矢量數(shù)據(jù)文件的并行拼接。實(shí)踐證明,該方法具有較高的并行性,可以解決數(shù)據(jù)行劃分引起的多邊形跨界問(wèn)題。本發(fā)明的多邊形矢量數(shù)據(jù)文件的并行拼接方法不局限于上述實(shí)施例所述的具體技術(shù)方案,凡采用等同替換形成的技術(shù)方案均為本發(fā)明要求的保護(hù)范圍。
權(quán)利要求
1.一種多邊形矢量數(shù)據(jù)文件的并行拼接方法,包括以下步驟: 第一步、系統(tǒng)初始化,生成管理進(jìn)程和多個(gè)拼接進(jìn)程,所述管理進(jìn)程讀取多邊形矢量文件,并將多邊形矢量文件分成兩類(lèi),一類(lèi)為需要拼接的矢量文件,另一類(lèi)為不需要拼接的矢量文件; 第二步、所述管理進(jìn)程對(duì)需要拼接的矢量文件進(jìn)行排序,形成矢量文件拼接序列,將相鄰且成對(duì)的需要拼接的矢量文件的文件名分配給各拼接進(jìn)程,同時(shí)將所述成對(duì)的需要拼接的矢量文件名從管理進(jìn)程的矢量文件拼接序列中刪除; 第三步、所述拼接進(jìn)程接收從管理進(jìn)程傳遞的成對(duì)的需要拼接的矢量文件名并從硬盤(pán)讀取矢量文件,依次遍歷需要拼接的矢量文件中的多邊形,找到需要拼接的多邊形; 第四步、所述拼接進(jìn)程對(duì)第三步找到的需要拼接的多邊形進(jìn)行拼接,從而完成所述成對(duì)矢量文件的拼接,并將拼接后的矢量文件存入硬盤(pán),拼接后的矢量文件名傳遞回管理進(jìn)程,如果拼接后的矢量文件仍需要進(jìn)行拼接,則由管理進(jìn)程將相應(yīng)的矢量文件名按順序插入到矢量文件拼接序列中; 第五步、轉(zhuǎn)至第二步,直到管理進(jìn)程的矢量文件拼接序列為空,即完成對(duì)所有矢量文件的拼接,管理進(jìn)程最終得到所有不需要拼接的矢量文件。
2.根據(jù)權(quán)利要求1所述的多邊形矢量數(shù)據(jù)文件的并行拼接方法,其特征在于,將多邊形矢量文件分成需要拼接的矢量文件和不需要拼接的矢量文件的方法是:如果該矢量文件跨界則為需要拼接的矢量文件,否則為不需要拼接的矢量文件。
3.根據(jù)權(quán)利要求1所述的多邊形矢量數(shù)據(jù)文件的并行拼接方法,其特征在于:第二步中,根據(jù)需要拼接的矢量文件下邊界線對(duì)應(yīng)的屏幕縱坐標(biāo)將各需要拼接的矢量文件按從小到大的順序進(jìn)行排序。
4.根據(jù)權(quán)利要求1所述的多邊形矢量數(shù)據(jù)文件的并行拼接方法,其特征在于,第三步中,如果多邊形與矢量文件邊界的交點(diǎn)個(gè)數(shù)大于I則為需要拼接的多邊形,否則為不需要拼接的多邊形。
5.根據(jù)權(quán)利要求1所述的多邊形矢量數(shù)據(jù)文件的并行拼接方法,其特征在于,第四步中,對(duì)需要拼接的多邊形進(jìn)行拼接的方法是:將成對(duì)的需要拼接的矢量文件分為上方矢量文件和下方矢量文件,并將上方矢量文件中需要拼接的多邊形點(diǎn)集存入第一待拼接點(diǎn)集,下方矢量文件中需要拼接的多邊形點(diǎn)集存入第二待拼接點(diǎn)集,第一待拼接點(diǎn)集與第二待拼接點(diǎn)集中的點(diǎn)集根據(jù)多邊形相對(duì)位置關(guān)系進(jìn)行匹配,完成多邊形的拼接。
6.根據(jù)權(quán)利要求5所述的多邊形矢量數(shù)據(jù)文件的并行拼接方法,其特征在于,第四步中,對(duì)相鄰且成對(duì)的需要拼接的矢量文件進(jìn)行拼接的方法是:以下方矢量文件中的多邊形為基準(zhǔn)按照預(yù)定的屬性值進(jìn)行遍歷,在每一次遍歷中,將下方矢量文件中的多邊形與上方矢量文件中的多邊形根據(jù)屬性值相等和邊界有重合兩個(gè)必要條件按照獨(dú)立多邊形、一對(duì)一、一對(duì)多或多對(duì)多的位置關(guān)系進(jìn)行組合,完成所有多邊形的組合匹配,將每一個(gè)組合中的各個(gè)多邊形點(diǎn)集進(jìn)行拆分與合并,最終完成所有多邊形組合的拼接。
全文摘要
本發(fā)明涉及一種多邊形矢量數(shù)據(jù)文件的并行拼接方法,步驟如下系統(tǒng)生成管理進(jìn)程和多個(gè)拼接進(jìn)程,管理進(jìn)程讀取多邊形矢量文件,并將多邊形矢量文件分成需要拼接的矢量文件和不需要拼接的矢量文件;管理進(jìn)程對(duì)需要拼接的矢量文件排序,將相鄰且成對(duì)的需要拼接的矢量文件分配給各拼接進(jìn)程;拼接進(jìn)程接收從管理進(jìn)程傳遞的需要拼接的矢量文件名,遍歷需要拼接的矢量文件中的多邊形,找到需要拼接的多邊形并對(duì)多邊形進(jìn)行拼接,并將拼接后的矢量文件名傳遞回管理進(jìn)程;重復(fù)執(zhí)行以上步驟,直到管理進(jìn)程的矢量文件拼接序列為空。該方法能夠有效地解決基于行劃分的柵格矢量化并行算法的結(jié)果出現(xiàn)多邊形被切分的問(wèn)題,且提高了矢量文件的拼接效率。
文檔編號(hào)G06F17/30GK103106254SQ20131002071
公開(kāi)日2013年5月15日 申請(qǐng)日期2013年1月21日 優(yōu)先權(quán)日2013年1月21日
發(fā)明者陳振杰, 周琛, 李滿春, 程亮, 李飛雪, 魏金標(biāo), 陳沖, 劉永學(xué), 黃濤, 張帥, 姜曉慧 申請(qǐng)人:南京大學(xué)
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1