周俊,彭勃
(西安市勘察測(cè)繪院,陜西西安 710054)
在測(cè)繪行業(yè),AutoCAD已經(jīng)成為主流的繪圖軟件。數(shù)字化地形圖作為測(cè)繪基礎(chǔ)資料,是測(cè)繪工作者工作中重要的參考資料。我院的數(shù)字化地形圖成果并不是以AutoCAD格式保存的,在調(diào)用地形圖數(shù)據(jù)之前,需將原有格式轉(zhuǎn)換為AutoCAD格式。但是轉(zhuǎn)換之后的地形圖往往存在一些地形符號(hào)丟失,主要表現(xiàn)在線狀地形符號(hào)的缺失。如內(nèi)部路線型轉(zhuǎn)換成了連續(xù)實(shí)線、柵欄線型轉(zhuǎn)換成了長(zhǎng)虛線等。對(duì)于一些簡(jiǎn)單的線型符號(hào),可以通過編制AutoCAD線型文件加載得到,但是,對(duì)于復(fù)雜的符號(hào)則難以解決。而且筆者發(fā)現(xiàn)利用這種方法繪制的線型符號(hào)在多線段拐點(diǎn)處丟失了符號(hào)的連續(xù)性,破壞了圖形的美觀和質(zhì)量。本文依據(jù)標(biāo)準(zhǔn)線狀地形符號(hào)的特點(diǎn),利用ObjectARX開發(fā)工具實(shí)現(xiàn)了AutoCAD的地形線狀符號(hào)的自動(dòng)繪制。
線狀符號(hào)是地圖符號(hào)中使用最多的一類,長(zhǎng)度按比例表示,寬度不依比例表示。線狀符號(hào)有一個(gè)基本符號(hào)段(如圖1,柵欄基本符號(hào)段),表示線狀地形就是根據(jù)其定位線由基本符號(hào)段循環(huán)連接而已。而基本符號(hào)段可分解成AutoCAD基本圖元,如點(diǎn)、直線、圓弧和圓等。把這些基本圖元按一定規(guī)律連接起來,就可以實(shí)現(xiàn)線狀符號(hào)的自動(dòng)生成。
圖1 柵欄的基本符號(hào)段
算法的核心在于根據(jù)定位線的位置及長(zhǎng)度將線狀符號(hào)的基本符號(hào)段連續(xù)的連接起來,在終點(diǎn)處不足一個(gè)基本符號(hào)段的部分,則只能繪制這一部分長(zhǎng)的基本符號(hào)段。由于線狀符號(hào)的定位線較多為多線段,而柵欄為常用線狀符號(hào),且基本符號(hào)段含有的元素也多樣,具有一定的代表性,故這里以定位線為多線段的柵欄線狀符號(hào)為例,分析其算法流程。
圖2 繪制柵欄符號(hào)中圓元素的流程圖
如果把柵欄的基本符號(hào)段當(dāng)作一個(gè)整體考慮,在多線段折點(diǎn)i和i+1之間繪制出t個(gè)完整的基本符號(hào)段之后,剩下不足一個(gè)基本符號(hào)段的長(zhǎng)度D使得在折點(diǎn)i+1處需考慮和處理的各種可能情況比較復(fù)雜。反之,我們可以把基本符號(hào)段的元素分開,把三個(gè)元素獨(dú)立考慮。事實(shí)上,沿著定位線方向的長(zhǎng)線段、垂直于定位線方向的短線段和圓都是各自按一定間距沿著定位線連接的。例如沿定位線方向,兩圓心之間的距離和短線段之間的距離都為L(zhǎng)D+2R(LD為基本符號(hào)段中長(zhǎng)線段的長(zhǎng)度,R為圓的半徑),長(zhǎng)線段之間的間距則為2R。所以,只要能給出沿定位線繪制其中一個(gè)元素的算法,其他都可類似處理。這里給出繪制圓的算法流程,如圖2所示。
對(duì)于定位線為直線或圓弧的線狀符號(hào)的算法與上述情況類似,且相對(duì)更簡(jiǎn)單,筆者就不再贅述了。
如圖3所示,為轉(zhuǎn)換為AutoCAD格式的西安市某地區(qū)的地形圖局部,從圖中可以看出缺失多種線狀符號(hào),如圍墻、柵欄、行樹、陡坎等。運(yùn)用本文的程序?qū)D形進(jìn)行編輯后,地形點(diǎn)位精度沒有破壞,而且線狀符號(hào)標(biāo)準(zhǔn)美觀,如圖4所示。
圖3 缺失線狀符號(hào)的地形圖
圖4 編輯后的地形圖
本文利用ObjectARX開發(fā)環(huán)境實(shí)現(xiàn)了地形圖線狀符號(hào)的自動(dòng)繪制,不僅沒有破壞地形點(diǎn)位精度,而且符號(hào)標(biāo)準(zhǔn)美觀,節(jié)省了工作人員手工繪制地形符號(hào)的體力和腦力,提高了工作效率。
[1]張帆.ObjectARX開發(fā)實(shí)例教程電子圖書[M].2007
[2]Charles McAuley著.李世國等譯.AutoCAD2000 Object-ARX編程指南[M].北京:機(jī)械出版社,2000
[3]邵俊昌,李旭東.AutoCAD ObjectARX2000開發(fā)技術(shù)指南[M].北京:電子工業(yè)出版社,2000
[4]王育堅(jiān).Visual C++面向?qū)ο缶幊探坛蹋跰].北京:清華大學(xué)出版社,2003
[5]吳小芳,杜清運(yùn),徐智勇等.復(fù)雜線狀符號(hào)的設(shè)計(jì)及優(yōu)化算法研究[J].武漢大學(xué)學(xué)報(bào)(信息科學(xué)版),2006,31(7):632~635