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

一種用于地理信息系統(tǒng)中的空間疊加分析方法和系統(tǒng)的制作方法

文檔序號(hào):6575552閱讀:463來源:國知局

專利名稱::一種用于地理信息系統(tǒng)中的空間疊加分析方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及地理信息系統(tǒng)(GeographicInformationSystem,GIS)領(lǐng)域,特別是涉及一種用于地理信息系統(tǒng)中的空間疊加分析方法和系統(tǒng)。
背景技術(shù)
:地理信息系統(tǒng)(GeographicInformationSystem或Geo_Informationsystem,GIS)有時(shí)又稱為"地學(xué)信息系統(tǒng)"或"資源與環(huán)境信息系統(tǒng)"。它是一種特定的十分重要的空間信息系統(tǒng)。它是在計(jì)算機(jī)硬、軟件系統(tǒng)支持下,對(duì)整個(gè)或部分地球表層(包括大氣層)空間中的多種地理空間實(shí)體數(shù)據(jù)及其關(guān)系,包括空間定位數(shù)據(jù)、圖形數(shù)據(jù)、遙感圖像數(shù)據(jù)、屬性數(shù)據(jù)等,進(jìn)行采集、儲(chǔ)存、管理、運(yùn)算、分析、顯示和描述的技術(shù)系統(tǒng)。用于分析和處理在一定地理區(qū)域內(nèi)分布的各種現(xiàn)象和過程,解決復(fù)雜的規(guī)劃、決策和管理問題。疊加分析是地理信息系統(tǒng)空間分析中的核心部分,在地理信息系統(tǒng)空間分析中具有很重要的地位。疊加分析是指在統(tǒng)一空間參考系統(tǒng)下,通過對(duì)兩個(gè)數(shù)據(jù)進(jìn)行的一系列集合運(yùn)算,產(chǎn)生新數(shù)據(jù)的過程。這里提到的數(shù)據(jù)可以是圖層對(duì)應(yīng)的數(shù)據(jù)集,也可以是地物對(duì)象。疊加分析的目的就是通過對(duì)空間數(shù)據(jù)的加工或分析,提取用戶需要的新的空間幾何信息。在疊加分析中至少涉及到三個(gè)數(shù)據(jù),其中一個(gè)數(shù)據(jù)的類型可以是點(diǎn)、線、面等,被稱作輸入數(shù)據(jù);另一個(gè)數(shù)據(jù)是面數(shù)據(jù)被稱作疊加數(shù)據(jù);還有一個(gè)數(shù)據(jù)就是疊加結(jié)果數(shù)據(jù),包含疊加后數(shù)據(jù)的幾何信息和屬性信息。就目前公開發(fā)表的地理信息系統(tǒng)中有關(guān)疊加分析的文獻(xiàn)而言,疊加分析算法普遍為基于矢量的方法。然而,基于矢量方法是面向物體的描述,一般地說物體間的關(guān)系尤其是幾何關(guān)系的分析比較困難,相關(guān)的定位檢索比較耗時(shí),算法也較為復(fù)雜。例如,利用矢量方法建立拓?fù)潢P(guān)系,往往要進(jìn)行頻繁的點(diǎn)位匹配、坐標(biāo)排序、角度計(jì)算等操作,對(duì)算法的效率有影響;對(duì)一些特殊情況,如建立弧_多邊形拓?fù)潢P(guān)系時(shí),可能出現(xiàn)含"島"或具有環(huán)狀結(jié)構(gòu)的多邊形,還可能有一些死胡同或孤立弧,利用矢量方法處理這類情況較為復(fù)雜。GIS中與矢量方法同等重要的是柵格方法。多數(shù)情況下柵格數(shù)據(jù)結(jié)構(gòu)要比矢量數(shù)據(jù)結(jié)構(gòu)簡單得多,基于空間位置的分析也相對(duì)容易一些。因此,利用柵格方法進(jìn)行GIS中的空間疊加分析,應(yīng)該是GIS研究與實(shí)踐中一項(xiàng)有意義的嘗試。
發(fā)明內(nèi)容本發(fā)明的目的在于提供一種用于地理信息系統(tǒng)中的空間疊加分析方法和系統(tǒng)。是一種新的地圖/多邊形疊加算法,其利用了柵格算法的優(yōu)勢(shì),能夠避免計(jì)算幾何算法的缺點(diǎn),提高疊加效率。為實(shí)現(xiàn)本發(fā)明的目的而提供的一種用于地理信息系統(tǒng)中的空間疊加分析方法,包括下列步驟步驟100.將輸入地理信息系統(tǒng)中的圖層的矢量數(shù)據(jù)轉(zhuǎn)換成柵格數(shù)據(jù),并采用游程編碼表示;步驟200.對(duì)該采用游程編碼表示的柵格數(shù)據(jù)執(zhí)行疊加操作;步驟300.將疊加后的柵格數(shù)據(jù)再轉(zhuǎn)換成矢量數(shù)據(jù),得到經(jīng)過疊加的圖層。所述步驟100,包括下列步驟步驟110.掃描輸入地理信息系統(tǒng)的一個(gè)圖層中的每一個(gè)多邊形,對(duì)每一個(gè)多邊形再循環(huán)讀入該多邊形的每一個(gè)環(huán),對(duì)于每個(gè)環(huán),計(jì)算y值掃描線與每個(gè)弧段Pi&,設(shè)y<P2.y的斷點(diǎn)I的橫坐標(biāo)^J=〗-+尸2.義,以構(gòu)造斷點(diǎn)坐標(biāo)加入斷點(diǎn)柵格場(chǎng);步驟120.將所述多邊形的所有環(huán)的斷點(diǎn)加入到柵格場(chǎng),建立經(jīng)過所述y值掃描線掃描得到的行的游程集合并組織成鏈表形式。所述步驟200中,所述疊加操作,是對(duì)采用游程編碼表示的柵格數(shù)據(jù)進(jìn)行交、并、差布爾運(yùn)算。所述步驟300,包括下列步驟步驟310.游程?hào)鸥襁吔缡噶炕?,得到圖層弧段;步驟320.根據(jù)所述圖層弧段,生成圖層。所述步驟310,包括下列步驟步驟311.對(duì)每個(gè)游程單元,用兩個(gè)數(shù)組表示各個(gè)游程單元的左邊界、右邊界是否被使用過,其初始值都是沒有使用過;步驟312.從游程鏈表中選擇符合預(yù)設(shè)條件的游程單元,將其左邊界或右邊界作為追蹤的初始點(diǎn);步驟313.從初始點(diǎn)開始進(jìn)行矢量追蹤,在追蹤過程中,將經(jīng)歷過的游程左邊界或右邊界的相應(yīng)標(biāo)志值設(shè)置為使用過;步驟314.重復(fù)步驟312-213,直至不存在任何相應(yīng)標(biāo)志值設(shè)置為使用過的游程,沒有新的追蹤初始點(diǎn)時(shí)終止循環(huán)。為實(shí)現(xiàn)本發(fā)明的目的,還提供一種用于地理信息系統(tǒng)中的空間疊加分析系統(tǒng),包括矢轉(zhuǎn)柵模塊,用于將輸入地理信息系統(tǒng)中的圖層的矢量數(shù)據(jù)轉(zhuǎn)換成柵格數(shù)據(jù),并采用游程編碼表示;疊加模塊,用于對(duì)該采用游程編碼表示的柵格數(shù)據(jù)執(zhí)行疊加操作;疊加圖層輸出模塊,用于將疊加后的柵格數(shù)據(jù)再轉(zhuǎn)換成矢量數(shù)據(jù),得到經(jīng)過疊加的圖層。所述矢轉(zhuǎn)柵模塊,包括掃面模塊,用于掃描輸入地理信息系統(tǒng)的一個(gè)圖層中的每一個(gè)多邊形,對(duì)每一個(gè)多邊形再循環(huán)讀入該多邊形的每一個(gè)環(huán),對(duì)于每個(gè)環(huán),計(jì)算y值掃描線與每個(gè)弧段的斷點(diǎn)的橫坐標(biāo),以構(gòu)造斷點(diǎn)坐標(biāo)加入斷點(diǎn)柵格場(chǎng);游程編碼模塊,用于將所述多邊形的所有環(huán)的斷點(diǎn)加入到柵格場(chǎng),建立經(jīng)過所述y值掃描線掃描得到的行的游程集合并組織成鏈表形式。所述疊加模塊,包括合并插入模塊,用于對(duì)兩個(gè)有重疊的游程單元間合并,否則把當(dāng)前游程單元插入到適當(dāng)?shù)奈恢?,并且在插入的過程中把游程單元的屬性信息保存下來;刪除模塊,用于在當(dāng)前行游程鏈表內(nèi)刪除與待刪除游程單元區(qū)域重疊的部分。所述疊加圖層輸出模塊,包括邊界追蹤模塊,用于追蹤經(jīng)過疊加后的用游程編碼表示的柵格數(shù)據(jù),得到圖層弧段;拓?fù)渲貥?gòu)模塊,用于根據(jù)所述圖層弧段,生成圖層。所述邊界追蹤模塊,采用二值柵格的窗口化追蹤方法。本發(fā)明的有益效果是1.本發(fā)明提出了一種用于GIS中的空間疊加分析算法,此方法利用柵格算法的優(yōu)勢(shì),能避免計(jì)算幾何算法的缺點(diǎn),跟業(yè)界領(lǐng)先軟件-ArcGIS相比,此算法有較大的優(yōu)勢(shì)和好的性價(jià)比;2.本發(fā)明提出的基于柵格的疊加算法也同時(shí)可以通過根據(jù)預(yù)定義的地圖比例尺事先生成的地圖瓦片文件的方法來為網(wǎng)絡(luò)地圖服務(wù)器上提供空間分析功能;3.本發(fā)明提出的基于柵格的疊加算法,在預(yù)生成柵格化表達(dá)的前提下,本算法的疊加效率很高,這為網(wǎng)絡(luò)地圖服務(wù)模式下的空間分析功能性能提升提供了很好的探索方向。圖1是本發(fā)明空間疊加分析方法的流程圖;圖2是利用本發(fā)明對(duì)輸入的兩個(gè)圖層進(jìn)行疊加分析的實(shí)施例的流程示意圖;圖3是本發(fā)明中矢量數(shù)據(jù)轉(zhuǎn)換成柵格數(shù)據(jù)的方法流程圖;圖4是本發(fā)明中游程鏈表的疊加操作的結(jié)果示意圖;圖5是本發(fā)明中柵格數(shù)據(jù)再轉(zhuǎn)換成矢量數(shù)據(jù)得到經(jīng)過疊加的圖層的方法的流程圖;圖6是本發(fā)明中邊界矢量化的方法流程圖;圖7是本發(fā)明中基于游程編碼的游程?hào)鸥襁吔缱粉檲D;圖8是本發(fā)明中基于柵格追蹤的幾種情況的示意圖圖9是本發(fā)明中基于窗口的柵格追蹤的走向圖;圖10是本發(fā)明中一個(gè)能覆蓋所有組合的基于窗口的追蹤實(shí)例圖;圖11是本發(fā)明中鄰接多邊形的邊界追蹤示意圖;圖12是本發(fā)明中兩個(gè)輸入圖層的示意圖;圖13是對(duì)圖12中的兩個(gè)圖層求交、差、并的結(jié)果示意圖;圖14是本發(fā)明的空間疊加分析系統(tǒng)的結(jié)構(gòu)示意圖;圖15是本發(fā)明中一圖層數(shù)據(jù)示意圖;圖16是本發(fā)明的方法與ArcGIS的性能測(cè)試對(duì)比圖;圖17是本發(fā)明方法三個(gè)關(guān)鍵步驟運(yùn)行時(shí)間比例圖。具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明的一種用于地理信息系統(tǒng)中的空間疊加分析方法和系統(tǒng)進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明的一種用于地理信息系統(tǒng)(Geogr即hicInformationSystem,GIS)中的空間疊加分析方法和系統(tǒng),是通過將矢量數(shù)據(jù)轉(zhuǎn)換成柵格數(shù)據(jù),并對(duì)柵格數(shù)據(jù)進(jìn)行疊加操作,再將經(jīng)過疊加操作的柵格數(shù)據(jù)轉(zhuǎn)換為矢量數(shù)據(jù)的方法實(shí)現(xiàn)GIS中基于柵格的空間疊加分析。本發(fā)明要解決的技術(shù)問題包括1.基于掃描線和游程編碼的矢量數(shù)據(jù)柵格化;2.基于游程鏈表的圖層疊加操作;3.基于游程鏈表的柵格數(shù)據(jù)矢量化。下面結(jié)合上述目標(biāo)詳細(xì)介紹本發(fā)明用于GIS中的空間疊加分析方法,圖1是本發(fā)明空間疊加分析方法的流程圖,圖2是利用本發(fā)明對(duì)輸入的兩個(gè)圖層進(jìn)行疊加分析的實(shí)施例的流程示意圖,如圖1和圖2所示,所述空間疊加分析方法,包括下列步驟步驟100.將輸入GIS中的圖層的矢量數(shù)據(jù)轉(zhuǎn)換成柵格數(shù)據(jù),并采用游程編碼表示;矢量數(shù)據(jù)和柵格數(shù)據(jù)是GIS中最重要的兩種空間數(shù)據(jù),它們之間的相互轉(zhuǎn)換是GIS中的基礎(chǔ)問題并得到廣泛研究,矢量轉(zhuǎn)柵格是其中的一個(gè)方面。在點(diǎn)、線、面三種基本類型要素中,面的處理相對(duì)復(fù)雜一些。目前已提出的針對(duì)面要素的矢柵轉(zhuǎn)換方法有內(nèi)部點(diǎn)擴(kuò)散法、射線算法、掃描算法、邊界代數(shù)算法等,它們采用規(guī)則格網(wǎng)系統(tǒng),并以直接?xùn)鸥窬幋a方式(行列式)組織數(shù)據(jù)。直接?xùn)鸥窬幋a結(jié)構(gòu)簡單,操作方便,但存在數(shù)據(jù)量大、精度有限等缺點(diǎn),采用壓縮柵格編碼是克服這些缺點(diǎn)的有效途徑。GIS中較常用的壓縮柵格編碼有鏈編碼、游程編碼、哈夫曼編碼、四叉樹編碼、LZW編碼等,它們通常是針對(duì)不同特征的柵格數(shù)據(jù)而設(shè)計(jì)的。對(duì)于GIS中的面狀要素,一種簡單而有效的壓縮方法是游程編碼,它可達(dá)到較高的壓縮效率,且數(shù)據(jù)結(jié)構(gòu)簡單,易于操作。在游程編碼環(huán)境中,很多空間計(jì)算過程以游程為操作單元,與以網(wǎng)格為單元的運(yùn)算相比,這有助于提高相關(guān)算法的效率。因此,本發(fā)明中采用基于行掃描的游程編碼表示柵格數(shù)據(jù),并采用有序單向鏈表結(jié)構(gòu)方便游程的基本操作并提高效率。圖3是本發(fā)明中矢量數(shù)據(jù)轉(zhuǎn)換成柵格數(shù)據(jù)的方法流程圖,如圖3所示,所述步驟100,包括下列步驟步驟IIO.掃描輸入GIS的一個(gè)圖層中的每一個(gè)多邊形,對(duì)每一個(gè)多邊形再循環(huán)讀入該多邊形的每一個(gè)環(huán)(外環(huán)和內(nèi)環(huán)),對(duì)于每個(gè)環(huán),計(jì)算y值掃描線與每個(gè)弧段&P2(設(shè)P^y〈Py)的交點(diǎn)l(斷點(diǎn))的橫坐標(biāo)".^=^~~:'^、''+尸2丄),以構(gòu)造斷(尸2.少-《.力點(diǎn)坐標(biāo)加入斷點(diǎn)柵格場(chǎng)IP_GRID(每行皆為斷點(diǎn)鏈表,斷點(diǎn)結(jié)構(gòu)包含坐標(biāo)值val=I.x和指向下一個(gè)斷點(diǎn)的指針next);步驟120.將所述多邊形的所有環(huán)的斷點(diǎn)加入到柵格場(chǎng),建立經(jīng)過所述y值掃描線掃描得到的行的游程集合并組織成鏈表形式。當(dāng)把多邊形的所有環(huán)的斷點(diǎn)都加入到柵格場(chǎng)IP—GRID后(由于加入過程同時(shí)進(jìn)行了排序,所以每行的斷點(diǎn)是按序排列的),依據(jù)點(diǎn)-面包含關(guān)系判定的射線法原理得證,每個(gè)游程單元的邊界點(diǎn)由一對(duì)相鄰斷點(diǎn)組成,其中以奇數(shù)序號(hào)斷點(diǎn)為起始點(diǎn)的游程屬于面,所以可根據(jù)斷點(diǎn)序號(hào)的奇偶性,快速建立該行的游程集合并組織成鏈表形式。每段游程RL—Linktable包含游程的左值leftval和右值rightval、所屬多邊形編號(hào)rlid、指向下一段游程的指針next。較佳地,若某游程rl滿足條件rl.rightval-rl.leftval《dxy,即表示游程單元的邊界點(diǎn)的兩個(gè)相鄰斷點(diǎn)的值分別取整后在一個(gè)格子里,這種情況認(rèn)為小于柵格精度,所以則不將此游程加入到鏈表中,否則會(huì)使矢量化追蹤走向錯(cuò)誤從而導(dǎo)致追蹤標(biāo)記錯(cuò)誤,產(chǎn)生死循環(huán)或者多余內(nèi)環(huán)等。這種做法的額外好處是能簡化數(shù)據(jù),在精度要求不是很高但速度要求比較嚴(yán)格的應(yīng)用場(chǎng)合,此方法可提供數(shù)據(jù)簡化功能。較佳地,本發(fā)明中采用實(shí)數(shù)值記錄游程邊界點(diǎn)的方法,可以更有效提高游程?hào)鸥窕奈恢镁?。這點(diǎn)也正是用直接?xùn)鸥窬幋a所不能實(shí)現(xiàn)的,因?yàn)樵谥苯訓(xùn)鸥窬幋a中,柵格的位置是通過數(shù)組下標(biāo)隱式表示的,不能通過改變數(shù)據(jù)類型來提高精度;而游程編碼完全可以用更高精度的實(shí)數(shù)型數(shù)據(jù)進(jìn)行記錄。較佳地,本發(fā)明中還為輸入圖層中的多邊形設(shè)置了要素ID信息,并將其保存在鏈表結(jié)構(gòu),這樣做的好處之一是矢量化追蹤的時(shí)候可以根據(jù)多邊形的不同屬性進(jìn)行區(qū)分,之二是在輸出結(jié)果圖層中也能保存其屬性信息,以便以后做疊加分析的Web版本。所述步驟100的操作,可以通過下述偽代碼實(shí)現(xiàn)For(每個(gè)多邊形){For(每個(gè)環(huán))For(每個(gè)弧段)令該弧段兩個(gè)端點(diǎn)為Pl,P2,且Pl.y<=P2.yFor(y=Pl.y;y<P2.y);y++)計(jì)算Y與P1P2的交點(diǎn)橫坐標(biāo),以此作為斷點(diǎn)在柵格場(chǎng)中插入斷點(diǎn)(X)〃一個(gè)多邊形的各個(gè)環(huán)都處理完畢〃根據(jù)各行的斷點(diǎn),插入總場(chǎng)for(i;i<柵格場(chǎng)總行數(shù);i++)1"該行斷點(diǎn)個(gè)數(shù)>=2)每次選取2個(gè)斷點(diǎn),形成游程鏈表區(qū)域if(執(zhí)行的是裁剪操作)在柵格場(chǎng)中移除游程(XLEFT,XRIGHT)else在柵格場(chǎng)中插入游程(XLEFT,XRIGHT)}}}〃這個(gè)圖層的所有多邊形都做完了步驟200.對(duì)該采用游程編碼表示的柵格數(shù)據(jù)執(zhí)行疊加操作;由于步驟100中已經(jīng)將輸入的圖層在柵格場(chǎng)中表示,并采用游程編碼表示,因此本步驟中對(duì)柵格數(shù)據(jù)執(zhí)行疊加操作,即轉(zhuǎn)變?yōu)閷?duì)游程鏈表中的游程單元的疊加操作。游程鏈表的基本操作是基于某一行的游程而言的。圖4是本發(fā)明中游程鏈表的疊加操作的結(jié)果示意圖,如圖4所示,對(duì)游程鏈表中的游程單元的疊加操作,分為以下情況合并以及插入。兩個(gè)游程單元間有重疊就合并,否則把當(dāng)前游程單元插入到適當(dāng)?shù)奈恢?,并且在插入的過程中把游程單元的屬性信息保存下來。在已有行游程基礎(chǔ)上加入一個(gè)新的游程,合并游程重疊的部分,可以看作是一個(gè)普通有序鏈表的插入過程的演化。不同之處在于現(xiàn)在的游程的值有2個(gè)域值(相當(dāng)于數(shù)軸上的一個(gè)區(qū)間),所以插入過程就是進(jìn)行區(qū)間的疊置2個(gè)游程間有重疊就合并,否則把當(dāng)前游程插入到適當(dāng)?shù)奈恢谩2⑶以诓迦氲倪^程中把游程的屬性信息也保留下來,如游程所屬的多邊形的id號(hào)等,以便矢量化的使用。游程單元的刪除操作。在當(dāng)前行游程鏈表內(nèi)刪除與待刪除游程單元區(qū)域重疊的部分。在一個(gè)有序的游程鏈表中,刪除待刪除游程所指示的游程空間。這個(gè)過程正好和插入過程相反。較佳地,基于步驟100中采用游程編碼表示柵格數(shù)據(jù),本發(fā)明中提供一種采用基于游程鏈表的交、并、差等布爾操作算法實(shí)現(xiàn)疊加操作,如圖4所示。在基于游程鏈表表示的圖層?xùn)鸥駭?shù)據(jù)進(jìn)行疊加時(shí),其本質(zhì)是對(duì)兩個(gè)已排序的區(qū)間(游程)鏈表進(jìn)行集合操作,其復(fù)雜度為2n。如果柵格場(chǎng)內(nèi)共有M行游程鏈表,每行鏈表最多有接近n段游程,本算法此步實(shí)現(xiàn)的復(fù)雜性可表示為2XMX(n-3),即復(fù)雜度為O(n)。作為一種可實(shí)施方式,假設(shè)輸入A、B兩個(gè)圖層,某行的游程鏈表如圖4所示,標(biāo)號(hào)為游程屬于的多邊形ID號(hào)。圖4中列出了求交、并、差的結(jié)果。求交時(shí),把兩段游程單元的相交的部分作為新的游程單元加入結(jié)果集的過程中同時(shí)把多邊形的id號(hào)也當(dāng)作屬性信息(id0,idl)添加進(jìn)去,這樣在結(jié)果中就能知道是這兩個(gè)圖層的哪兩個(gè)多邊形的交集了。例如第一段結(jié)果集是由A的第0號(hào)多邊形和B的第0號(hào)多邊形求交得出的,所以其id0=0,idl=0。求差時(shí)比較簡單,把減數(shù)的游程刪除,結(jié)果集只需要保留被減圖層的ID號(hào)信息即可。求并時(shí),是這里面比較復(fù)雜的,不能一味的合并,而要把各部分有區(qū)別的加入到結(jié)果集,比如屬于A不屬于B的部分,在加入結(jié)果集的同時(shí),需要把這段游程的idl置為-l,這樣的好處是求并的結(jié)果集和求交的結(jié)果集數(shù)據(jù)結(jié)構(gòu)都一樣,可以共享矢量化過程。步驟300.將疊加后的柵格數(shù)據(jù)再轉(zhuǎn)換成矢量數(shù)據(jù),得到經(jīng)過疊加的圖層。將表達(dá)面域的柵格數(shù)據(jù)向矢量數(shù)據(jù)轉(zhuǎn)換,是提取具有相同屬性編碼的柵格集合的矢量邊界及邊界與邊界之間拓?fù)潢P(guān)系的過程,一般包含有多邊形邊界提取、邊界線搜索、拓?fù)潢P(guān)系生成、去除冗余點(diǎn)并進(jìn)行曲線圓滑等步驟,核心問題是邊界追蹤和拓?fù)渲貥?gòu)。文獻(xiàn)"基于二值柵格數(shù)據(jù)的邊界矢量化和面信息生成的一種實(shí)現(xiàn)方法"采用了基于窗口匹配技術(shù)的邊界追蹤算法和提出了基于閉合邊界曲線嵌套關(guān)系判定的方法,但無法區(qū)分相鄰多邊形的情況。本發(fā)明在邊界追蹤和拓?fù)渲貥?gòu)兩個(gè)核心過程中提出了基于要素屬性信息的矢量化過程,能夠巧妙的區(qū)分鄰接多邊形的矢量化。本步驟中,將所述疊加后的柵格數(shù)據(jù)再轉(zhuǎn)換成矢量數(shù)據(jù)的方法,包括邊界矢量化(即邊界追蹤)和面的生成(即拓?fù)渲貥?gòu))兩個(gè)部分。圖5是本發(fā)明中柵格數(shù)據(jù)再轉(zhuǎn)換成矢量數(shù)據(jù)得到經(jīng)過疊加的圖層的方法的流程圖,如圖5所示,所述步驟300,包括下列步驟步驟310.游程?hào)鸥襁吔缡噶炕?;本發(fā)明中游程?hào)鸥窈推胀ň仃囀蕉禆鸥竦膮^(qū)別主要在于柵格圖形的表現(xiàn)形式有所不同。顯然,二值柵格在表達(dá)柵格圖形的過程中比游程鏈表直觀,形象。然而,游程?hào)鸥竦氖噶炕^程與二值柵格的矢量化方法大體相同,不同的僅僅是本處所處理的柵格場(chǎng)結(jié)構(gòu)不同而已;另一方面,游程?hào)鸥襁吔缡噶孔粉欉^程中只需要處理每一個(gè)游程端點(diǎn)(游程起點(diǎn)和終點(diǎn)),而大量柵格圖中的內(nèi)部點(diǎn)不需要判別和追蹤。因此,矢量化過程中仍然采用二值柵格的窗口化追蹤方法,只是具體到每個(gè)游程的端點(diǎn)時(shí)需要做一個(gè)轉(zhuǎn)化將游程端點(diǎn)處的值轉(zhuǎn)化為二值柵格中的行列值,以便直接進(jìn)行追蹤。圖6是本發(fā)明中邊界矢量化的方法流程圖,如圖6所示,所述步驟310,包括下列步驟步驟311.對(duì)每個(gè)游程單元,用lsign,rsign兩個(gè)數(shù)組表示各個(gè)游程單元的左邊界、右邊界是否被使用過(追蹤過),其初始值都是FALSE,即沒有使用過;步驟312.從游程鏈表中選擇符合條件的游程單元(左邊界或右邊界沒有被使用過),將其左邊界或右邊界作為追蹤的初始點(diǎn);圖7是本發(fā)明中基于游程編碼的游程?hào)鸥襁吔缱粉檲D,如圖7所示,如果是從左邊界開始追蹤,表明發(fā)現(xiàn)了一個(gè)新面(從L1點(diǎn)即第一個(gè)游程的左邊界開始追蹤,其結(jié)果是一個(gè)面的外邊界);如果從右邊界開始追蹤,如圖4中從R1點(diǎn)追蹤,其結(jié)果將是一個(gè)面的內(nèi)邊界。在實(shí)際追蹤過程中,總是從行號(hào)最小最左邊的游程的左邊界開始追蹤,那么追蹤出的第一個(gè)外邊界一定是一個(gè)面的外邊界;當(dāng)我們從某個(gè)游程的右邊界追蹤出一個(gè)多邊形時(shí),它一定是一個(gè)內(nèi)邊界(因?yàn)樵撚纬痰淖筮吔缫呀?jīng)被追蹤過),該內(nèi)邊界與該游程左邊界追蹤出的多邊形屬于同一個(gè)多邊形,這就將所有的內(nèi)邊界與外邊界建立了關(guān)聯(lián)關(guān)系。步驟313.從初始點(diǎn)開始進(jìn)行矢量追蹤。即根據(jù)當(dāng)前點(diǎn)關(guān)聯(lián)的4個(gè)柵格的數(shù)值來判斷走向,獲得下一追蹤點(diǎn)。在追蹤過程中,將經(jīng)歷過的游程左邊界或右邊界的相應(yīng)標(biāo)志值lsign(或rsign)設(shè)置為TRUE;在追蹤過程中,判斷柵格單元是否有值是根據(jù)柵格單元的左下角的點(diǎn)是否在相應(yīng)的游程上來決定的,本發(fā)明采用2X2的柵格窗口,在每個(gè)窗口內(nèi)的四個(gè)柵格數(shù)據(jù)可以唯一地確定下一弧段的搜索方向和該弧段的拓?fù)潢P(guān)系。這一方法可以加快搜索速度,拓?fù)潢P(guān)系也易于建立。圖8是本發(fā)明中基于柵格追蹤的幾種情況的示意圖,如圖8所示,對(duì)于一個(gè)2X2的柵格窗口,可能出現(xiàn)圖8所示16種組合方式,分別用0到15序號(hào)代表每種情況。對(duì)圖8中的16種組合方式進(jìn)行分組,可大致分4類,見表1:表l分類描述表<table>tableseeoriginaldocumentpage11</column></row><table>①前2種分別表示當(dāng)前追蹤點(diǎn)為追蹤幾何體(面)的內(nèi)部或外部點(diǎn),而非邊界點(diǎn)。這種情形是不需要追蹤的情形;②接下來的8種組合分為1組,均表示追蹤邊界的轉(zhuǎn)折點(diǎn)(又稱邊界點(diǎn)),這些點(diǎn)是追蹤過程得到的邊界點(diǎn);③以下4種情況分為一組,所描述的是追蹤過程中的中間點(diǎn)(它們是一條直線段的中間點(diǎn),雖然他們不直接作為追蹤邊界點(diǎn),但是得到第2組情況的必經(jīng)之點(diǎn));④最后這兩種情形是不出現(xiàn)的情況。如果追蹤過程中碰到這樣的情況可直接跳過。圖9是本發(fā)明中基于窗口的柵格追蹤的走向圖,如圖9所示,當(dāng)前點(diǎn)為B,一點(diǎn)為A,則下一點(diǎn)的走向由當(dāng)前窗口的走向決定,在圖中顯然下一點(diǎn)為C。對(duì)于其他的走向問題可參照上圖的窗口決定。圖IO是本發(fā)明中一個(gè)能覆蓋所有組合的基于窗口的追蹤實(shí)例圖,作為一種可實(shí)施方式,如圖10所示,下面以一個(gè)能覆蓋所有組合形式的基于2X2的柵格窗口的追蹤情況為例,對(duì)邊界矢量化進(jìn)行說明,追蹤情況見表2。表2追蹤情況表<table>tableseeoriginaldocumentpage11</column></row><table><table>tableseeoriginaldocumentpage12</column></row><table>如圖10所示,從行號(hào)最小最左邊的游程的左邊界開始追蹤,圖中的Ga點(diǎn)為起始點(diǎn),Gb點(diǎn)為追蹤的當(dāng)前點(diǎn),則在以Gb為中心的四個(gè)格子對(duì)應(yīng)的是第5種情況,下一步要向左走一個(gè)格子;然后便是以Fb為當(dāng)前點(diǎn),其周圍的四個(gè)格子對(duì)應(yīng)的是第7種情況,下一步要向上走一個(gè)格子;依次類推,一步左,再一步上,直到走到Ah點(diǎn),此時(shí)的情況對(duì)應(yīng)的是第13種情況,下一步要向上走;同樣的一直走到Ap點(diǎn),此時(shí)對(duì)應(yīng)的是第8種情況,向右走一個(gè)格子后,以Cp為當(dāng)前點(diǎn),對(duì)應(yīng)的是第2種情況,要向上走一個(gè)格子;同樣的右一步上一步交替的走到Gu點(diǎn),此時(shí)情況變成第10種;一直向右走到Qu點(diǎn),對(duì)應(yīng)的是第9種情況,下一步要向下走;以Qt為當(dāng)前點(diǎn)對(duì)應(yīng)第3種情況,向右走一個(gè)格子;下一步和右一步交替走到Vo點(diǎn),對(duì)應(yīng)第11種情況,一直向下走到Vg點(diǎn);以Vg點(diǎn)為當(dāng)前點(diǎn)對(duì)應(yīng)第6種情況,向左走一個(gè)格子,然后對(duì)應(yīng)第4種情況,向下走一個(gè)格子;同樣依次類推,直到走到0a點(diǎn),對(duì)應(yīng)第12種情況,一直向左走到起始點(diǎn)Ga點(diǎn)。當(dāng)發(fā)現(xiàn)走到起始點(diǎn),認(rèn)為該多邊形矢量化完成了。上述是對(duì)一個(gè)獨(dú)立的多邊形的矢量化過程,而對(duì)于真實(shí)數(shù)據(jù),即許多多邊形相鄰接的,例如地圖,用游程插入柵格場(chǎng)的做法就有個(gè)弊端就是相鄰多邊形都合起來了。每個(gè)多邊形都應(yīng)該有自己的屬性信息,如果一味的合并,就會(huì)使某些結(jié)果沒有意義。較佳地,本發(fā)明提出了一種解決多邊形相鄰接問題的方法,提出一種改進(jìn)的判斷柵格單元值的方法,用GridValue函數(shù)實(shí)現(xiàn)。由于判斷柵格是否有值是根據(jù)柵格的左下角的點(diǎn)是否在相應(yīng)的游程上來決定的,用GridValue這個(gè)函數(shù)實(shí)現(xiàn)的,所以只需要在這個(gè)函數(shù)上進(jìn)行修改即可,本發(fā)明加入了判斷多邊形ID信息的限制條件。圖11是本發(fā)明中鄰接多邊形的邊界追蹤示意圖,如圖11所示(為了更看清楚,把柵格的格子放大畫出來),兩個(gè)相鄰的矩形0號(hào)和1號(hào),當(dāng)矢量化右側(cè)1號(hào)矩形時(shí),雖然P這個(gè)格子是有值的(因?yàn)槠湓?號(hào)多邊形內(nèi)部,所以顯然在0號(hào)多邊形當(dāng)前行的游程鏈表上),但是對(duì)l號(hào)多邊形這個(gè)值其實(shí)是沒有意義的(否則矢量化后兩個(gè)多邊形就合并成一個(gè)了),所以加入了判斷多邊形ID的限制條件。當(dāng)走到Fe點(diǎn)的時(shí)候,判斷Q這個(gè)格子是否有值的時(shí)候,要看Ed點(diǎn)是否在1號(hào)多邊形的游程鏈表上。由于這一點(diǎn)正是兩個(gè)多邊形的相鄰邊上的點(diǎn)(即公共點(diǎn)),所以用上述做法,發(fā)現(xiàn)這個(gè)點(diǎn)在0號(hào)多邊形的游程上,而誤認(rèn)為沒有值。然而這個(gè)點(diǎn)也在1號(hào)多邊形的游程上,所以對(duì)點(diǎn)在相鄰邊上并且判斷是在非當(dāng)前多邊形的游程鏈表上時(shí),再多判斷一步這個(gè)鏈表的下一個(gè)鏈表是否在當(dāng)前多邊形上,如果這個(gè)條件滿足則也認(rèn)為是有值的。:0140]所述改進(jìn)的判斷柵格單元值的方法,可以通過下述偽代碼實(shí)現(xiàn):0141]boolGridValue(參數(shù)):0142]〃判斷在實(shí)游程鏈表格式記錄的柵格數(shù)據(jù)場(chǎng)上,L行、C列的值是true/false:0143]{:0144]用二分查找法找到L行C列所在的游程鏈表的號(hào),賦給segno;:0145]如果沒有查到,直接返回false;:0146]If(segno的游程的所屬多邊形id!=當(dāng)前矢量化的多邊形的id):0147]{:0148]〃C是否在兩個(gè)多邊形的公共邊上:0149]boolhorizonal—s印=(segno+1<L行的坊港數(shù)量&&:0150]C==(int)L行第segno個(gè)游程的右值&&:0151]C==(int)L行第segno+1個(gè)游程的左值);:0152]if(!horizonal—s印):0153]returnfalse;:0154]if(L行第segno+1個(gè)游程的所屬多邊形的id==當(dāng)前矢量化的多邊形的:0155]id)即兩個(gè)多邊形有重合并且此點(diǎn)在重合邊上:0156]returntrue5:0157]returnfalse;:0158]}else:0159]returntrue5:0160]}:0161]使用上述方法,在判斷左右邊界時(shí),不用再用二分法查找L行C列在哪一段,再判斷是否是此段的左右邊界,而是直接判斷游程的id號(hào)是否等于當(dāng)前多邊形的那段游程的左右值,因?yàn)榕袛喔鷦e的多邊形比沒有意義,這也是加了多邊形ID信息的一個(gè)優(yōu)勢(shì)。步驟314.重復(fù)步驟312-213,直至不存在任何lsign(或rsign)為TRUE的游程,即沒有新的追蹤初始點(diǎn)時(shí)終止循環(huán);步驟320.面的生成;面的生成采用現(xiàn)有的技術(shù),即我們將上述追蹤到的弧設(shè)置一個(gè)邊界屬性(是外或內(nèi)邊界)、歸屬面的序號(hào)(每次產(chǎn)生一個(gè)新面,則面序號(hào)遞增),在所有弧段追蹤完畢后,根據(jù)上述屬性,建立弧段與面之間的關(guān)聯(lián)關(guān)系。圖12是本發(fā)明中兩個(gè)輸入圖層的示意圖,圖13是對(duì)圖12中的兩個(gè)圖層求交、差、并的結(jié)果示意圖,作為一種可實(shí)施方式,如圖12和13所示,利用本發(fā)明的方法將輸入的圖層進(jìn)行疊加分析,假設(shè)兩個(gè)輸入圖層分別是中國縣界圖(大小20.2M,3707個(gè)要素集)和3個(gè)大圓(大小2M,3個(gè)要素集)。這兩個(gè)圖層均是ESRI的shape文件格式。相應(yīng)于本發(fā)明的用于GIS中的空間疊加分析方法,還提供一種用于GIS中的空間疊加分析系統(tǒng),圖14是本發(fā)明的空間疊加分析系統(tǒng)的結(jié)構(gòu)示意圖,如圖14所示,所述空間疊加分析系統(tǒng),包括矢轉(zhuǎn)柵模塊l,用于將輸入GIS中的圖層的矢量數(shù)據(jù)轉(zhuǎn)換成柵格數(shù)據(jù),并采用游程編碼表示;疊加模塊2,用于對(duì)該采用游程編碼表示的柵格數(shù)據(jù)執(zhí)行疊加操作;疊加圖層輸出模塊3,用于將疊加后的柵格數(shù)據(jù)再轉(zhuǎn)換成矢量數(shù)據(jù),得到經(jīng)過疊加的圖層。所述矢轉(zhuǎn)柵模塊1,包括掃面模塊11,用于掃描輸入GIS的一個(gè)圖層中的每一個(gè)多邊形,對(duì)每一個(gè)多邊形再循環(huán)讀入該多邊形的每一個(gè)環(huán)(外環(huán)和內(nèi)環(huán)),對(duì)于每個(gè)環(huán),計(jì)算y值掃描線與每個(gè)弧段的斷點(diǎn)的橫坐標(biāo),以構(gòu)造斷點(diǎn)坐標(biāo)加入斷點(diǎn)柵格場(chǎng);游程編碼模塊12,用于將所述多邊形的所有環(huán)的斷點(diǎn)加入到柵格場(chǎng),建立經(jīng)過所述y值掃描線掃描得到的行的游程集合并組織成鏈表形式;疊加模塊2,包括合并插入模塊21,用于對(duì)兩個(gè)有重疊的游程單元間合并,否則把當(dāng)前游程單元插入到適當(dāng)?shù)奈恢?,并且在插入的過程中把游程單元的屬性信息保存下來;刪除模塊22,用于在當(dāng)前行游程鏈表內(nèi)刪除與待刪除游程單元區(qū)域重疊的部分;所述疊加圖層輸出模塊3,包括邊界追蹤模塊31,用于追蹤經(jīng)過疊加后的用游程編碼表示的柵格數(shù)據(jù),得到圖層弧段;拓?fù)渲貥?gòu)模塊32,用于根據(jù)所述圖層弧段,生成圖層?,F(xiàn)有技術(shù)中,從輸出效果上看,多邊形的疊加操作類似于多邊形裁剪。但是多邊形裁剪主要是針對(duì)兩個(gè)(或者數(shù)量較少的幾個(gè))多邊形進(jìn)行的,在規(guī)模化的多邊形計(jì)算面前無能為力。由于多邊形的疊加操作,本質(zhì)上是多邊形所包圍的點(diǎn)集的集合操作,因此可以采用"暴力"算法,通過反復(fù)調(diào)用兩個(gè)多邊形裁剪的算法來完成。但是,這樣的算法實(shí)現(xiàn)其時(shí)間復(fù)雜度是0(n2)。經(jīng)過實(shí)際測(cè)試,這樣的算法在實(shí)際應(yīng)用中實(shí)用性很差。因此,如同簡單的兩個(gè)線段求交點(diǎn)的算法并不能推廣到平面中n條線段的求交點(diǎn)問題一樣,給定兩個(gè)多邊形圖層,求疊加結(jié)果,必須尋找復(fù)雜度更低的算法。而本發(fā)明中,對(duì)于輸入的圖層,設(shè)其柵格化掃描間隔為dxy,則柵格場(chǎng)行數(shù)一般為某個(gè)給定的常數(shù)M=^'"/e由"(所以一旦掃描間隔確定后,M就是個(gè)常數(shù)了)。將一個(gè)斷點(diǎn)插入已排序的斷點(diǎn)鏈表中需要執(zhí)行折半查找,其復(fù)雜度為logP(P為鏈表中元素個(gè)數(shù))。假設(shè)輸入的圖層(線段數(shù)較多的圖層)包括了n條線段,則在最壞的情況下,將圖層數(shù)據(jù)進(jìn)行柵格化的復(fù)雜度是MXnXlogn,即O(nlogn)。圖15是本發(fā)明中一圖層數(shù)據(jù)示意圖,如圖15所示,多邊形ABCDE包含5條線段,其中4條在柵格化時(shí)需要掃描近似M行。表3是基于柵格的方法(本發(fā)明的方法)和ArcGIS的方法的測(cè)試性能對(duì)比。根據(jù)對(duì)表3數(shù)據(jù)的分析和實(shí)驗(yàn),取柵格步長為0.01的時(shí)候,結(jié)果要素?cái)?shù)量與真實(shí)數(shù)據(jù)的結(jié)果的一致性能達(dá)到97%以上,此時(shí)柵格數(shù)量為4794*6234。如果要求數(shù)據(jù)更精確的話,取柵格步長為0.0075,結(jié)果要素?cái)?shù)量與真實(shí)數(shù)據(jù)的結(jié)果是基本吻合的,此時(shí)柵格數(shù)量為6369*8289。所以下表中精度1代表步長0.01的測(cè)試,精度2代表步長0.0075的測(cè)試。表3基于柵格的方法和ArcGIS的方法的測(cè)試性能對(duì)比表14<table>tableseeoriginaldocumentpage15</column></row><table><table>tableseeoriginaldocumentpage16</column></row><table>圖16是本發(fā)明的方法與ArcGIS的性能測(cè)試對(duì)比圖,其中,am表示本發(fā)明的運(yùn)行時(shí)間l,EO表示本發(fā)明的運(yùn)行時(shí)間2,inn]]]表示ArcGIS運(yùn)行時(shí)間,~^~表示本發(fā)明內(nèi)存占用1,_^!_表示本發(fā)明內(nèi)存占用2,—一表示ArcGIS內(nèi)存占用,左側(cè)縱坐標(biāo)表示運(yùn)行時(shí)間(s),右側(cè)縱坐標(biāo)表示內(nèi)存占用(MB),如圖16所示,取上表中某組數(shù)據(jù)做性能測(cè)試對(duì)比圖。輸入圖層A和B分別是中國縣界圖(大小4.1M,2525個(gè)要素)和土地利用圖(大小100M,122552個(gè)要素)。這兩個(gè)圖層均是ESRI的shape文件格式。下圖是基于柵格的方法(本方法運(yùn)行時(shí)間1和內(nèi)存占用1代表使用精度1的結(jié)果,本方法運(yùn)行時(shí)間2和內(nèi)存占用2代表使用精度2的結(jié)果)和ArcGIS的方法的測(cè)試性能對(duì)比圖。由以圖16和表3可以看出(1)柵格方法在時(shí)間和內(nèi)存上都有較大的優(yōu)勢(shì),隨著柵格步長的精確,結(jié)果要素也就越接近矢量方法。就性能而言,在大數(shù)據(jù)量下,本發(fā)明的方法與ArcGIS系統(tǒng)中對(duì)應(yīng)的模塊相比,本發(fā)明的方法的效率比ArcGIS提高40%_50%左右,而且內(nèi)存耗費(fèi)大約是其40%-50%。經(jīng)分析,主要原因在于本算法采用游程鏈表的數(shù)據(jù)結(jié)構(gòu),節(jié)省了疊加分析計(jì)算的復(fù)雜性和耗時(shí)。(2)此算法的時(shí)間和內(nèi)存會(huì)隨著柵格步長的減小而增加(因?yàn)闁鸥駡?chǎng)行數(shù)M-^^^跟柵格步長成反比)。由于柵格數(shù)量對(duì)算法執(zhí)行效率影響較大,所以應(yīng)在滿足精度要求條件下選擇盡可能少的柵格數(shù)。圖17是本發(fā)明方法三個(gè)關(guān)鍵步驟運(yùn)行時(shí)間比例圖,如圖17所示,算法運(yùn)行時(shí)間主要花費(fèi)在初始化輸入圖層的柵格場(chǎng)和柵格疊加結(jié)果矢量化方面,而真正在做疊加操作的時(shí)候,由于只是游程鏈表的簡單操作,所以速度比較快,所用時(shí)間不到10%。這個(gè)發(fā)現(xiàn)為網(wǎng)絡(luò)地圖服務(wù)中的空間分析功能實(shí)現(xiàn)提供了新的方向與潛力。目前主流的網(wǎng)絡(luò)地圖提供方式(比如googlem即等電子地圖與ArcMS等網(wǎng)絡(luò)地圖服務(wù)器)皆提供了分級(jí)預(yù)生成的方式,柵格圖像通過預(yù)生成或第一次請(qǐng)求時(shí)動(dòng)態(tài)生成的方式緩存在服務(wù)器端。這種情形下,柵格圖像不僅是矢量數(shù)據(jù)的可視化表達(dá),更可視為是矢量數(shù)據(jù)的柵格化近似。在這種網(wǎng)絡(luò)地圖服務(wù)模式下提供疊加分析功能以進(jìn)行輔助決策是一項(xiàng)非常有意義的工作。本文算法契合了這種應(yīng)用模式。從測(cè)試數(shù)據(jù)可以看出,在預(yù)生成柵格化表達(dá)的前提下,本算法的疊加效率很高,這為網(wǎng)絡(luò)地圖服務(wù)模式下的空間分析功能性能提升提供了很好的探索方向。本發(fā)明的有益效果在于1.本發(fā)明提出了一種用于GIS中的空間疊加分析算法,此方法利用柵格算法的優(yōu)勢(shì),能避免計(jì)算幾何算法的缺點(diǎn),跟業(yè)界領(lǐng)先軟件-ArcGIS相比,此算法有較大的優(yōu)勢(shì)和好的性價(jià)比;2.本發(fā)明提出的基于柵格的疊加算法也同時(shí)可以通過根據(jù)預(yù)定義的地圖比例尺事先生成的地圖瓦片文件的方法來為網(wǎng)絡(luò)地圖服務(wù)器上提供空間分析功能;3.本發(fā)明提出的基于柵格的疊加算法,在預(yù)生成柵格化表達(dá)的前提下,本算法的疊加效率很高,這為網(wǎng)絡(luò)地圖服務(wù)模式下的空間分析功能性能提升提供了很好的探索方向。通過結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例的描述,本發(fā)明的其它方面及特征對(duì)本領(lǐng)域的技術(shù)人員而言是顯而易見的。以上對(duì)本發(fā)明的具體實(shí)施例進(jìn)行了描述和說明,這些實(shí)施例應(yīng)被認(rèn)為其只是示例性的,并不用于對(duì)本發(fā)明進(jìn)行限制,本發(fā)明應(yīng)根據(jù)所附的權(quán)利要求進(jìn)行解釋。權(quán)利要求用于地理信息系統(tǒng)中的空間疊加分析方法,其特征在于,包括下列步驟步驟100.將輸入地理信息系統(tǒng)中的圖層的矢量數(shù)據(jù)轉(zhuǎn)換成柵格數(shù)據(jù),并采用游程編碼表示;步驟200.對(duì)該采用游程編碼表示的柵格數(shù)據(jù)執(zhí)行疊加操作;步驟300.將疊加后的柵格數(shù)據(jù)再轉(zhuǎn)換成矢量數(shù)據(jù),得到經(jīng)過疊加的圖層。2.根據(jù)權(quán)利要求1所述的用于地理信息系統(tǒng)中的空間疊加分析方法,其特征在于,所述步驟100,包括下列步驟步驟110.掃描輸入地理信息系統(tǒng)的一個(gè)圖層中的每一個(gè)多邊形,對(duì)每一個(gè)多邊形再循環(huán)讀入該多邊形的每一個(gè)環(huán),對(duì)于每個(gè)環(huán),計(jì)算y值掃描線與每個(gè)弧段Pi&,設(shè)Pi.y<P2.y的斷點(diǎn)i的橫坐標(biāo)<formula>formulaseeoriginaldocumentpage2</formula>以構(gòu)造斷點(diǎn)坐標(biāo)加入斷點(diǎn)柵格場(chǎng);步驟120.將所述多邊形的所有環(huán)的斷點(diǎn)加入到柵格場(chǎng),建立經(jīng)過所述y值掃描線掃描得到的行的游程集合并組織成鏈表形式。3.根據(jù)權(quán)利要求1所述的用于地理信息系統(tǒng)中的空間疊加分析方法,其特征在于,所述步驟200中,所述疊加操作,是對(duì)采用游程編碼表示的柵格數(shù)據(jù)進(jìn)行交、并、差布爾運(yùn)算。4.根據(jù)權(quán)利要求1所述的用于地理信息系統(tǒng)中的空間疊加分析方法,其特征在于,所述步驟300,包括下列步驟步驟310.游程?hào)鸥襁吔缡噶炕?,得到圖層弧段;步驟320.根據(jù)所述圖層弧段,生成圖層。5.根據(jù)權(quán)利要求4所述的用于地理信息系統(tǒng)中的空間疊加分析方法,其特征在于,所述步驟310,包括下列步驟步驟311.對(duì)每個(gè)游程單元,用兩個(gè)數(shù)組表示各個(gè)游程單元的左邊界、右邊界是否被使用過,其初始值都是沒有使用過;步驟312.從游程鏈表中選擇符合預(yù)設(shè)條件的游程單元,將其左邊界或右邊界作為追蹤的初始點(diǎn);步驟313.從初始點(diǎn)開始進(jìn)行矢量追蹤,在追蹤過程中,將經(jīng)歷過的游程左邊界或右邊界的相應(yīng)標(biāo)志值設(shè)置為使用過;步驟314.重復(fù)步驟312-213,直至不存在任何相應(yīng)標(biāo)志值設(shè)置為使用過的游程,沒有新的追蹤初始點(diǎn)時(shí)終止循環(huán)。6.用于地理信息系統(tǒng)中的空間疊加分析系統(tǒng),其特征在于,所述系統(tǒng),包括矢轉(zhuǎn)柵模塊,用于將輸入地理信息系統(tǒng)中的圖層的矢量數(shù)據(jù)轉(zhuǎn)換成柵格數(shù)據(jù),并采用游程編碼表示;疊加模塊,用于對(duì)該采用游程編碼表示的柵格數(shù)據(jù)執(zhí)行疊加操作;疊加圖層輸出模塊,用于將疊加后的柵格數(shù)據(jù)再轉(zhuǎn)換成矢量數(shù)據(jù),得到經(jīng)過疊加的圖層。7.根據(jù)權(quán)利要求6所述的用于地理信息系統(tǒng)中的空間疊加分析系統(tǒng),其特征在于,所述矢轉(zhuǎn)柵模塊,包括掃面模塊,用于掃描輸入地理信息系統(tǒng)的一個(gè)圖層中的每一個(gè)多邊形,對(duì)每一個(gè)多邊形再循環(huán)讀入該多邊形的每一個(gè)環(huán),對(duì)于每個(gè)環(huán),計(jì)算y值掃描線與每個(gè)弧段的斷點(diǎn)的橫坐標(biāo),以構(gòu)造斷點(diǎn)坐標(biāo)加入斷點(diǎn)柵格場(chǎng);游程編碼模塊,用于將所述多邊形的所有環(huán)的斷點(diǎn)加入到柵格場(chǎng),建立經(jīng)過所述y值掃描線掃描得到的行的游程集合并組織成鏈表形式。8.根據(jù)權(quán)利要求6所述的用于地理信息系統(tǒng)中的空間疊加分析系統(tǒng),其特征在于,所述疊加模塊,包括合并插入模塊,用于對(duì)兩個(gè)有重疊的游程單元間合并,否則把當(dāng)前游程單元插入到適當(dāng)?shù)奈恢?,并且在插入的過程中把游程單元的屬性信息保存下來;刪除模塊,用于在當(dāng)前行游程鏈表內(nèi)刪除與待刪除游程單元區(qū)域重疊的部分。9.根據(jù)權(quán)利要求6所述的用于地理信息系統(tǒng)中的空間疊加分析系統(tǒng),其特征在于,所述疊加圖層輸出模塊,包括邊界追蹤模塊,用于追蹤經(jīng)過疊加后的用游程編碼表示的柵格數(shù)據(jù),得到圖層弧段;拓?fù)渲貥?gòu)模塊,用于根據(jù)所述圖層弧段,生成圖層。10.根據(jù)權(quán)利要求9所述的用于地理信息系統(tǒng)中的空間疊加分析系統(tǒng),其特征在于,所述邊界追蹤模塊,采用二值柵格的窗口化追蹤方法。全文摘要本發(fā)明公開了一種用于GIS中的空間疊加分析方法和系統(tǒng)。該方法,包括下列步驟將輸入GIS中的圖層的矢量數(shù)據(jù)轉(zhuǎn)換成柵格數(shù)據(jù),并采用游程編碼表示;對(duì)該采用游程編碼表示的柵格數(shù)據(jù)執(zhí)行疊加操作;將疊加后的柵格數(shù)據(jù)再轉(zhuǎn)換成矢量數(shù)據(jù),得到經(jīng)過疊加的圖層。其利用了柵格算法的優(yōu)勢(shì),能夠避免計(jì)算幾何算法的缺點(diǎn),提高疊加效率。文檔編號(hào)G06F17/30GK101751449SQ20091009271公開日2010年6月23日申請(qǐng)日期2009年9月16日優(yōu)先權(quán)日2009年9月16日發(fā)明者方金云,程振林,董慧申請(qǐng)人:中國科學(xué)院計(jì)算技術(shù)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1