林春峰 閔世平 黃華平
(中鐵二院工程集團有限責(zé)任公司,四川成都 610031)
為了提高生產(chǎn)效率,在數(shù)字化制圖中需要利用已知的等高線進行內(nèi)插,目前常用方法有網(wǎng)格內(nèi)插、三角網(wǎng)內(nèi)插、輔助線內(nèi)插等[1-7]。網(wǎng)格內(nèi)插和三角網(wǎng)內(nèi)插的計算量較大,在實際應(yīng)用中,會顯得較遲鈍;輔助線內(nèi)插方法計算速度快,但由于采用的數(shù)據(jù)點較少,數(shù)據(jù)點的分布位置不佳,在一些等高線急劇變化的地方,內(nèi)插出的等高線存在較大失真[8]。結(jié)合輔助線方法的特點,提出一種新的內(nèi)插方法,首先利用特征參數(shù)對已知的等高線節(jié)點進行描述;再利用特征參數(shù)進行等高線節(jié)點匹配,將等高線分割成不同的區(qū)域,分區(qū)域進行輔助線構(gòu)建,利用構(gòu)建的輔助線內(nèi)插等高線;最后對內(nèi)插出的等高線進行節(jié)點簡化,得到最終結(jié)果。實驗結(jié)果表明,利用該方法內(nèi)插的等高線能夠很好的顧及局部地形,有效地解決等高線內(nèi)插的問題。
等高線內(nèi)插要解決的問題可以轉(zhuǎn)化成:在相鄰兩條已知等高線l1和l2中,內(nèi)插N條等高線。其中,假定l1和l2節(jié)點排列順序一致,N為已知常數(shù)。
算法首先按照給定的規(guī)則計算等高線l1和l2上每個節(jié)點的特征參數(shù);然后利用匹配規(guī)則進行節(jié)點匹配,將l1和l2分割成一一對應(yīng)的區(qū)域;然后對各個區(qū)域進行輔助線構(gòu)建,利用構(gòu)建后的輔助線內(nèi)插等高線;最后進行節(jié)點簡化,得到最終結(jié)果。
節(jié)點特征參數(shù)的定義為
Pi為某條等高線上第i個節(jié)點的特征參數(shù)。其中:i∈[0,n],n 為等高線節(jié)點的個數(shù);Xi、Yi和 Zi為節(jié)點的坐標(biāo)值;αi為前一節(jié)點和當(dāng)前節(jié)點連線與水平方向夾角角度值,αi∈[0,360);βi為當(dāng)前節(jié)點和后一節(jié)點連線與水平方向夾角角度值,βi∈[0,360),如圖1所示。
圖1 角度參數(shù)計算示意
αi和βi的計算公式如下
其中,函數(shù)Fun(Math.Atan(k))表示計算斜率為k的向量與水平軸正方向夾角,夾角數(shù)值大于0、小于360。
對已知兩條等高線l1和l2所有節(jié)點,按照2.1小節(jié)對節(jié)點特征參數(shù)的定義以及公式(1)、(2)進行計算,得到等高線l1和l2所有節(jié)點的特征參數(shù)集合
其中,m和n為等高線l1和l2節(jié)點個數(shù)。
以兩條等高線中節(jié)點個數(shù)多的那條為基準(zhǔn),遍歷該條等高線上的每一個節(jié)點,假設(shè)當(dāng)前節(jié)點為Pc,然后在另外一條等高線中尋找距離該點最近的M個點集合R,計算點Pc與點集合R中每個點Pi(Pi∈R,i∈[0,M])的特征距離 Di,計算公式為
其中,Pi∈R,i∈[0,M]。
設(shè)定距離閾值d,當(dāng)Di大于d時,進行下一點的判斷;否則認(rèn)為Pi是Pc的變化趨勢一致點,記錄Pc和Pi兩點的坐標(biāo),這兩點的連線即能將等高線分割成兩部分。
對基準(zhǔn)等高線上所有的節(jié)點匹配完成之后,就能得到一組匹配結(jié)果,將其圖形化表示,如圖2所示。
圖2 節(jié)點特征匹配
節(jié)點特征匹配結(jié)果可以將兩條等高線分割成多個匹配區(qū)域,但是通過圖形化結(jié)果發(fā)現(xiàn):匹配區(qū)域有交叉重疊部分和共點部分,需要按照一定的規(guī)則對匹配結(jié)果進行篩除,即剔除圖2中相交和共點的線。篩除規(guī)則如下:
①依次遍歷匹配結(jié)果集合,取出當(dāng)前匹配結(jié)果,獲得匹配結(jié)果中兩點分別在兩條等高線中節(jié)點的序號index11、index21;
②取出前一匹配結(jié)果,獲得前一匹配結(jié)果中兩點分別在兩條等高線中節(jié)點的序號index10、index20;
③當(dāng)index21<=index20,則剔除該匹配結(jié)果;否則繼續(xù)執(zhí)行①、②、③,直到所有的匹配結(jié)果遍歷完成,得到如圖3所示的結(jié)果。
圖3 特征匹配錯誤剔除
相鄰兩組匹配結(jié)果可以將兩條等高線分割成變化趨勢一致的區(qū)域,依次遍歷篩選后的匹配結(jié)果,取當(dāng)前和下一組匹配結(jié)果,得到其分割兩條已知等高線的區(qū)域,進行定數(shù)等分,然后依次匹配兩條等高線上的定數(shù)等分點,存入輔助線數(shù)組。圖形化的輔助線如圖4所示。
假設(shè)每根輔助線的起止點坐標(biāo)為(X1,Y1,Z1)和(X2,Y2,Z2),可以得到待內(nèi)插的N條等高線的節(jié)點坐標(biāo)
以此遍歷每根輔助線,計算內(nèi)插點坐標(biāo),將內(nèi)差點連接起來,即可得到等高線,如圖5所示。
圖4 構(gòu)造輔助線
圖5 通過構(gòu)造線內(nèi)插等高線
上述方法會造成等高線線上節(jié)點過多,道格拉斯-普克算法能夠準(zhǔn)確的刪除線段上小彎曲的節(jié)點,在整體上有效保持了線要素的形態(tài)特征[9]。因此,在得到等高線后,利用道格拉斯-普克算法進行簡化,得到最終結(jié)果,如圖6所示。
圖6 道格拉斯-普克簡化后的等高線
利用等高線上當(dāng)前節(jié)點坐標(biāo)值,以及當(dāng)前節(jié)點和前后兩個相鄰節(jié)點向量與水平軸正方向的兩個夾角數(shù)值當(dāng)作描述當(dāng)前節(jié)點的特征參數(shù),一方面能夠準(zhǔn)確地確定節(jié)點的空間位置;同時,兩個角度數(shù)值能夠很好的確定當(dāng)前節(jié)點在空間中的方位,便于在另一條等高線上尋找變化趨勢一致點。尋找到了變化趨勢一致點后,有利于將已知的等高線進行區(qū)域分割。同一分割區(qū)域內(nèi),兩條已知等高線變化趨勢是一致的。最后,在變化趨勢已知的分割區(qū)域內(nèi),進行輔助線構(gòu)造、等高線生成、節(jié)點簡化等操作,得到最后的結(jié)果。
利用本文提出的新方法進行等高線的生成,并利用文獻[4]提出的算法進行對比實驗,對比結(jié)果如圖7所示,其中中間部分實現(xiàn)為本算法內(nèi)插結(jié)果,虛線為文獻[4]提出算法的結(jié)果。
圖7 內(nèi)插等高線結(jié)果對比
經(jīng)過對比分析可知,本文提出的新方法能夠很好的顧及局部地形,可以更好地解決等高線內(nèi)插的問題。
[1] 龔有亮,何玉華,付子傲,等.一種實用的等高線內(nèi)插算法[J].測繪學(xué)院學(xué)報,2002,19(1):36-37
[2] 胡衛(wèi)明,吳兵,凌海濱.地圖等高線內(nèi)插算法[J].計算機學(xué)報,2000,23(8):847-851
[3] 楊長強,鄭永果,鄭作亞.一種等高線自動加密算法[J].信息技術(shù)與信息化,2006(2):56-58
[4] 李洪玉,唐詩華,李景文,等.在CAD中實現(xiàn)等高線自動內(nèi)插的一種方法[J].海洋測繪,2004,24(3):52-54
[5] 張渭軍,王文科,孔金玲,等.等雨量線的自動繪制方法[J].水土保持通報,2006,25(5):54-57
[6] 曹穎,趙牡丹.DLG內(nèi)插等高線算法實現(xiàn)[J].測繪科學(xué),2007,32(2):67-68
[7] 黃培之.等高線形狀變化規(guī)律的研究[J].中國圖象圖形學(xué)報,2006,11(1):103-106
[8] 姜波.一種等高線內(nèi)插的新思路[J].科技通報,2010,26(5):780-781
[9] 彭認(rèn)燦,董箭,鄭義東,等.垂距法與道格拉斯-普克法刪除冗余頂點效率的比較[J].測繪通報,2010(3):66-67