国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于AutoCAD實(shí)現(xiàn)數(shù)字化地形圖的動(dòng)態(tài)管理

2014-06-26 07:39姚小榮
城市勘測(cè) 2014年1期
關(guān)鍵詞:圖庫(kù)圖幅程序

姚小榮

(漳州市測(cè)繪設(shè)計(jì)研究院,福建 漳州 363000)

1 前 言

作為城市測(cè)繪單位,不僅擔(dān)負(fù)著整個(gè)城市地理數(shù)據(jù)的采集工作,同時(shí)還要為城市的規(guī)劃部門、建設(shè)單位等提供快捷、準(zhǔn)確的地理信息數(shù)據(jù)。面對(duì)整個(gè)城市如此龐大的地理數(shù)據(jù),作為數(shù)據(jù)管理者不僅要負(fù)責(zé)采集數(shù)據(jù)的整合與更新,同時(shí)還要負(fù)責(zé)數(shù)據(jù)的分發(fā),以供其他生產(chǎn)部門使用。若采用傳統(tǒng)的大圖塊拼接調(diào)用圖形的方式,不僅因?yàn)閿?shù)據(jù)量大會(huì)造成系統(tǒng)運(yùn)行速度慢,影響工作效率,而且會(huì)因?yàn)閿?shù)據(jù)版本問(wèn)題給數(shù)據(jù)管理者的工作帶來(lái)很大煩惱。而對(duì)于目前先進(jìn)的GIS 基礎(chǔ)空間數(shù)據(jù)管理技術(shù),雖然它可以實(shí)現(xiàn)基礎(chǔ)空間數(shù)據(jù)的快速查詢、統(tǒng)計(jì)、分析、數(shù)據(jù)管理等功能,但是,由于GIS軟件和AutoCAD 軟件對(duì)于圖形幾何類型的表達(dá)方式不同,使得目前無(wú)法將GIS 數(shù)據(jù)100%正確導(dǎo)出CAD數(shù)據(jù)。這樣對(duì)于以CAD 數(shù)據(jù)生產(chǎn)為主的測(cè)繪單位來(lái)說(shuō),使用GIS 技術(shù)管理數(shù)字化地形圖數(shù)據(jù)也會(huì)給工作帶來(lái)很大不便。

為此,筆者通過(guò)VBA 技術(shù)對(duì)AutoCAD 進(jìn)行了二次開(kāi)發(fā),增加了“圖庫(kù)管理”功能。通過(guò)AutoCAD 直接對(duì)分幅地形圖進(jìn)行管理,解決了大圖塊拼接調(diào)用圖形速度慢、工作效率低的不足。同時(shí),也避免了CAD 數(shù)據(jù)到GIS 數(shù)據(jù)之間相互轉(zhuǎn)化的過(guò)程,減少了數(shù)據(jù)因轉(zhuǎn)換產(chǎn)生的遺失、變形等。

2 VBA 技術(shù)簡(jiǎn)介[1]

VBA 的全稱是Visual Basic for Application,是AutoCAD 的一種二次開(kāi)發(fā)工具。VBA 將AutoCAD 和Visual Basic 的功能結(jié)合在一起,能夠快速創(chuàng)建出符合用戶要求的程序,大大提高了用戶的工作效率。Auto-CAD VBA 的開(kāi)發(fā)使用的是AutoCAD ActiveX 技術(shù),這種技術(shù)使用戶能夠從AutoCAD 的內(nèi)部或外部以編程的方式來(lái)操作AutoCAD。

3 工作流程

從外業(yè)數(shù)據(jù)的采集到內(nèi)業(yè)數(shù)據(jù)的編輯、整飾、分幅、入庫(kù),再到使用“圖庫(kù)管理”功能對(duì)入庫(kù)數(shù)據(jù)進(jìn)行管理的整個(gè)工作流程如圖1所示。

圖1 工作流程圖

4 功能設(shè)計(jì)

4.1 程序的加載和運(yùn)行

