cad转shp 奥维_CAD转化为Shp
基于VBA的SCS數據分類轉換為Shape文件
作者:ffff??來源:博客園??發布時間:2008-08-25 13:31??閱讀:170 次??原文鏈接?? [收藏]
基于VBA 的SCS 數據分類轉換為Shape 文件
高宏兵,李鳳斌,王 進,劉 域
(大連九成測繪企業集團,遼寧大連116400)
摘 要 數據是GIS 發展及各類專題地理信息系統建立的基礎,而目前提供基礎數據的來源,主要是各部門由
AutoCAD 二次開發軟件編輯的DWG數據,并有編碼規則,用以區分不同的地物,所以有必要研究DWG數據的各
種轉換方法。在學習其他的數據轉換方法中,本文提出一種基于ArcMap 內置VBA ,利用自定義轉換文件,對
DWG進行分類轉換的方法,并在大連某地區的地籍測量的數據轉換中得到較好的應用。
關鍵詞 編碼 GIS DWG VBA Geodatabase 數據轉換
中圖分類號: P208 文獻標識碼:B 文章編號:1672 - 4097 (2007) 04 - 0037 - 03
本文是以大連某地區開思繪制的DWG 數據
為例,為滿足遼寧省城鎮地籍數據建庫標準,將其
分類轉為Shape 數據格式為例,分析DWG、Shape
數據格式,介紹目前的轉換方法,根據筆者工作,
談談利用ArcMap 內置VBA ,將DWG數據分類轉
換為Shape 數據的原理和轉換流程,并賦有關鍵
代碼。
1 一般的數據轉換方法
111 Arc Toolbox 轉換方法
ESRI 的Arc Toolbox 軟件,提供用戶強大的地
理信息處理功能,為不同類型的任務提供解決的途
徑。主要工具有:數據管理工具、分析工具、轉換工
具和定制工具(My Tool s) 。在Arc Toolbox 中,先
將DWG 轉為Geodatabase 數據格式, 選擇“Con2
version Tools (轉換工具) - > Import to Geodata2
base - > CAD to Geodatabase”;再把Geodatabase
轉為Shape 格式,選擇“Conversion Tool s (轉換工
具) - > Import to Shapefile - > Geodatabase to
Shapefile”。這種轉換只是把DWG 數據簡單的轉
為:點、線、面,不能實現分類提取的目的,達不到用
戶需要的結果。
112 利用其他軟件轉換
目前許多的GIS 軟件也可以轉換數據,例如
SuperMap Deskpro 。還有專門對數據進行轉換的
FME 軟件,它可以實現100 多種GIS 及CAD 空
間數據格式, 如DWG、DXF 、DGN 、Shape File 、
ArcSDE 等的相互轉換。但是對于專業的數據處
理軟件,價格一般比較昂貴,要定制復雜的數據
轉換任務,需要使用人員參加培訓學習,這些對
于工程的投入大量資金, 所以這種轉換也不
可取。
2 利用ArcMap 內置VBA 編寫分類轉換
程序
下面說明如何利用VBA 程序,將廣州開思軟
件編輯生成的DWG 格式數據分類轉為Shape
格式。
211 程序設計思想
21111 了解開思編碼體系
開思是采用對地物分類編碼的規則,先將地
物按層劃分,主要包括10 類(見表1) ,其它層還
有:Bound(框架線) 、Axes (軸線) 、Value (骨架線)
等。再將各層下不同地物進行分類編碼,編碼統
一用7 位數字描述,結構為:主編碼( 4 位+ 1 位)
+ 附編碼(2 位) ,前四位是按《國標》要求,后面是
細分類的碼, 7 位編碼存儲在Thickness 屬性中。
對于以塊表示的地物,采用塊名的不同進行7 位
數字編碼。
21112 建立轉換文件
根據開思軟件的編碼體系,建立DWG 數據與
Shape 的轉換文件( ZHWJ . t xt ) 。格式為:類型,屬
性字段,屬性值,Shape 文件名。如圖1 ,文件說明:
①將點數據中Text 屬性值為GC113 和GC200 轉
到CL KZD. shp (測量控制點) ②將線數據中Thick2
ness 屬性值為3231000 和3232000 轉到XZDW.
shp (線狀地物) ③將面數據中Thickness 屬性值為
2110100 和2110200 轉到MZFW. shp (面狀房屋)
④將注記點數據中Layer 屬性值為002 轉到TK.
shp (圖廓注記) ⑤將注記點數據中Layer 屬性值為
ZJ 轉到ZZJ . shp (注記) 。
212 程序流程及代碼說明
21211 程序流程
啟動ArcMap ,運行宏,讀入DWG 文件,根據
轉換文件構造選擇條件,從DWG 數據中提取地物
轉換到指定的Shape 文件中,詳細流程(見圖1) 。
圖1 程序流程
31211 程序主要代碼說明
程序主要有三部分組成:讀入DWG文件,讀入
轉換文件,根據轉換文件分類選取并保持到Shape
文件。受篇幅限制,下面給出部分主要代碼。
(1) 讀入DWG文件。
Set pWorkspace = pCadWKSFact . OpenFromFile
(DWG- Path , 0) ‘/ 設置DWG文件路徑/
Set p FeatureDataset = pWorkspace. OpenFeatureDataset
(DWG- name) ‘/ 打開DWG特征數據/
Set p FeatureClassContainer = p FeatureDataset
For Count = 0 To p FeatureClassContainer. ClassCount
—1‘/ 分類特征數據/
?‘/ 代碼略,讀入DWG 數據,生成點D、點Z、線
X、面M FeatureLayer/
Next Count
pMxDoc. UpdateContent s ’/ 刷新顯示/
(2) 讀入轉換文件。
Open " ZHWJ . TXT" For Input As # 1‘/ 打開轉換
文件/
Do While Not EOF (1) ‘/ 循環讀取轉換文件讀到數
組ZH 中/
Input # 1 , ZH (Number , 1) , ZH (Number , 2) ,
ZH(Number , 3) , ZH(Number , 4)
Number = Number + 1‘/ 循環到數組的下一行/
Loop
Close # 1‘/ 關閉轉換文件/
(3) 根據轉換文件分類選取,并存儲為Shape
文件,并按遼寧省城鎮地籍數據建庫標準添加屬性
字段。
Set pMxDoc = Application. Document‘/ 取得焦點Map
對象/
Set pMap = pMxDoc. FocusMap‘/ 設置當前活動視圖/
‘/ 創建一個新的空間書簽對象,并設置它定位到焦點地
圖的當前可視范圍/
Set pActiveView = pMap
For I = 1 To Number —1‘/ 按行循環存放轉化文件的
數組/
Select Case ZH( I , 1) ‘/ 根據數組第一列/
Case“Z”‘/ 如果ZH( I , 1) = ”Z”,為注記點層/
Set p FeatureLayer = pMap . Layer (0)
Set p FeatureSelection = p FeatureLayer‘/ 指定查
詢的圖層為注記點層/
Case“M”‘/ 如果ZH( I , 1) = ”M”, 查詢的圖層為
面層(代碼略) /
Case“X”‘/ 如果ZH( I , 1) = ”X”, 查詢的圖層為
線層(代碼略) /
Case“D”‘/ 如果ZH ( I , 1) = ”D”, 查詢的圖層為
點層(代碼略) /
End Select‘/ 語句結束
Set pQueryFilter = New QueryFilter‘/ 查詢過濾器/
pQueryFilter. WhereClause = " " + ZH( I ,2) + " = " + ZH
( I ,3) + " "‘/ 創建查詢過濾器/
‘/ 以下Shape 文件存在,不存在創建,并添加地籍需要
的字段,插入選擇結果/
If Check - for - shapefile ( Path , ZH( I ,4) ) = False Then
‘/ 自己定義函數,按指定路徑創建Shape 文件,添
加地籍需要的字段/
Fun - Create - AddField ( Path)
End If
Set pNewFeatureClass = p TargetWorkspace. OpenFea2
tureClass (ZH( I ,4) ) ‘/ 打開shape/
Set pCursor = p FeatureClass. Search ( pQueryFilter ,
False) ‘/ 執行選擇,獲取選擇指針/
Set p Feature = pCursor. Next Feature‘/ 游標指針指向
第一個位置的上面/
Do Until ( (p Feature Is Nothing) Or (bAbort) )‘/ 選擇
不為空,根據指針遍歷要素/
Set p Geom = p Feature. ShapeCopy
Set pBuffer. Shape = p Geom‘/ 獲取要素的空間
范圍/
For i = 0 To p Feature. Fields. FieldCount —1‘/ 返
回所有字段的數目/
‘/ 代碼略,循環選擇要素的屬性及其值/
Next
p Insert . Insert Feature pBuffer ‘/ 插入到shape
文件/
Set p Feature = pCursor. Next Feature‘/ 游標指針
移動到下個位置/
Loop‘/ 返回到Do 語句/
Next‘/ 移動到數組下一行位置/
213 程序運行結果
轉換文件是根據遼寧省城鎮地籍數據建庫
分類標準編寫的,利用轉換程序對圖形進行分類
轉換,并利用程序添加了屬性字段,經驗證達到
38 現 代 測 繪 第30 卷
了遼寧省城鎮地籍數據建庫標準。
3 結 論
這種轉換方法,利用ArcMap 內置的VBA 程
序,對DWG 數據根據轉換文件,直接進行分類轉
換,用戶可以按需要,按圖層(Layer) 、顏色(color) 、
線形(Linetype) 、厚度( Thickness) 、塊名( Text ) 等
分類轉換,也可以要求提取部分感興趣的數據,用
戶不必了解DWG 數據的存儲格式,只需編輯轉換
文件,程序就可以根據轉換文件,提取不同的數據
并轉為Shape 格式。本程序已經過實際的驗證,結
果較好。因此,對于DWG 轉為Shape 數據有一定
的意義。
參考文獻
1 薛偉. MapObject 地理信息系統程序設計[M] . 北京:國
防工業出版社,2004
2 田鵬波,劉清. AutoCAD 到Map Info 的地形圖轉換[J ] .
城市勘測, 2003 (1) : 32 - 34
3 劉光,劉小東. 地理信息系統二次開發教程- VB. net 和
Mapobject 實現[M] . 北京:清華大學出版社,2004
4 王鈺. 用VBA 開發AutoCAD 應用程序[M] . 北京:人
民郵電出版社,1999 : 97 - 145
總結
以上是生活随笔為你收集整理的cad转shp 奥维_CAD转化为Shp的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [笔记] GPGPU-SIM的使用说明(
- 下一篇: DNS欺骗攻击和防护