劉陽,劉允,王光升,劉宓
(天津市測(cè)繪院,天津 300381)
隨著國(guó)家基本比例尺地形圖圖式和國(guó)家基礎(chǔ)地理信息要素?cái)?shù)據(jù)字典的頒布實(shí)施,測(cè)繪領(lǐng)域已經(jīng)開始了數(shù)字化測(cè)繪向信息化測(cè)繪的轉(zhuǎn)變,信息化是城市發(fā)展的方向,發(fā)展信息化測(cè)繪技術(shù)也是測(cè)繪行業(yè)明確的發(fā)展目標(biāo)。為適應(yīng)當(dāng)前的發(fā)展趨勢(shì),天津市測(cè)繪院開發(fā)設(shè)計(jì)了一套適合天津市基礎(chǔ)地理信息數(shù)據(jù)標(biāo)準(zhǔn)的采集編輯系統(tǒng)。
在研發(fā)管線數(shù)據(jù)采集編輯功能的過程中,天津市測(cè)繪院引入了反應(yīng)器技術(shù),并結(jié)合動(dòng)態(tài)塊的運(yùn)用,為管線數(shù)據(jù)開發(fā)了實(shí)用的采集編輯功能,為管線數(shù)據(jù)提供了新的數(shù)據(jù)組織和表達(dá)。
反應(yīng)器是一種反饋機(jī)制,它可以在發(fā)生某些特定事件時(shí),將所發(fā)生的事件通知給應(yīng)用程序,應(yīng)用程序會(huì)根據(jù)發(fā)生的具體事件做出相應(yīng)的決策。AutoCAD的反應(yīng)器技術(shù)的支持,對(duì)應(yīng)于標(biāo)準(zhǔn)Windows消息的Auto-CAD事件反應(yīng)器,可以隨時(shí)監(jiān)測(cè)AutoCAD中的事件并自動(dòng)調(diào)用相應(yīng)的回調(diào)函數(shù)。通過建立對(duì)象間的依賴關(guān)系及反應(yīng)器的設(shè)計(jì),可以實(shí)現(xiàn)多個(gè)實(shí)體間的連動(dòng)操作與編輯,操作更加簡(jiǎn)單。
AutoCAD從2006版本開始,增加了功能強(qiáng)大的動(dòng)態(tài)圖塊。動(dòng)態(tài)塊具有靈活性和智能性。在操作時(shí)可以方便地更改圖形中的動(dòng)態(tài)塊,而不需要炸開它們??梢酝ㄟ^自定義夾點(diǎn)或自定義特性來操作動(dòng)態(tài)塊參照中的幾何圖形。這使得用戶可以根據(jù)需要調(diào)整塊,而不用搜索另一個(gè)塊以插入或重定義現(xiàn)有的塊。動(dòng)態(tài)塊能夠賦予圖塊更靈活多變的樣式,使圖塊擁有自己的屬性和行為,可以體現(xiàn)更加豐富的信息。
在地形圖上,管線數(shù)據(jù)主要由三部分組成:管線骨架線、連接線和管線符號(hào)(如圖1所示)。由于這三部分?jǐn)?shù)據(jù)之間是相互分離的,因此一旦管線數(shù)據(jù)有變化時(shí),就要先修改好管線的骨架線,然后刪除原來的連接線和符號(hào),再根據(jù)新的骨架線重新生成管線的連接線和符號(hào)。單純的人工編輯,不僅效率不高,而且比較繁瑣容易出錯(cuò)。依靠程序雖然可以解決一部分簡(jiǎn)單的情況,但是地形圖上管線數(shù)據(jù)通常又比較復(fù)雜,并不能完全正確的解決問題。
圖1 管線數(shù)據(jù)的組織
對(duì)于管線符號(hào)而言,為了使管線符號(hào)能被清晰表達(dá),我們?cè)诓煌闆r下采用不同樣式的符號(hào)來表示(如圖2所示)。例如:相鄰電桿距離較近時(shí),用圖式符號(hào)尺寸大小的二分之一符號(hào)表示;仍表示不下時(shí),則只用圓圈符號(hào)表示;當(dāng)管線入房屋時(shí),用舍去圓圈的管線符號(hào)表示。為了適應(yīng)這些情況,就要制作多個(gè)符號(hào)塊,再根據(jù)不同的情況配置不同的符號(hào)塊,操作起來十分不便,編輯效率很低。
圖2 管線符號(hào)的各種樣式
基于以上的情況,在開發(fā)天津市基礎(chǔ)地理信息采集編輯系統(tǒng)的過程中,筆者將反應(yīng)器和動(dòng)態(tài)塊技術(shù)運(yùn)用到了管線要素的繪制編輯功能。對(duì)管線的骨架線添加反應(yīng)器來實(shí)現(xiàn)管線骨架線、連接線和管線符號(hào)的連動(dòng)表示,并將管線符號(hào)做成動(dòng)態(tài)塊來反映圖面上不同的表示,作業(yè)員根據(jù)不同的情況更改動(dòng)態(tài)塊的樣式,就可以滿足圖面不同情況的表示。
下面簡(jiǎn)單介紹一下管線繪制的程序?qū)崿F(xiàn)過程。從管線的一端開始,按照電桿的中心位置進(jìn)行繪制。計(jì)算出相鄰電桿之間的距離和角度,根據(jù)兩點(diǎn)間的距離確定塊名。符號(hào)塊確定好后,根據(jù)符號(hào)尺寸和相鄰電桿之間的角度計(jì)算出管線的連接線起止點(diǎn),繪制連接線。再根據(jù)采集的電桿位置繪制管線的骨架線,并為骨架線添加反應(yīng)器,實(shí)現(xiàn)這三者之間的連動(dòng)。
為管線數(shù)據(jù)添加了反應(yīng)器后,我們?cè)诜磻?yīng)器函數(shù)MX:DRAW_PLINE_1_RR中就要對(duì)管線數(shù)據(jù)給予相應(yīng)的編輯處理,以滿足圖面的需要。當(dāng)管線數(shù)據(jù)編輯修改時(shí),需要重新按照距離計(jì)算動(dòng)態(tài)塊顯示模式,更新符號(hào)的位置和角度,并根據(jù)新的符號(hào)塊更新管線的連接線。實(shí)現(xiàn)了這整個(gè)連動(dòng)過程,也就實(shí)現(xiàn)了通過反應(yīng)器和動(dòng)態(tài)塊對(duì)管線的快速編輯功能。
圖3 管線的反應(yīng)器效果圖
從圖3中可以看出,在B節(jié)點(diǎn)處拖動(dòng)管線的骨架線后,管線上配置的符號(hào)也跟著連動(dòng)改變,拖動(dòng)之后B節(jié)點(diǎn)和C節(jié)點(diǎn)之間的距離縮短了,B節(jié)點(diǎn)和C節(jié)點(diǎn)之間配置的符號(hào)樣式也就發(fā)生了變化。結(jié)合動(dòng)態(tài)塊技術(shù),管線的繪制和修改操作變得十分簡(jiǎn)單,只要改變骨架線的位置,骨架線上配置的符號(hào)和連接線就會(huì)隨之變化,而且根據(jù)兩個(gè)節(jié)點(diǎn)之間距離的不同,顯示相應(yīng)尺寸的管線符號(hào)。根據(jù)圖面的各種表示情況,只是簡(jiǎn)單更改一下動(dòng)態(tài)塊的表現(xiàn)形式(如圖4所示)就可以了,這樣就不必將原先配置的連接線和符號(hào)刪除再重新解釋,只需拖動(dòng)骨架線的節(jié)點(diǎn)就可完成管線的修改,使用非常方便。
圖4 管線動(dòng)態(tài)符號(hào)塊的表現(xiàn)形式
在管線數(shù)據(jù)的采集編輯中采用反應(yīng)器和動(dòng)態(tài)塊技術(shù),既簡(jiǎn)化了作業(yè)流程,提高了作業(yè)效率和精度,又簡(jiǎn)化了數(shù)據(jù)的結(jié)構(gòu),易于數(shù)據(jù)的管理。筆者在研究基礎(chǔ)地理信息數(shù)據(jù)采集編輯功能中不斷嘗試新的思路和技術(shù),相信能為今后更高效智能地實(shí)現(xiàn)基礎(chǔ)地理信息數(shù)據(jù)的采集起到很好的促進(jìn)作用。
[1]陳杉,王寧,郭劍峰.用ObjectARX開發(fā)AutoCAD 2000應(yīng)用程序[M].北京:人民郵電出版社,
[2]陳伯雄,馮偉.VisualLISP程序設(shè)計(jì)——技巧與范例[M].北京:人民郵電出版社,
[3]佟里欣.AutoCAD 2000探秘 -AutoLISP入門[M].北京:海洋出版社,
[4]秦洪現(xiàn),崔惠嵐,孫劍.Autodesk系列產(chǎn)品開發(fā)培訓(xùn)教程[M].北京:化學(xué)工業(yè)出版社,
[5]余承飛,方勇.AutoCAD 2000二次開發(fā)技術(shù)(Object-ARX)[M].北京:人民郵電出版社,1999.
[6]宋延杭,王川,李永宣.ObjectARX實(shí)用指南——Auto-CAD二次開發(fā)[M].北京:人民郵電出版社,