VBA 程序的加載包括設(shè)計(jì)過(guò)程中的自動(dòng)加載和使用中的自動(dòng)加載[1]。前者需要通過(guò)AutoCAD 原有的菜單項(xiàng)(即【工具/加載應(yīng)用程序】)配置所需的工程程序,其中所加載的工程文件可以任意命名,后綴名為.dvb。而后者則必須將工程文件命名為acad.dvb并且將其放置在AutoCAD 安裝路徑的Support 文件夾中,當(dāng)AutoCAD 啟動(dòng)時(shí)會(huì)搜索并加載acad.dvb。本程序采用后者進(jìn)行程序的自動(dòng)加載。

4.2 “圖庫(kù)管理”菜單的加載

當(dāng)啟動(dòng)了AutoCAD,系統(tǒng)會(huì)自動(dòng)搜索并加載acad.dvb 工程,同時(shí)由程序編制的“圖庫(kù)管理”菜單也會(huì)自動(dòng)加載到AutoCAD 的菜單欄,加載后的效果如圖2所示:

圖2 “圖庫(kù)管理”菜單

其中,菜單加載所用到的關(guān)鍵代碼如下:

’獲得當(dāng)前的菜單組

Dim currMenuGroup As AcadMenuGroup

Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)

’創(chuàng)建“圖庫(kù)管理”新菜單

Dim newMenu As AcadPopupMenu

On Error Resume Next

Set newMenu=currMenuGroup.Menus.Add("圖庫(kù)管理")

’添加“圖上指定點(diǎn)”菜單項(xiàng)

Dim macro As String

Dim newMenuItem As AcadPopupMenu

macro=Chr(vbKeyEscape)+Chr(vbKeyEscape)

Set newMenuItem=newMenu.AddSubMenu(newMenu.Count+1,Chr(Asc("&"))& "圖上指定點(diǎn)")

’菜單項(xiàng)“圖上指定點(diǎn)”下面的“1∶ 500”子菜單

Dim submenuitem As AcadPopupMenuItem

Set submenuitem = newMenuItem.AddMenuItem(newMenu.Count+1,Chr(Asc("&"))& "1∶ 500",macro & " -vbarun" +Chr(32)+"ThisDrawing.insertblock" +Chr(32)

4.3 “圖上指定點(diǎn)”功能

不同城市對(duì)分幅地形圖的圖幅命名習(xí)慣和命名方式有可能不同。但是,要將不同圖幅命名方式的分幅地形圖用AutoCAD 進(jìn)行統(tǒng)一管理,則必須將AutoCAD下的實(shí)地坐標(biāo)和圖幅建立對(duì)應(yīng)關(guān)系。下面以某市1∶ 1 000比例尺圖幅為例說(shuō)明該功能的實(shí)現(xiàn)。

圖3 圖幅號(hào)表

如圖3所示,用Access 數(shù)據(jù)庫(kù)組織管理該市1∶ 1 000比例尺分幅圖的圖幅號(hào)。其中,坐標(biāo)分幅號(hào)(15.5 -3.0)、標(biāo)準(zhǔn)分幅號(hào)(A-A)為該市1∶ 1 000比例尺分幅圖所采用的圖幅命名方式。AutoCAD 運(yùn)行環(huán)境下,當(dāng)在以路網(wǎng)圖為背景的地形圖上任選一點(diǎn)時(shí),程序可根據(jù)該點(diǎn)的X、Y 坐標(biāo)自動(dòng)推算出該點(diǎn)所在的坐標(biāo)分幅號(hào)(15.5 -3.0),并通過(guò)以下代碼連接Access數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)中找出該坐標(biāo)分幅號(hào)對(duì)應(yīng)的標(biāo)準(zhǔn)分幅號(hào)(A-A)。

Dim daodb1 As DAO.Database ’數(shù)據(jù)庫(kù)對(duì)象

Dim daors1 As DAO.Recordset ’記錄集對(duì)象

’打開(kāi)數(shù)據(jù)庫(kù)

Set daodb1 =OpenDatabase(ThisDrawing.Path & " 數(shù)據(jù)庫(kù).mdb")

’打開(kāi)記錄集

