一種基于規(guī)則約束的山脊線和山谷線過濾方法
【專利摘要】本發(fā)明公開了一種基于規(guī)則約束的山脊線和山谷線過濾方法。首先,根據(jù)區(qū)域內(nèi)山脊線或山谷線的高差、區(qū)域面積信息,設(shè)置合適的高差約束值、長度約束值和關(guān)聯(lián)約束值;然后,基于Voronoi剖分對區(qū)域內(nèi)的山脊線或山谷線進行空間剖分,構(gòu)建ARG模型;其次,基于區(qū)域DEM數(shù)據(jù)獲取高程,統(tǒng)計出每一山脊線或山谷線的影響范圍內(nèi)的高程差;最后,進行規(guī)則約束處理,將影響范圍內(nèi)高程差小于高差約束值、長度小于長度約束值、且與其鄰近無關(guān)聯(lián)的山脊線或山谷線進行舍棄處理,得到基于約束規(guī)則過濾后的山脊線或山谷線。本方法可將非地理尺度層次上的分水線、合水線過濾掉,得到地理層度上的山脊線、山谷線,滿足用戶對不同尺度的山脊線、山谷線的需要。
【專利說明】
一種基于規(guī)則約束的山脊線和山谷線過濾方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于地理信息技術(shù)應用領(lǐng)域,具體涉及一種基于規(guī)則約束的山脊線和山谷 線的過濾方法。
【背景技術(shù)】
[0002] 山脊線和山谷線是地理學研究中兩類重要的地性線,是地形起伏變化的分界線。 基于DEM提取山脊、山谷線已有較多研究,主要采用三維地形表面流水數(shù)字模擬法。以山脊 線和山谷線的物理特性為依據(jù),通過模擬和分析地形表面流水的運動狀況得到分水線(山 脊線)和合水線(山谷線)。該方法的特點是提取的整體效果較好且全面(《利用流域邊界和 坡向差自動提取山脊線》,郭萬欽、劉時銀、余蓬春,測繪科學,2011,36(06))。
[0003] 但是,該方法存在兩方面問題。一方面,由于地形流水模擬中的合水線和分水線與 山谷線和山脊線在概念上存在一定差異,導致地形高處點因其匯水量較小而易被誤判為山 脊線,地形低處點因其匯水量較大而易被誤判為山谷線(《山脊線和山谷線自動提取的一種 新方法》,張渭軍,孔金玲,王文科,測繪科學,2006,31(1))。另一方面,該方法可提取出小高 差的匯水量較少的分水線或匯水量較大的合水線。從地理尺度的角度出發(fā),小高差的分水 線或合水線,均不能稱之為山脊線或山谷線。
【發(fā)明內(nèi)容】
[0004] 針對上述現(xiàn)有方法中存在的誤判和小高差問題,本發(fā)明提出一種基于規(guī)則約束的 山脊線和山谷線過濾處理的方法。該方法的規(guī)則約束以局部高差約束為首要約束條件,兼 顧長度約束及其與鄰近地性線的關(guān)聯(lián)約束。目的是舍棄高差較小、長度較短、孤立的且不具 備地形特征的地性線。
[0005] 本發(fā)明的技術(shù)方案如下:
[0006] -種基于規(guī)則約束的山脊線和山谷線過濾方法,首先,根據(jù)區(qū)域內(nèi)山脊線或山谷 線的高差和區(qū)域面積信息,設(shè)置合適的高差約束值、長度約束值和關(guān)聯(lián)約束值;然后,基于 Voronoi剖分對區(qū)域的山脊線或山谷線進行空間剖分,構(gòu)建山脊線或山谷線的ARG模型;其 次,基于區(qū)域DEM數(shù)據(jù)獲取高程,統(tǒng)計出每一條山脊線或山谷線影響范圍內(nèi)的高程差;最后, 進行規(guī)則約束處理,將影響范圍內(nèi)高程差小于高差約束值且長度小于長度約束值,并與其 鄰近山脊線或山谷線無關(guān)聯(lián)的山脊線或山谷線進行舍棄處理,得到符合規(guī)則約束的山脊線 或山谷線。
[0007] 本發(fā)明方法的具體步驟如下:
[0008] 步驟一:加載山脊線圖層,并將相應的山脊線要素讀取到集合R={ri|i = l, 2,...,n}中,n為山脊線要素的個數(shù);
[0009]步驟二:依據(jù)山脊線圖層的高差、面積信息和用戶需求,設(shè)置合適的高差約束值 Ht、長度約束值Lt、關(guān)聯(lián)約束值A(chǔ)t和走向區(qū)間個數(shù)N;
[0010]步驟三:山脊線要素的空間剖分處理具體步驟如下:
[0011] a)將山脊線要素集合R讀入點集SumPoint={pi,p2,. . .,pm},m為點要素的個數(shù),點 集SumPoint的"山脊線要素"屬性來記錄該點所歸屬的山脊線要素r1;
[0012] b)基于點集SumPoint,構(gòu)建Voronoi圖Vor;以圖層的最小外包矩形為界,構(gòu)建點集 SumPoint 的Voronoi圖Vor = {Ti|i = l,2,...,m,},Ti 表不第i 個 Thicssen 多邊形 T,m' 為構(gòu)成 Voronoi圖Vor的Thicssen多邊形T的個數(shù);并將點集SumPoint中各點要素的"山脊線要素" 屬性,賦予包含該點要素的Thicssen多邊形Ti的"山脊線要素"屬性;
[0013] c)基于Thicssen多邊形Ti的"山脊線要素"屬性進行合并處理,得到每條山脊線要 素ri的影響范圍;依次將Voronoi圖Vor中具有相同"山脊線要素"屬性值的Thicssen多邊形 Ti合并為一個多邊形T'i,生成山脊線影響范圍圖Vor' = {T'i | i = l,2,...,n},T'i表示第i 條山脊線要素的影響范圍,n為山脊線要素的個數(shù);
[0014]步驟四:基于空間剖分結(jié)果,計算山脊線圖層的ARG模型G=(V,E)中節(jié)點集合V = {vi,V2, . . .,vn}及其相關(guān)屬性;其中,V中每個節(jié)點代表一個山脊線要素對象,E = {ei, e2,...,ef}為由節(jié)點連成的邊集合,n為山脊線要素的個數(shù),f為邊的個數(shù);具體步驟如下: [0015] a)通過計算山脊線要素ri的影響范圍T'i的質(zhì)心點Ci得至I」節(jié)點Vi,并存入節(jié)點集合 V中;i為循環(huán)變量,i e [1,n],初值為1;
[0016] b)求出山脊線要素ri的影響范圍T'i的頂點集Vti={pn,pi2, . . .,pu},并存入節(jié)點 Vi的屬性,1為頂點集Vti中點的個數(shù);
[0017] c)讀取山脊線要素^的點集C={Cll,cl2, . . .,clt},t為山脊線要素n中點的個數(shù);
[0018] d)基于點集C分別計算直線CiiCi2、Ci2Ci3、…、Cit-lcit的傾斜角ai2、a23、…、at- lt; [0019] e)計算山脊線要素的大致走向Strike(StrikeG [0° ,180°)):若t<N,則按均值法
計算Strike,即 ,并存入節(jié)點Vi的屬性中,跳轉(zhuǎn)步驟g);否則,執(zhí)行 下一步驟f);
[0020] f)按最大頻數(shù)法計算走向?qū)⒆呦颍合冉y(tǒng)計出個傾斜角(112、€[23、…、at-it在各均勾區(qū)
中的頻數(shù);再取頻數(shù) 最大的區(qū)間內(nèi)的傾斜角的均值為山脊線的大致走向St i ke,并存入節(jié)點v i的屬性中;
[0021] g)若循環(huán)變量i<n,則i加1,繼續(xù)執(zhí)行a)_f);否則,所有的山脊線要素及其屬性均 提取完成;
[0022] 步驟五:計算山脊線要素間的ARG模型G=(V,E)中邊集合E={ei,e2,…,ef}及屬 性山脊線影響范圍間的走向關(guān)系S,具體步驟如下:
[0023] a)讀取節(jié)點集合V中的節(jié)點Vi和Vj所對應的空間影響范圍T'i的頂點集Vti和影響 范圍Tj '的頂點集Vt j;其中,i為循環(huán)變量,i G [ 1,n-1 ],初值為1; j為循環(huán)變量,j G [ i+1,n ], 初值為i+1;
[0024] b)判斷頂點集VtdPVw中是否存在連續(xù)的兩公共點,若存在,則山脊線要素^的影 響范圍T'i和rj的影響范圍T'j為鄰接拓撲關(guān)系,連接節(jié)點vi和vj,得到ARG模型一條邊e = (vi,vj),并稱節(jié)點vi與vj互為鄰接節(jié)點,山脊線ri和山脊線rj互為鄰接山脊線,將邊e存入邊 集合E;若不存在,跳轉(zhuǎn)步驟d);
[0025] c)讀取邊e,計算節(jié)點Vi和Vj構(gòu)成的線段ViVj的傾斜角aG [0°,180° ),作為山脊線 要素ri和rj的相對走向關(guān)系S,存入邊e的屬性中;
[0026] d)若j彡n-1,循環(huán)變量j加1,繼續(xù)執(zhí)行步驟a)_c);否則,循環(huán)變量i加1,執(zhí)行下一 步驟e);
[0027] e)若循環(huán)變量i<n,則j = i + l,繼續(xù)執(zhí)行a)_d);否則,邊集合E已全部提取及山脊 線影響范圍間的走向關(guān)系S均提取結(jié)束;
[0028]步驟六:基于DEM數(shù)據(jù),獲取山脊線要素影響范圍集合Vor'的高程差集合D={cU|i =1,2,. . .,n},具體步驟如下:
[0029] a)加載DEM數(shù)據(jù);
[0030] b)基于DEM數(shù)據(jù),獲取山脊線要素ri的影響范圍的規(guī)則格網(wǎng)單元的高程值集 合Hi= {hi,h2,h3, . . .,hP},p為第i條山脊線的影響范圍T'i的規(guī)則格網(wǎng)單元的個數(shù);
[0031] c)獲取高程值集合Hi中的高程最小值hmin和高程最大值h,計算得到影響范圍T ' i 內(nèi)高矛王差Hi - hmax-hmin ;
[0032] d)循環(huán)執(zhí)行步驟b)和c),統(tǒng)計出每個影響范圍內(nèi)高程差d,并存入高差集合D;
[0033]步驟七:山脊線要素進行高差約束處理,以山脊線要素^為例,具體步驟如下:
[0034] a)讀取高差集合D中的山脊線要素^的高程差d1;
[0035] b)計算高程差di與高差約束值Ht的差值Vi,即Vi = di-Ht;
[0036] c)高差約束判斷:若Vi<0,即山脊線要素ri的高程差6<高差閾值Ht,不滿足高差 約束條件;但考慮到該山脊線自身的長度因素及與鄰接山脊線間的關(guān)聯(lián),仍需進行關(guān)聯(lián)約 束和長度約束的判斷,繼續(xù)執(zhí)行步驟八;反之,則因山脊線要素^的高程差cU>高差閾值Ht, 符合高差約束條件,保留山脊線要素n,并將山脊線^存入集合R',并跳轉(zhuǎn)步驟十;
[0037]步驟八:山脊線要素進行關(guān)聯(lián)約束處理:若山脊線^與其鄰接山脊線^構(gòu)成ARG模 型的邊e的相對走向關(guān)系S,分別與山脊線ri的走向Strikei和山脊線rj的走向Strike的差值 均小于關(guān)聯(lián)約束值A(chǔ)t,則判定山脊線ri和山脊線rj間存在關(guān)聯(lián),可屬于同一條山脊線,故保 留山脊線^,具體步驟如下:
[0038] a)遍歷ARG圖的邊集合E,搜尋出由節(jié)點Vi構(gòu)成的邊e;依次讀取邊e的另一節(jié)點vnj, 得到節(jié)點Vi的所有鄰接節(jié)點,并存放集合Neighborhood={vni,vn2, . . .,vnk},k為節(jié)點Vi的鄰 接節(jié)點的個數(shù);
[0039] 13)」為循環(huán)變量,_]_£[1沽],初值為1,在節(jié)點集合¥中獲取節(jié)點^和其鄰接節(jié)點%」 的走向Strikei和走向Strikenj;
[0040] c)獲取由節(jié)點Vi和節(jié)點vnj構(gòu)成的邊e的屬性走向相對關(guān)系S;
[0041 ] d)若走向關(guān)系S與節(jié)點Vi的走向Strikei和vnj的走向Srtike nj,均滿足| Strikei-S 彡At且| Strikej-S |彡At,則判定山脊線要素ri與rnj之間存在關(guān)聯(lián);山脊線要素ri滿足關(guān)聯(lián) 約束條件,保留山脊線要素n,并將山脊線^存入集合R',并跳轉(zhuǎn)執(zhí)行步驟十;否則,跳轉(zhuǎn)下 一步e);
[0042] e)循環(huán)變量j加1后,若j彡k,執(zhí)行步驟b)_d);否則,山脊線要素^與其鄰接山脊線 要素間不存在關(guān)聯(lián),進行下一步長度約束判斷,執(zhí)行步驟九;
[0043]步驟九:山脊線要素進行長度約束處理:比較山脊線要素n的長度U與長度閾值Lt 的大小;若長度U>長度閾值Lt,則保留山脊線要素ri,并將山脊線^存入集合R';否則,可舍 棄山脊線要素r 1;
[0044] 步驟十:對每條山脊線要素r1+1均執(zhí)行步驟七-步驟九,進行規(guī)則約束處理;其中,i 為循環(huán)變量,i G [1,n],初值為1;最后輸出基于規(guī)則約束處理后的山脊線要素集合R'= {ri i = l,2, . .,q},q為規(guī)則約束處理后的山脊線的條數(shù);
[0045] 基于規(guī)則約束的山谷線過濾方法同基于規(guī)則約束的山脊線過濾方法一致,執(zhí)行上 述步驟,即可得到基于規(guī)則約束過濾后的山谷線。
[0046] 本發(fā)明的過濾方法可以提取出符合地形概念的山脊線、山谷線。相比現(xiàn)有技術(shù),本 發(fā)明可將非地理尺度層次上不能稱之為山脊線的分水線和山谷線的合水線過濾掉,得到符 合地理尺度的山脊線、山谷線。通過設(shè)定不同的約束規(guī)則和規(guī)則條件,本方法可滿足用戶對 不同尺度山脊線、山谷線的過濾需要。
【附圖說明】
[0047]圖1本發(fā)明方法的流程圖;
[0048]圖2廬山山脊線數(shù)據(jù);
[0049] 圖3 Voronoi圖Vor;
[0050] 圖4山脊線影響范圍圖Vor';
[0051] 圖5廬山山脊線數(shù)據(jù)的ARG模型;
[0052] 圖6 ARG模型邊E屬性表;
[0053]圖7廬山山脊線數(shù)據(jù)高程差分布圖;
[0054]圖8 100m高差約束,15°關(guān)聯(lián)約束,2000m長度約束規(guī)則下提取的山脊線;
[0055] 圖9不同高差約束提取的山脊線對比圖(15°關(guān)聯(lián)約束,2000m長度約束):(a)原始 山脊線(600條),(b)高差約束100m(362條),(c)高差約束150m(299條),(d)高差約束200m (273條)。
【具體實施方式】
[0056] 下面結(jié)合附圖,并通過基于規(guī)則約束的廬山山脊線過濾的實例,來進一步說明本 發(fā)明的效果。本實例的實驗區(qū)域位于江西北部,東經(jīng)115° 57'-116° 11',北煒29° 33'-29° 35'。該區(qū)域地勢較高,山脊線的提取效果較好。實驗數(shù)據(jù)為基于地形表面流水物理模擬分 析原理,借助ArcGIS軟件,提取得到實驗區(qū)域的山脊線矢量數(shù)據(jù)。
[0057]以基于規(guī)則約束的山脊線的過濾方法為例,具體實施過程如下:
[0058] 步驟一:加載山脊線圖層,如圖2所示。并將相應的山脊線要素讀取到集合R中。本 實例中R={ri| i = l,2,. . .,600},共600個山脊線要素。
[0059] 步驟二:依據(jù)山脊線圖層的高差、面積信息和用戶需求,設(shè)置合適的高差約束值 Ht、長度約束值Lt,關(guān)聯(lián)約束值A(chǔ)t。本實例中,高差約束值Ht設(shè)為100m,長度約束值Lt設(shè)為 2000m,關(guān)聯(lián)約束值A(chǔ)t設(shè)為15°,走向區(qū)間個數(shù)設(shè)為9。
[0060] 步驟三:山脊線要素的空間剖分處理。具體步驟如下:
[0061] a)將山脊線要素集合R讀入點集SumPoint= {pi,p2,…,P4319},本實例中共4319個 點要素,并使用點集SumPoint的"山脊線要素"屬性來記錄該點所歸屬的山脊線要素,如點 集SumPoint中的點要素1,點要素2,點要素3,點要素4,點要素5均歸屬于山脊線n,則點要 素1,點要素2,點要素3,點要素4,點要素5的"山脊線要素"屬性值均為1;
[0062] b)基于點集SumPoint,構(gòu)建Voronoi圖Vor。以圖層的最小外包矩形R為界,本實例 中山脊線要素圖層的最小外包矩形R = {(399064.06,3274424.25),(404729.06, 3274424.25) ,(404729.06,3270731.75),(399064.06,3270731.75),(399064.06, 3274424.25) }。以R為界,得到的Voronoi圖Vor,圖Vor={Ti| i = l,2,... ,4319}共由4319個 Thicssen多邊形組成,如圖3所示。并將點集SumPoint中各點要素的"山脊線要素"屬性,賦 予包含該點的相應Thicssen多邊形的"山脊線要素"屬性,如Thicssen多邊形 分別包含點要素1、2、3、4、5,則山脊線要素"的屬性值均為1;
[0063] c)基于Thicssen多邊形Ti的"山脊線要素"屬性合并Thicssen多邊形Ti,得到每條 山脊線要素^的影響范圍。以"山脊線要素"屬性值為1為例,則"山脊線要素"屬性值均為1 的Thicssen多邊形^^^^,合并為一個多邊形了'^多邊形^即代表山脊線要素^的 影響范圍。本實例依次合并后,最終得到合并后的圖¥(^' = {1'1|1 = 1,2,...,600},如圖4 所示。圖Vor'共由600個多邊形組成,每個多邊形對應一個山脊線要素的空間剖分范圍。
[0064]步驟四:基于空間剖分結(jié)果,計算山脊線要素間的ARG模型G=(V,E)中節(jié)點集合V = {vi,V2, . . .,V6(X)}及其相關(guān)屬性。其中,V中每個節(jié)點代表一個山脊線要素對象,E為由節(jié)點 連成的邊集合,山脊線要素的個數(shù)為600。以山脊線要素 ri為例,具體步驟如下:
[0065] a)計算山脊線要素ri的影響范圍T ' 1的質(zhì)心點C1得到節(jié)點VI = {402037.969, 3274311.5},并依次存入節(jié)點集合V中;
[0066] b)求出山脊線要素ri的影響范圍T'i的頂點集Vti= {pii,pi2,…,pi2〇},1共由20個 點構(gòu)成,并存入節(jié)點V1的屬性中;
[0067] c)讀取山脊線要素ri的點集C= {cii,ci2,ci3,ci4,ci5},點的個數(shù)t = 5;
[0068] (1)基于點集0={(311,(312,(313,(314,(315},分別計算直線(311(312、(312(313、(313(314、(31415的傾 斜角 ai2 = 123.77、a23=145.35、a34=161.92、a45 = 172.48;
[0069] e)計算山脊線要素的大致走向Strike(StrikeG [0° ,180° )):t = 5<N=9,按均值 法計算Stdfe = M0.8W并存入節(jié)點¥1的屬性中,跳轉(zhuǎn)步驟g); ?* ,.
[0070] g)對山脊線要素r2,r3,…,mo均執(zhí)行步驟a)-e),直至所有的山脊線要素及其屬性 均提取到集合V={vi,V2, ? ? ?,V6(X)}中。
[0071]步驟五:計算山脊線要素間的ARG模型G=(V,E)中邊集合E={ei,e2, . . .,ef}及屬 性山脊線影響范圍間的走向關(guān)系S。以節(jié)點V1= {402037.969,3274311.5}和v2= {401976.2, 3274374.25}為例,具體步驟如下:
[0072] a)讀取節(jié)點集合V中的節(jié)點vi和V2所對應的空間影響范圍T'i的頂點集Vti= {pn, P12,…,pi2〇}和影響范圍T'2的頂點集Vt2={p21,P22, ? ? ?,P22l}。此時,循環(huán)變量i = l,j = 2;
[0073] b)頂點集VtjPVt2中存在連續(xù)的兩公共點,則山脊線要素^的影響范圍 影響范圍T'2為鄰接拓撲關(guān)系,連接節(jié)點VI和V2,得到ARG模型的第一條邊e = ( VI,V2)。且稱節(jié) 點^與^互為鄰接節(jié)點,山脊線要素n和山脊線要素^互為鄰接山脊線。并將邊e存入邊集 合E;
[0074] c)讀取邊e,通過計算節(jié)點vi和V2構(gòu)成的線段viV2的傾斜角a = 134.55°,作為山脊 線ri和r2的相對走向關(guān)系S,作為邊e的屬性中;
[0075] (1)繼續(xù)執(zhí)行步驟3)-(:),直至」=600,1 = 2,執(zhí)行步驟6);
[0076] e)i = 2<600, j = i+l = 3,繼續(xù)執(zhí)行步驟a)-d)。本實例共由1704條邊e構(gòu)成,邊集 合E= {ei,e2, . . .,ei7〇4}其屬性包括由構(gòu)成邊e的兩節(jié)點所對應兩鄰接山脊線的相對走向關(guān) 系S。山脊線要素間的ARG模型及ARG模型的邊的走向關(guān)系S,分別如圖5、圖6所示。
[0077]步驟六:基于DEM數(shù)據(jù),獲取山脊線要素影響范圍集合Vor'的高程差集合D,本實例 中0={(^|1 = 1,2,...,600},具體步驟如下(以山脊線要素1'1為例):
[0078] a)加載DEM數(shù)據(jù)(如圖2所示);
[0079] b)基于DEM數(shù)據(jù),獲取山脊線要素ri的影響范圍T'iR的規(guī)則格網(wǎng)單元的高程值集 合Hi= {hi,h2,h3, . . .,h296},規(guī)則格網(wǎng)單元的個數(shù)為296個;
[0080] c)獲取高程值集合H沖的高程最小值hmin= 1142.10和高程最大值hmax= 1178.30, 計算得到影響范圍T ' 1內(nèi)高程差dl = hmax-hmin = 36.20 ;
[0081] d)循環(huán)執(zhí)行步驟b)和C),統(tǒng)計出第2,3,…,600個影響范圍內(nèi)高程差,并存入高差 集合D = {36 ? 20,47 ? 10,256 ? 60,…,94 ? 60},高程差分布如圖7所示。
[0082]步驟七:山脊線要素進行高差約束處理,以山脊線要素^為例,具體步驟如下: [0083] a)讀取高差集合D中的山脊線要素^的高程差山=36.20;
[0084] b)計算高程差cb與高差閾值Ht的差值V1 = d1-Ht = 36.20-100 = -63.80;
[0085] c)高差約束判斷:¥:<0,即山脊線要素^的高程差cU<高差閾值Ht,不滿足高差約 束條件。但考慮到該山脊線自身的長度因素及與鄰接山脊線間的關(guān)聯(lián),仍需進行關(guān)聯(lián)約束 和長度約束的判斷,繼續(xù)執(zhí)行步驟八;
[0086]步驟八:山脊線要素進行關(guān)聯(lián)約束處理,接步驟七進行山脊線^的關(guān)聯(lián)判斷,具體 步驟如下:
[0087] a)遍歷ARG圖的邊集合E,搜尋出由節(jié)點VI構(gòu)成的邊e,依次讀取邊e的另一節(jié)點V2, V4,vio,vi2,得到節(jié)點vi的所有鄰接節(jié)點,并存放集合Neighborhood = {v2,V4,vio,vi2},節(jié)點 vi共有k = 4個鄰接節(jié)點的;
[0088] b) j為循環(huán)變量,j G [1,4],初值為1,以j = l,即進行節(jié)點vi和節(jié)點V2的關(guān)聯(lián)判斷: 在節(jié)點集合V中獲取節(jié)點vi的走向Strikei= 150.88°和其鄰接節(jié)點V2的走向Strike2 = 16.58° ;
[0089] c)獲取由節(jié)點vi和節(jié)點V2構(gòu)成的邊e的屬性走向關(guān)系S= 134.55° ;
[0090] d)由于 | Strikei-S | = 16 ? 33>At,| Strike2-S | = 117 ? 96>At,不滿足 | Strikei-S 彡At且| Strike2_S |彡At,貝判定山脊線要素ri與r2之間不存在關(guān)聯(lián),跳轉(zhuǎn)下一步e);
[0091 ] 6)循環(huán)變量」=」+ 1 = 2彡4,繼續(xù)進行節(jié)點¥1和節(jié)點¥4,¥10,¥12的關(guān)聯(lián)判斷,執(zhí)行步 驟b)_d),判斷結(jié)果為山脊線要素^與其鄰接山脊線要素^,^,^,^2間不存在關(guān)聯(lián),需進 行長度判斷,執(zhí)行步驟九。
[0092]步驟九:山脊線要素進行長度約束處理,接步驟八對山脊線ri進行長度約束判斷: 求取山脊線要素^的長度1^ = 1020.72111<長度閾值Lt = 2000m。山脊線n既不滿足高差約束 條件,又不滿足關(guān)聯(lián)約束和長度約束條件,故可舍棄山脊線要素n。
[0093] 步驟十:對山脊線要素r2,r2,. . .,r6(x)均執(zhí)行步驟七-步驟九,進行規(guī)則約束處理。 最后,輸出基于規(guī)則約束(高差約束l〇〇m,關(guān)聯(lián)約束15°,長度約束2000m)的山脊線要素集R' = {r'1|i = l,2,..,368},如圖8所示,即經(jīng)過濾處理后山脊線的條數(shù)為368條。
[0094]對于不同地理尺度的需求,通過設(shè)置不同的規(guī)則閾值,本實驗可得到不同尺度的 山脊線。圖9中的(b)、(c)、(d)分別為對應高差約束值為100m、150m和200m處理后的山脊線。 從提取效果上可以看出高差閾值越大,符合尺度要求的山脊線越少。
[0095]本發(fā)明實施例中僅實現(xiàn)了基于規(guī)則約束的山脊線過濾處理方法。該方法也同樣適 用于山谷線。
【主權(quán)項】
1. 一種基于規(guī)則約束的山脊線和山谷線過濾方法,其特征在于,首先,根據(jù)區(qū)域內(nèi)山脊 線或山谷線的高差和區(qū)域面積信息,設(shè)置合適的高差約束值、長度約束值和關(guān)聯(lián)約束值;然 后,基于Voronoi剖分對區(qū)域的山脊線或山谷線進行空間剖分,構(gòu)建山脊線或山谷線的ARG 模型;其次,基于區(qū)域DEM數(shù)據(jù)獲取高程,統(tǒng)計出每一條山脊線或山谷線影響范圍內(nèi)的高程 差;最后,進行規(guī)則約束處理,將影響范圍內(nèi)高程差小于高差約束值且長度小于長度約束 值,并與其鄰近山脊線或山谷線無關(guān)聯(lián)的山脊線或山谷線進行舍棄處理,得到符合規(guī)則約 束的山脊線或山谷線。2. 根據(jù)權(quán)利要求1所述的一種基于規(guī)則約束的山脊線和山谷線過濾方法,其特征在于, 該過濾方法的具體步驟如下: 步驟一:加載山脊線圖層,并將相應的山脊線要素讀取到集合R= Ir1 |i = l,2,...,n} 中,η為山脊線要素的個數(shù); 步驟二:依據(jù)山脊線圖層的高差、面積信息和用戶需求,設(shè)置合適的高差約束值Ht、長度 約束值U、關(guān)聯(lián)約束值A(chǔ)t和走向區(qū)間個數(shù)N; 步驟三:山脊線要素的空間剖分處理具體步驟如下: a) 將山脊線要素集合R讀入點集SumPoint= {pi,P2, ...,pm},m為點要素的個數(shù),點集 SumPoint的"山脊線要素"屬性來記錄該點所歸屬的山脊線要素 ri; b) 基于點集SumPoint,構(gòu)建Voronoi圖Vor ;以圖層的最小外包矩形為界,構(gòu)建點集 SumPoint 的Voronoi圖Vor = {Ti|i = l,2,...,m,},Ti 表不第i 個 Thicssen 多邊形 T,m' 為構(gòu)成 Voronoi圖Vor的Thicssen多邊形T的個數(shù);并將點集SumPoint中各點要素的"山脊線要素" 屬性,賦予包含該點要素的Thicssen多邊形Ti的"山脊線要素"屬性; c) 基于Thicssen多邊形Ti的"山脊線要素"屬性進行合并處理,得到每條山脊線要素 ri 的影響范圍;依次將Voronoi圖Vor中具有相同"山脊線要素"屬性值的Thicssen多邊形Ti合 并為一個多邊形,生成山脊線影響范圍圖¥〇卜={1'' 1|1 = 1,2,...,11},1''1表示第1條山 脊線要素的影響范圍,η為山脊線要素的個數(shù); 步驟四:基于空間剖分結(jié)果,計算山脊線圖層的ARG模型G= (V,E)中節(jié)點集合V= {Vi, V2, . . .,vn}及其相關(guān)屬性;其中,V中每個節(jié)點代表一個山脊線要素對象,E={ei,e2, . . .,ef} 為由節(jié)點連成的邊集合,η為山脊線要素的個數(shù),f為邊的個數(shù);具體步驟如下: a) 通過計算山脊線要素 ri的影響范圍T ' i的質(zhì)心點Ci得到節(jié)點Vi,并存入節(jié)點集合V中;i 為循環(huán)變量,i e [I,n],初值為1; b) 求出山脊線要素 ri的影響范圍T'i的頂點集Vti={pu,pi2, . . .,pii},并存入節(jié)點Vi的 屬性,1為頂點集Vtl中點的個數(shù); c) 讀取山脊線要素^的點集C={Cll,cl2,. . .,clt},t為山脊線要素 Γι中點的個數(shù); d )基于點集C分別計算直線CilCi2、Ci2Ci3、…、Cit-ICit的傾斜角α?2、CI23、…、at- lt; e) 計算山脊線要素的大致走向Strike(Strikee [〇°,180°)):若t<N,則按均值法計算 ry _j_ /y -I- -f- /y Strike, BPSlrikc = ----,并存入節(jié)點Vi的屬性中,跳轉(zhuǎn)步驟g);否則,執(zhí)行下一 /-I 步驟f); f) 按最大頻數(shù)法計算走向?qū)⒆呦颍合冉y(tǒng)計出個傾斜角ai2、a23、…、at-lt在各均勾區(qū)間μ的頻數(shù);再取頻數(shù)最 大的區(qū)間內(nèi)的傾斜角的均值為山脊線的大致走向St i ke,并存入節(jié)點Vi的屬性中; g)若循環(huán)變量i<n,則i加1,繼續(xù)執(zhí)行a)-f);否則,所有的山脊線要素及其屬性均提取 完成; 步驟五:計算山脊線要素間的ARG模型G=(V,E)中邊集合E= {ei,e2, . . .,ef}及屬性山 脊線影響范圍間的走向關(guān)系S,具體步驟如下: a) 讀取節(jié)點集合V中的節(jié)點Vi和Vj所對應的空間影響范圍Τ'i的頂點集Vti和影響范圍 Tj '的頂點集Vt j;其中,i為循環(huán)變量,i e [ I,n-1 ],初值為I; j為循環(huán)變量,j e [ i+1,n ],初值 為 i+1; b) 判斷頂點集Vtl和Vt沖是否存在連續(xù)的兩公共點,若存在,則山脊線要素^的影響范 圍Τ'i和rj的影響范圍Τ'j為鄰接拓撲關(guān)系,連接節(jié)點Vi和Vj,得到ARG模型一條邊e = (Vi, Vj),并稱節(jié)點Vi與Vj互為鄰接節(jié)點,山脊線ri和山脊線rj互為鄰接山脊線,將邊e存入邊集合 E;若不存在,跳轉(zhuǎn)步驟d); c) 讀取邊e,計算節(jié)點Vi和Vj構(gòu)成的線段ViVj的傾斜角ae [〇°,180°),作為山脊線要素 ri 和rj的相對走向關(guān)系S,存入邊e的屬性中; d) 若j彡η-I,循環(huán)變量j加1,繼續(xù)執(zhí)行步驟a)-c);否則,循環(huán)變量i加1,執(zhí)行下一步驟 e); e) 若循環(huán)變量i<n,則j = i + l,繼續(xù)執(zhí)行a)_d);否則,邊集合E已全部提取及山脊線影 響范圍間的走向關(guān)系S均提取結(jié)束; 步驟六:基于DEM數(shù)據(jù),獲取山脊線要素影響范圍集合Vor'的高程差集合D= {cU |i = l, 2,. . .,n},具體步驟如下: a) 加載DEM數(shù)據(jù); b) 基于DEM數(shù)據(jù),獲取山脊線要素 Γι的影響范圍內(nèi)的規(guī)則格網(wǎng)單元的高程值集合H1 = {hi,h2,h3, . . .,hP},ρ為第i條山脊線的影響范圍T'i的規(guī)則格網(wǎng)單元的個數(shù); c) 獲取高程值集合Hi中的高程最小值Wn和高程最大值hmax,計算得到影響范圍T ' i內(nèi)高 Hi - hmax-hmin ; d) 循環(huán)執(zhí)行步驟b)和c),統(tǒng)計出每個影響范圍內(nèi)高程差d,并存入高差集合D; 步驟七:山脊線要素進行高差約束處理,以山脊線要素^為例,具體步驟如下: a) 讀取高差集合D中的山脊線要素^的高程差cU; b) 計算高程差cU與高差約束值Ht的差值Vi^Vi = CU-Ht; c) 高差約束判斷:若Vi<0,即山脊線要素 ri的高程差6<高差閾值Ht,不滿足高差約束 條件;但考慮到該山脊線自身的長度因素及與鄰接山脊線間的關(guān)聯(lián),仍需進行關(guān)聯(lián)約束和 長度約束的判斷,繼續(xù)執(zhí)行步驟八;反之,則因山脊線要素^的高程差cU>高差閾值H t,符合 高差約束條件,保留山脊線要素 η,并將山脊線^存入集合R',并跳轉(zhuǎn)步驟十; 步驟八:山脊線要素進行關(guān)聯(lián)約束處理:若山脊線^與其鄰接山脊線^構(gòu)成ARG模型的 邊e的相對走向關(guān)系S,分別與山脊線ri的走向Strikei和山脊線rj的走向Strike的差值均小 于關(guān)聯(lián)約束值A(chǔ)t,則判定山脊線ri和山脊線rj間存在關(guān)聯(lián),可屬于同一條山脊線,故保留山 脊線η,具體步驟如下: a) 遍歷ARG圖的邊集合E,搜尋出由節(jié)點Vi構(gòu)成的邊e;依次讀取邊e的另一節(jié)點vnj,得到 節(jié)點Vi的所有鄰接節(jié)點,并存放集合Neighborhood= {vni,vn2, ...,vnk},k為節(jié)點Vi的鄰接節(jié) 點的個數(shù); b) j為循環(huán)變量,j e [I,k],初值為1,在節(jié)點集合V中獲取節(jié)點Vi和其鄰接節(jié)點Vnj的走 向 Strikei 和走向 Strikenj; C)獲取由節(jié)點Vi和節(jié)點Vnj構(gòu)成的邊e的屬性走向相對關(guān)系S; d) 若走向關(guān)系S與節(jié)點Vi的走向Strikei和vnj的走向Srtikenj,均滿足I Strikei-S I SAt 且I Strikej-S I <At,則判定山脊線要素 ri與rnj之間存在關(guān)聯(lián);山脊線要素 ri滿足關(guān)聯(lián)約束 條件,保留山脊線要素 η,并將山脊線^存入集合R',并跳轉(zhuǎn)執(zhí)行步驟十;否則,跳轉(zhuǎn)下一步 e); e) 循環(huán)變量j加1后,若j彡k,執(zhí)行步驟b)_d);否則,山脊線要素Γι與其鄰接山脊線要素 間不存在關(guān)聯(lián),進行下一步長度約束判斷,執(zhí)行步驟九; 步驟九:山脊線要素進行長度約束處理:比較山脊線要素 η的長度L1與長度閾值Lt的大 小;若長度U>長度閾值Lt,則保留山脊線要素 Γι,并將山脊線^存入集合R';否則,可舍棄山 脊線要素 ri; 步驟十:對每條山脊線要素 r1+1均執(zhí)行步驟七-步驟九,進行規(guī)則約束處理;其中,i為循 環(huán)變量,ie[l,n],初值為1;最后輸出基于規(guī)則約束處理后的山脊線要素集合R'= {ri |i = 1,2, . .,q},q為規(guī)則約束處理后的山脊線的條數(shù); 基于規(guī)則約束的山谷線過濾方法同基于規(guī)則約束的山脊線過濾方法一致,執(zhí)行上述步 驟,即可得到基于規(guī)則約束過濾后的山谷線。
【文檔編號】G06T19/20GK105894587SQ201610201895
【公開日】2016年8月24日
【申請日】2016年4月1日
【發(fā)明人】李安波, 姚蒙蒙, 陳楹
【申請人】南京師范大學