劉學(xué)民
在地理信息數(shù)據(jù)中,道路網(wǎng)絡(luò)是構(gòu)成幾何數(shù)據(jù)和應(yīng)用分析的重要組成部分,道路網(wǎng)的描述,是用GIS 方法對自然界中人文影響和經(jīng)濟(jì)狀況的表現(xiàn)形式。對于道路網(wǎng)數(shù)據(jù)采集,往往是采用人工采集和計算機(jī)輔助自動化采集兩種方法。在許多GIS 平臺,道路面提取中心線的原理有下面兩類方法:(1)道路面按Delaunay 方法構(gòu)造三角網(wǎng),此方法在對路端喇叭形處生成的中心線表現(xiàn)為波浪折線和不正確的分叉,點(diǎn)數(shù)也較多,與理想形狀的邊線點(diǎn)幾何形似差異較大。(2)提取道路的面填充,生成柵格位圖。這種方法除了數(shù)據(jù)格式轉(zhuǎn)換煩瑣,還有矢量數(shù)據(jù)屬性的丟失。本文將針對以上情況,對路面形狀進(jìn)行邊線調(diào)整、路端處理后,依據(jù)科學(xué)的計算判別,在已有軟件中二次開發(fā)自己的工具實現(xiàn)道路中心線自動提取的功能。
對道路面的邊線點(diǎn),按某種算法找到道路的兩端封口線,從一封口中點(diǎn)起,沿道路一側(cè)點(diǎn)順序,根據(jù)道路邊線點(diǎn)的相互關(guān)系,逐點(diǎn)查找順序點(diǎn)的路邊線另一側(cè)對稱點(diǎn),將該點(diǎn)與對稱點(diǎn)連線并取中點(diǎn)作為待求中心線新加點(diǎn)。當(dāng)此點(diǎn)不存在時,求該點(diǎn)內(nèi)角平分線與道路另一側(cè)最近的實交點(diǎn),將該點(diǎn)與求得的交點(diǎn)連線,取中點(diǎn)作為待求中心線新加點(diǎn),直至道路另一封口中點(diǎn)為止。需要對道路面進(jìn)行結(jié)構(gòu)分析,找出其點(diǎn)坐標(biāo)與這些特征的關(guān)系即相關(guān)性。
圖1 路面夾角與邊線關(guān)系
在確定是否封口前,首先求出道路面的所有點(diǎn)對應(yīng)的內(nèi)角值,道路面經(jīng)作業(yè)人員整理后,路的端口線段兩頂點(diǎn)夾角基本對稱,或接近成直角(如圖A)或呈張口喇叭狀(如圖B),對于收口形的(如圖C)基本沒有。在道路面其他非端口處的各線段,當(dāng)路正常延伸時,都是遠(yuǎn)大于90 度的拐角(如圖D),當(dāng)有近90或小于90 度的角時,該段線如果不是封口,則另一點(diǎn)的內(nèi)角一定與本點(diǎn)內(nèi)角嚴(yán)重不相近,此時該點(diǎn)是道路的拐彎處(如圖E),相反,如果該線段兩端的內(nèi)角出現(xiàn)了接近90 度及以下并且兩角接近,那么該段線一定是封口。對于U 形路(如圖F),假如U 形底處是一段直線段,此時該處內(nèi)側(cè)和外側(cè)兩線段的頂角也是角對稱的,在U 形內(nèi)側(cè)邊線兩頂角,接近270 度,自然不會判斷為封口,在U 形外側(cè)邊線兩頂角,都接近90 度,但是,此線段的長度會遠(yuǎn)大于道路的平均寬度,至少在兩倍以上,否則無法構(gòu)成U 形路面,按接近90 對稱角再加上此邊的邊長與平均路寬的對比條件,可以進(jìn)行排除。經(jīng)作業(yè)員整理后的一條道路面,原則上只有兩端兩個封口,這使得此法識別封口正確性達(dá)到了百分之百。
對于路面交叉沒有斷開的情況,路面可能存在多個十字路口或丁字路口,為了按2.1 中確定單一路面封口兩端,必須對路面進(jìn)行分割,分割可以在工具中實現(xiàn),自動分割方法如下:
(1)寫工具時,取消只找到兩個封口的限制,對發(fā)現(xiàn)的可能封口全部偵測并記錄。
圖2 交叉路口和丁字路口未斷開情況示意
(2)交叉口判別,對有三個及其以上偵測封口的路面按每個偵測的封口分別沿其兩側(cè)邊線逐點(diǎn)延長尋找,各自搜索一對兩內(nèi)角都近似270 并且連線距離與平均路寬接近的點(diǎn),此兩點(diǎn)即為交叉口處,將此兩點(diǎn)作為該路面的一個結(jié)束封口,然后與出發(fā)的封口之間的點(diǎn)劃分為一段路面。距離比較時,一定是兩側(cè)分別找到的270 度拐點(diǎn)之間,如圖中丁字路口中,從A 封口上邊線搜到2 號點(diǎn)與沿下邊線搜到的1 號點(diǎn)可作為交叉口,若從C 封口開始得一樣結(jié)果。若從B 封口也可搜到1 點(diǎn)和2 點(diǎn)。對于圖中的十字路口,從偵測到的四個封口任意一個開始,都會搜索到符合該條件的 3 點(diǎn)和 5 點(diǎn)、5 點(diǎn)和 6 點(diǎn)、6 點(diǎn)和 4 點(diǎn),4點(diǎn)和3 點(diǎn)其中一個,逐次分割路口。
(3)對某路面上新劃分出的路段面從原面上分割下來。如圖中丁字路口,沿A 封口找到1、2 號點(diǎn)后,分割出上面的橫向路,同時還有下面的豎條路段。對于十字路口,則需要分割兩次。
(4)在分割剩余的面上繼續(xù)執(zhí)行交叉口判別、分割操作,直到所剩封口數(shù)為不多于2 個時為止。
當(dāng)路封口確定后,加在兩封口之間的各點(diǎn),構(gòu)成了道路的兩條邊線。在這兩條邊線中,有一條是包含起止點(diǎn)即面的閉合點(diǎn),另一側(cè)不包含此點(diǎn),而是順序點(diǎn)號連續(xù)的系列線段。為了提取中心線時從一封口向另一封口連續(xù)進(jìn)行,需要找到該點(diǎn)序連續(xù)的邊線。如果對道路面從開始到閉合將各點(diǎn)依次編號,這些編號值有下面特征:利用道路兩封口的端點(diǎn)編號計算,最大號與最小號之間包含的線段包含閉合點(diǎn),中間點(diǎn)號不是連續(xù)的,而另一側(cè)中間點(diǎn)號是連續(xù)的。本方法中心線搜索推進(jìn)按點(diǎn)號連續(xù)一側(cè)執(zhí)行,同時,還要確定對面邊的點(diǎn)序,在閉合點(diǎn)小號一側(cè),點(diǎn)號從大到小,閉合點(diǎn)大號一側(cè),是從小到大。
在正常生產(chǎn)中,經(jīng)作業(yè)員對道路調(diào)整后,同一路段的寬度是基本對稱和均勻的,對道路面內(nèi)角180±10 度即平角的點(diǎn)在角分線方向求取內(nèi)割線的長度為當(dāng)前點(diǎn)的路寬。確定該點(diǎn)路寬時,應(yīng)排除該割線與封口線相交的情形。該條路所有符合條件的路寬值取平均值,可作為道路的平均寬度。
將近似垂直于中心線的割于道路兩邊線之間的線段稱為弦線,弦線中點(diǎn)可作為求道路中心線的依據(jù)。確定最佳弦線是求得最佳道路中心線的中心思想。道路面經(jīng)人工調(diào)整后,道路兩側(cè)邊線往往具有明顯的對稱特征,其情況如圖3 中作為對應(yīng)的點(diǎn)應(yīng)同時滿足以下角度和距離條件。
圖3 道路對稱點(diǎn)示意
(1)角度相關(guān):(1)對稱點(diǎn)處的內(nèi)角與180 差值絕對值近似相等,且兩個內(nèi)角和接近 360 度;圖中的 D 與 D’、E 與 E’、F 與F’、G 與 G’等處。(2)兩個角均大于 180 度,此時是喇叭拐彎處;圖中的 A 與 A’、B 與 B’、C 與 C’。
(2)距離相關(guān):道路中兩對稱點(diǎn)距前一個弦線中心點(diǎn)的距離應(yīng)近似相等如圖中的D 和D’到3 點(diǎn)的距離近似相等。設(shè)定一個范圍值,該值大小與構(gòu)成對稱點(diǎn)的對稱程度相關(guān),取決于人的作業(yè)特點(diǎn);與道路寬度沒有直接比例關(guān)系,但路寬度大時也應(yīng)略大。本例取0.2 倍路寬,道路較寬時,比例數(shù)可適當(dāng)減小。
以上滿足條件的點(diǎn),確定為對稱點(diǎn)。當(dāng)對面點(diǎn)細(xì)密時,一個本側(cè)點(diǎn)可能會連續(xù)找到幾個對面點(diǎn)都滿足對稱條件,此時放棄尋找對稱點(diǎn),采用角平分線法確定中心線點(diǎn)。對于找到的對面對稱點(diǎn),記錄其已成為對稱點(diǎn)的狀態(tài)并記錄兩點(diǎn)連線為弦線,在后續(xù)查找時,搜索對稱點(diǎn)時,應(yīng)在前面所使用過的點(diǎn)開始向后查找,所得的新對稱點(diǎn)間連線與前面使用的弦線均無除兩端外其他實交點(diǎn),防止中心線回折和交叉。當(dāng)順序點(diǎn)沒有找到對稱點(diǎn)時,使用該順序點(diǎn)的內(nèi)角平分線,求與另一側(cè)的交點(diǎn)并以該交點(diǎn)與本點(diǎn)的連線作為弦線。利用對稱點(diǎn)作為提取中心線,可以最大限度地保持中心線與原道路的形狀相似。
本方法通過實際運(yùn)行,得到的中心線正確,速度快。本方法克服了一些軟件提取道路中心線的波浪小折線、分叉、點(diǎn)數(shù)大量冗余以及運(yùn)算復(fù)雜的弊端,所生成的中心線與原邊線形狀完美一致。在編輯軟件中使用,能保證道路屬性內(nèi)容保留完整,直接傳遞。由于計算方法簡單,運(yùn)算速度也較快,適用于各種語言編寫工具。