Set daors1 =daodb1.OpenRecordset("圖幅號(hào)對(duì)照表",2)

當(dāng)數(shù)據(jù)庫(kù)中存在該圖幅,程序則通過(guò)加載塊的方式將該圖幅準(zhǔn)確定位到當(dāng)前路網(wǎng)圖中,若不存在該圖幅,程序則會(huì)跳出提示對(duì)話框,提示該圖幅不存在。當(dāng)用戶調(diào)用的圖幅存在多個(gè)版本時(shí),程序則把該圖幅所涉及的所有版本羅列出來(lái),用戶可根據(jù)自己的需要選擇對(duì)應(yīng)版本的圖幅。

使用“圖上指定點(diǎn)”功能的前提是,用戶必須對(duì)測(cè)區(qū)的大概位置有所了解。當(dāng)掌握了測(cè)區(qū)的大概位置后,再在路網(wǎng)圖上調(diào)用所需要的圖幅。這種操作方式既方便又快捷。但對(duì)于不了解測(cè)區(qū)位置的用戶來(lái)說(shuō),這一功能也許就不那么好用。為了滿足不同用戶對(duì)象的需求,該程序增加了“調(diào)用窗體輸入”功能。

4.4 “調(diào)用窗體輸入”功能

該功能主要適用于不清楚測(cè)區(qū)的大概位置,但有該測(cè)區(qū)地形圖某圖幅號(hào)或某一點(diǎn)坐標(biāo)的記錄。用戶可根據(jù)自己所掌握資料的情況,在圖4界面里選擇一種合適的調(diào)用方式。

圖4 “調(diào)用窗體輸入”界面

“輸入標(biāo)準(zhǔn)圖幅號(hào)”即輸入以標(biāo)準(zhǔn)分幅號(hào)命名的圖幅號(hào)(如A-A)。

“輸入坐標(biāo)圖幅號(hào)”即輸入以坐標(biāo)分幅號(hào)命名的圖幅號(hào)(如15.5 -3.0)。

“輸入任意坐標(biāo)”即輸入地形圖上的任意一點(diǎn)坐標(biāo),程序通過(guò)自動(dòng)推算、查找,找到所需的圖幅號(hào)(坐標(biāo)分幅號(hào)或標(biāo)準(zhǔn)分幅號(hào))。

假設(shè)輸入或換算后的圖幅號(hào)用變量tufuhao 表示,那么程序通過(guò)下面這段代碼將該圖幅準(zhǔn)確地定位到道路路網(wǎng)圖上。

Set blockRefObj=ThisDrawing.ModelSpace.insertblock(pnt,

ThisDrawing.Path & "地形圖" & tufuhao & ".dwg",1,1,1,0)

4.5 “保存圖塊”功能

用戶可以對(duì)當(dāng)前打開(kāi)的分幅圖進(jìn)行添加、修改、刪除等操作,當(dāng)操作完成后可使用該功能對(duì)當(dāng)前操作進(jìn)行任意保存。所保存的數(shù)據(jù)可以是完整一幅圖,也可以是一幅圖的部分?jǐn)?shù)據(jù),同時(shí)也可以是多幅圖合并后的圖形數(shù)據(jù)。

5 地形圖數(shù)據(jù)的更新

地形圖數(shù)據(jù)能否體現(xiàn)城市地形、地貌的真實(shí)性、現(xiàn)勢(shì)性。取決于地形圖數(shù)據(jù)是否能夠得到及時(shí)的更新和維護(hù)。目前數(shù)字化地形圖的更新方式有兩種[3]:一種是對(duì)同一數(shù)據(jù)的不同版本進(jìn)行更新,即基于版本的數(shù)據(jù)更新;另一種是對(duì)變化的地理要素進(jìn)行更新,即基于基態(tài)修正的數(shù)據(jù)更新。本程序采用二者結(jié)合的方式進(jìn)行更新,即在同一年內(nèi),只對(duì)變化的地理要素進(jìn)行更新(圖上最好附上更新范圍線,以標(biāo)記更新的范圍),圖幅另存時(shí)則在圖幅號(hào)后備注該年年份。若在同一年內(nèi),同一圖幅的同一范圍經(jīng)過(guò)多次更新,那么該圖幅另存時(shí)應(yīng)增附更新的月份。對(duì)于下一年度更新的圖幅,圖幅號(hào)后則備注下一年的年份,實(shí)現(xiàn)數(shù)據(jù)的版本更新。這樣既保證了數(shù)據(jù)的現(xiàn)勢(shì)性,又保存了歷史數(shù)據(jù)。

