周俊,彭勃
(西安市勘察測繪院,陜西西安 710054)
在測繪行業(yè),AutoCAD已經(jīng)成為主流的繪圖軟件。數(shù)字化地形圖作為測繪基礎(chǔ)資料,是測繪工作者工作中重要的參考資料。我院的數(shù)字化地形圖成果并不是以AutoCAD格式保存的,在調(diào)用地形圖數(shù)據(jù)之前,需將原有格式轉(zhuǎn)換為AutoCAD格式。但是轉(zhuǎn)換之后的地形圖往往存在一些地形符號丟失,主要表現(xiàn)在線狀地形符號的缺失。如內(nèi)部路線型轉(zhuǎn)換成了連續(xù)實線、柵欄線型轉(zhuǎn)換成了長虛線等。對于一些簡單的線型符號,可以通過編制AutoCAD線型文件加載得到,但是,對于復(fù)雜的符號則難以解決。而且筆者發(fā)現(xiàn)利用這種方法繪制的線型符號在多線段拐點處丟失了符號的連續(xù)性,破壞了圖形的美觀和質(zhì)量。本文依據(jù)標(biāo)準(zhǔn)線狀地形符號的特點,利用ObjectARX開發(fā)工具實現(xiàn)了AutoCAD的地形線狀符號的自動繪制。
線狀符號是地圖符號中使用最多的一類,長度按比例表示,寬度不依比例表示。線狀符號有一個基本符號段(如圖1,柵欄基本符號段),表示線狀地形就是根據(jù)其定位線由基本符號段循環(huán)連接而已。而基本符號段可分解成AutoCAD基本圖元,如點、直線、圓弧和圓等。把這些基本圖元按一定規(guī)律連接起來,就可以實現(xiàn)線狀符號的自動生成。

圖1 柵欄的基本符號段
算法的核心在于根據(jù)定位線的位置及長度將線狀符號的基本符號段連續(xù)的連接起來,在終點處不足一個基本符號段的部分,則只能繪制這一部分長的基本符號段。由于線狀符號的定位線較多為多線段,而柵欄為常用線狀符號,且基本符號段含有的元素也多樣,具有一定的代表性,故這里以定位線為多線段的柵欄線狀符號為例,分析其算法流程。

圖2 繪制柵欄符號中圓元素的流程圖
如果把柵欄的基本符號段當(dāng)作一個整體考慮,在多線段折點i和i+1之間繪制出t個完整的基本符號段之后,剩下不足一個基本符號段的長度D使得在折點i+1處需考慮和處理的各種可能情況比較復(fù)雜。反之,我們可以把基本符號段的元素分開,把三個元素獨立考慮。事實上,沿著定位線方向的長線段、垂直于定位線方向的短線段和圓都是各自按一定間距沿著定位線連接的。例如沿定位線方向,兩圓心之間的距離和短線段之間的距離都為LD+2R(LD為基本符號段中長線段的長度,R為圓的半徑),長線段之間的間距則為2R。所以,只要能給出沿定位線繪制其中一個元素的算法,其他都可類似處理。這里給出繪制圓的算法流程,如圖2所示。
對于定位線為直線或圓弧的線狀符號的算法與上述情況類似,且相對更簡單,筆者就不再贅述了。
如圖3所示,為轉(zhuǎn)換為AutoCAD格式的西安市某地區(qū)的地形圖局部,從圖中可以看出缺失多種線狀符號,如圍墻、柵欄、行樹、陡坎等。運用本文的程序?qū)D形進(jìn)行編輯后,地形點位精度沒有破壞,而且線狀符號標(biāo)準(zhǔn)美觀,如圖4所示。

圖3 缺失線狀符號的地形圖

圖4 編輯后的地形圖
本文利用ObjectARX開發(fā)環(huán)境實現(xiàn)了地形圖線狀符號的自動繪制,不僅沒有破壞地形點位精度,而且符號標(biāo)準(zhǔn)美觀,節(jié)省了工作人員手工繪制地形符號的體力和腦力,提高了工作效率。
[1]張帆.ObjectARX開發(fā)實例教程電子圖書[M].2007
[2]Charles McAuley著.李世國等譯.AutoCAD2000 Object-ARX編程指南[M].北京:機(jī)械出版社,2000
[3]邵俊昌,李旭東.AutoCAD ObjectARX2000開發(fā)技術(shù)指南[M].北京:電子工業(yè)出版社,2000
[4]王育堅.Visual C++面向?qū)ο缶幊探坛蹋跰].北京:清華大學(xué)出版社,2003
[5]吳小芳,杜清運,徐智勇等.復(fù)雜線狀符號的設(shè)計及優(yōu)化算法研究[J].武漢大學(xué)學(xué)報(信息科學(xué)版),2006,31(7):632~635