李 磊,徐樹元,羅時龍,丁中原
(淮安市水利勘測設(shè)計研究院有限公司,江蘇 淮安 223001)
目前,水利工程中斷面縱/橫斷面圖是河道疏浚、配套景觀整治等工程項目實施的重要參考依據(jù)。如何快速、有效地提取縱/橫斷面信息是測繪內(nèi)業(yè)工作的重點,也是影響工作效率的重要因素。如果里程較短或者斷面數(shù)量較少時,當(dāng)前常用的軟件(揚州易圖公司的AutoDM 軟件V3.0、濟南百圖公司的百圖水利土石方設(shè)計軟件V13.0[1]等)都能較好的完成必要的斷面信息提取工作。一旦斷面里程或者數(shù)量增加,這兩個軟件在應(yīng)用中存在的弊端將會凸顯,例如依賴人工區(qū)別要素以及逐條提取;依賴人工后添加屬性等,故而研究圖元的識別、歸組的自動化。
開發(fā)工具(VisualLisp[2]和VBA[3])規(guī)則簡單,易上手,但面向?qū)ο蟛挥押?處理復(fù)雜情形能力不足;開發(fā)工具(.NET[4]和ObjectARX[5])克服以上不足,但是開發(fā)速度慢,要求較高。這些工具的缺點[6]限制著各自的應(yīng)用,2001年微軟公司發(fā)布的C#語言[7]綜合了VBA的可視化操作和C++的高運行效率,可以通過COM組件加載CAD類庫的方式[8]深入控制CAD與互操作,故而研究C#語言進行二次開發(fā),將算法實現(xiàn)并且完成軟件設(shè)計,實現(xiàn)斷面信息的自動、批量提取。
最后在水利工程《沂沭泗直管河流地形測量項目Ⅲ標(biāo)段》項目中進行應(yīng)用,并且通過與當(dāng)前軟件進行比較的方式,驗證軟件(方法)的成果可靠性與內(nèi)業(yè)效率性。
以揚州易圖公司的AutoDM軟件V3.0為例說明當(dāng)前軟件的作業(yè)流程,將其概括為數(shù)據(jù)準(zhǔn)備和信息提取兩大階段。具體方式如圖1所示。
圖1 AutoDM提取斷面信息作業(yè)流程
顯然,這種作業(yè)流程存在著大量的依賴人工操作的部分,不僅需要耗費大量的時間,降低了內(nèi)業(yè)工作效率,而且可能影響成果的可靠性,影響最終的判斷決策。
例如,準(zhǔn)備階段中,添加里程是依靠手工量取線節(jié)點到起點距離;提取階段中,輸入拾取斷面線起/終點等幾乎所有步驟都是依靠人工的重復(fù)操作。但是在數(shù)據(jù)準(zhǔn)備完整的前提下,這些步驟基本上可以利用AutoCAD二次開發(fā)方法進行圖形要素識別、分類、歸組,進而獲取制式的TXT文件。新軟件的設(shè)計運行流程如圖2所示。
圖2 新軟件運行流程
數(shù)據(jù)準(zhǔn)備完整的基礎(chǔ)上,關(guān)閉其他干擾圖層后,直接框選所有必要的斷面信息要素。軟件在內(nèi)部利用不同圖形要素間存在的區(qū)別完成對象的識別、分類、歸組、生成運算,最后將成果另存為TXT文件即可。
具體的運算(識別、分類、歸組)依賴相互間的邏輯關(guān)系,將在第二節(jié)中作詳細說明。
能夠進行智能化改進的主要方面是“添加里程”和“信息提取”2個模塊。
斷面里程(在CAD中為文本圖形)通常是要求文字朝向河流下游,同時沿斷面線方向放置在線的近似中心位置,具體如圖3所示。
圖3 里程要求樣式
需要確定的是節(jié)點距起點的長度L與旋轉(zhuǎn)角度α。長度L可以將相鄰節(jié)點的距離作累加AGO即可;角度α可以根據(jù)斷面線確定。
假設(shè)其端點坐標(biāo)為(x1,y1)、(x2,y2),那么根據(jù)式(1)、式(2)[9]即可計算出其與水平線所夾的銳角β和旋轉(zhuǎn)角度α。
(1)
(2)
假設(shè)有N條斷面線,因為斷面零點、斷面里程和斷面線都存在一一對應(yīng)的關(guān)系,所以存在有N個里程和N個零點;因為高程點與斷面線是多對一的關(guān)系,所以在M個高程點(包括無效高程點)。通常數(shù)據(jù)準(zhǔn)備階段會將相關(guān)要素移動到斷面線兩側(cè),本軟件有如下設(shè)置:
(1)斷面線5 m范圍內(nèi)的高程點有效。
(2)斷面線10 m范圍內(nèi)的里程為對應(yīng)高程。
(3)斷面線1 m范圍內(nèi)的圓為對應(yīng)圓;以其圓心為零點依據(jù),高程點到圓心的距離小于0.1 m時視為零點(為了獲取高程)。
超限的圖元無效,在此基礎(chǔ)上給出識別、分類、歸組的運行邏輯示意,如圖4所示。
圖4 運行邏輯示意圖
圖4中,L是指對象的插入點到斷面線的距離;Mi是指滿足閾值的高程點數(shù)據(jù);O是指零點在斷面線上的垂點,OMi即是Mi個高程點在斷面線上的垂點;LMi是指Mi個高程點的垂點OMi與零點垂點O間距離;LM是指所有LMi按從大到小排列后的序列;HM是指與LM值對應(yīng)的高程值數(shù)列。
本部分不僅包含最終的應(yīng)用效果,而且還對軟件UI(User Interface)和核心代碼進行展示。
軟件是基于C#[7]窗體應(yīng)用程序的,最終的UI如圖5所示。
圖5 軟件UI展示
軟件不僅對第二節(jié)中涉及的兩個模塊進行了功能實現(xiàn),而且對斷面信息提取過程中包含的細節(jié)技術(shù)要求也進行了實現(xiàn)。例如,起始里程不為0或者起始號不為1等特殊情況。
另外,《沂沭泗直管河流地形測量項目Ⅲ標(biāo)段》項目[10]中對點屬性的要求比較詳細。如果在TXT文件中后添加的話,工作量很大,所以嘗試將展點代碼直接提出,那么就需要獲悉高程點與代碼插入點的相對關(guān)系,具體位置關(guān)系如圖6所示。
圖6 高程點與代碼插入點間相對關(guān)系
圖6中是1∶1 000比例尺時高程點坐標(biāo)與展點代碼(文本)的插入點坐標(biāo)間的差值,即不同比例尺間存在以下關(guān)系:
(3)
式中,S為CAD圖形的比例尺。
因文本插入點完全重合情況不存在,所以利用比例尺這個特性可以不遺漏地提取屬性信息。
軟件基于COM端口方式,獨立于AutoCAD運行,先后構(gòu)建斷面等結(jié)構(gòu)體,新建求垂足等函數(shù),核心代碼如圖7所示。
圖7 核心代碼截圖
沂沭泗直管河流Ⅲ標(biāo)段共分邳蒼分洪道、新沭河、分沂入沭水道三段,累計約160 km,共測斷面130條。以邳蒼分洪道為例,每2 km測量一條大斷面,共測45條大斷面。每條斷面上平均有測點120個,45條斷面線的平均長度大于2 km,示意如圖8所示。如果使用的是AutoDM軟件V 3.0,按照正常的工作效率進行斷面信息提取、添加地性注釋(斷面點屬性)至少需要3~8 h,則完成整個Ⅲ標(biāo)段的斷面信息整理至少需要1~3 d。
圖8 邳蒼分洪道斷面整理數(shù)據(jù)示意圖
保證處理數(shù)據(jù)完全一致的前提下,測試電腦使用的是HP電腦(i3處理器,4G內(nèi)存)進行提取時間測試??紤]到軟件自身運算量較大,在不同性能電腦上的測試時間結(jié)果可能略有區(qū)別。
直接框選所有斷面要素(不包括中心線)后點擊ENTER鍵即可。使用秒表計時,運行時間接近100 s,平均在每條斷面上耗費的時間只有2.3 s,則提取沂沭泗直管河流Ⅲ標(biāo)段實測的160條斷面信息只需6 min。與原本“1~3 d”的耗時相比,工作效率得到極大了提升。效率性(已驗證)是對軟件的要求之一,可靠性是對軟件的另一要求,兩個軟件的成果對比如圖9所示。
圖中左側(cè)是AutoDM軟件的提取結(jié)果,右側(cè)是本軟件的提取結(jié)果。這是水利工程中要求的斷面格式,其中第一行為里程值,第一行以下每行的值分別是距零點的距離(左正右負)、高程值。
結(jié)果表明,本軟件的運算成果是有效的,與當(dāng)前常用軟件的成果相比沒有顯著區(qū)別。鑒于篇幅有限,成果的完整對比在此不再展示。
本文詳細地介紹了水利工程中斷面信息自動提取軟件的實現(xiàn)方法和開發(fā)邏輯,最后利用開發(fā)出的軟件與當(dāng)前常用軟件(AutoDM等)在效率性和可靠性兩個方面進行對比。本軟件在不犧牲可靠性的前提下,大大提升了斷面信息提取的效率(以一條斷面為準(zhǔn),當(dāng)前軟件用時以分記,本軟件以秒記)。
雖然本軟件在智能化等方面有了一定的進步,但仍存在不足,例如運算代碼自身的冗余、對復(fù)雜情形的處理等。以后將在這些方面作出改進,以便軟件的推廣應(yīng)用。