6 結(jié) 語(yǔ)

筆者開(kāi)發(fā)的“圖庫(kù)管理”功能主要服務(wù)于數(shù)字化地形圖測(cè)繪生產(chǎn)單位,其優(yōu)越性主要體現(xiàn)在:該功能是基于測(cè)繪生產(chǎn)單位熟悉的AutoCAD 平臺(tái)進(jìn)行的二次開(kāi)發(fā)。使用該平臺(tái),不僅開(kāi)發(fā)成本低,而且對(duì)于數(shù)字化地形圖管理者來(lái)說(shuō),簡(jiǎn)單易學(xué)、操作便捷。

“圖庫(kù)管理”功能分別在多尺度地形圖的管理和數(shù)字化地形圖的更新兩方面加入了筆者的創(chuàng)新。首先,不同的用戶對(duì)象通過(guò)該功能可以實(shí)現(xiàn)多尺度、多版本數(shù)字化地形圖數(shù)據(jù)的編輯,并且可以做簡(jiǎn)單的疊加分析;其次,通過(guò)版本更新和基態(tài)修正更新相結(jié)合的方式進(jìn)行數(shù)字化地形圖數(shù)據(jù)庫(kù)的更新,體現(xiàn)地形圖數(shù)據(jù)的現(xiàn)勢(shì)性和歷史性。

該程序經(jīng)過(guò)多年的使用和完善,已在城市數(shù)字化地形圖數(shù)據(jù)管理方面取得了一定的效果,大大提高了數(shù)據(jù)管理者的工作效率和工作準(zhǔn)確率。但是,它僅局限于空間數(shù)據(jù)的管理,而對(duì)屬性數(shù)據(jù)管理方面的功能還比較薄弱。因此,今后在不斷完善空間數(shù)據(jù)管理功能的同時(shí),還要不斷改進(jìn)和提高,完成在AutoCAD 環(huán)境下屬性數(shù)據(jù)的管理。

[1]張帆,鄭立楷,王華杰.AutoCAD VBA 開(kāi)發(fā)精彩實(shí)例教程[M].北京:清華大學(xué)出版社,2004.

[2]鄭阿奇,曹弋.Visual Basic 實(shí)用教程(第2 版)[M].北京:電子工業(yè)出版社,2004.

[3]李宗華.城市地理基礎(chǔ)空間數(shù)據(jù)庫(kù)更新方法研究[J].城市勘測(cè),2006(1):6 ~8..

[4]林遠(yuǎn)清.基于VB6.0 的地形圖管理信息系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)[J].城市勘測(cè),2008(3):20 ~22..

[5]黃達(dá)藩.地形圖數(shù)據(jù)庫(kù)建設(shè)與數(shù)據(jù)共享有關(guān)問(wèn)題的探討[J].城市勘測(cè),2005(5):14 ~16..

[6]楊永崇,秦寬.地圖管理系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)[J].城市勘測(cè),2007(1):35 ~37.

猜你喜歡
圖庫(kù)圖幅程序
金山農(nóng)民畫矢量圖庫(kù)的建設(shè)與應(yīng)用
試論我國(guó)未決羈押程序的立法完善
“程序猿”的生活什么樣
視圖庫(kù)在AI浪潮里的發(fā)展應(yīng)用
基于Arcpy的地形圖接圖表快速生成方法
Photoshop CC圖庫(kù)面板的正確打開(kāi)方法
英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
基于EXCEL的地形圖圖幅號(hào)轉(zhuǎn)換查詢方法
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
圍繞“四個(gè)全面”戰(zhàn)略布局 譜寫偉大復(fù)興宏偉篇章