CAD数据格式解析
CAD數據格式解析
CAD數據格式解析
- CAD數據格式解析
- 一.DXF文件的基本結構
- 1.DXF文件中的組碼
- 2.DXF文件中的標題組碼
- 3.DXF文件中的類組碼
- 4.DXF文件中的符號表組碼
- 5.DXF文件中的塊組碼
- 6.DXF文件中的圖元組碼
- 7.DXF文件中的對象組碼
- 二.AutoCAD 數據與 GIS數據的融合問題
??AutoCAD 是面向工程規劃、設計行業的圖形編輯軟件,側重于幾何圖形表達、可視化展示,其數據文件 DWG(或 DXF)中對幾何圖形的組織方式較為松散,且不具備空間拓撲關系。
??從底層自主開發轉換工具的難點有兩點:一是 DWG或 DXF 數據的解析,DWG 格式不公開,DXF 格式雖然公開,但自主解析難度較大;二是實現顧及符號化的語義級無損轉換。
目前解析CAD數據的基本思路:
??首先將DWG格式轉為DXF格式,然后利用netdxf(C#)實現dxf文件讀寫。
下面主要對DXF數據格式進行解析(主要參考官方文檔):
??DXF? 格式是 AutoCAD? 圖形文件中包含的所有信息的一種帶標記數據的表示方式。帶標記數據是指文件中的每個數據元素前面都帶有一個稱為組碼的整數。組碼的值表明了隨后的數據元素的類型。還指出了數據元素對于給定對象(或記錄)類型的含義。實際上,圖形文件中所有用戶指定的信息都可以用 DXF 格式表示。
一.DXF文件的基本結構
??DXF 文件本質上由代碼及關聯值對組成。代碼(通常稱為組碼)表明其后的值的類型。使用這些組碼和值對,可以將 DXF 文件組織到由記錄組成的區域中,這些記錄由組碼和數據項目組成。在 DXF 文件中,每個組碼和值都各占一行。
??每段都以一個后跟字符串 SECTION 的組碼 0 開始,其后是組碼 2 和表示該段名稱的字符串(例如,HEADER)。每段都由定義其元素的組碼和值組成。每段都以一個后跟字符串 ENDSEC 的組碼 0 結束。
DXF 文件完整的結構如下:
??HEADER 段。包含圖形的基本信息。它由 AutoCAD 數據庫版本號和一些系統變量組成。每個參數都包含一個變量名稱及其關聯的值。
??CLASSES 段。包含應用程序定義的類的信息,這些類的實例出現在數據庫BLOCKS、ENTITIES 和 OBJECTS 段中。類定義在類的層次結構中是固定不變的。
??TABLES 段。包含以下符號表的定義:
????APPID(應用程序標識表)
????BLOCK_RECORD(塊參照表)
????DIMSTYLE(標注樣式表)
????LAYER(圖層表)
????LTYPE(線型表)
????STYLE(文字樣式表)
????UCS(用戶坐標系表)
????VIEW(視圖表)
????VPORT(視口配置表)
??BLOCKS 段。包含構成圖形中每個塊參照的塊定義和圖形圖元。
??ENTITIES 段。包含圖形中的圖形對象(圖元),其中包括塊參照(插入圖元)。
??OBJECTS 段。包含圖形中的非圖形對象。除圖元、符號表記錄以及符號表以外的所有對象都存儲在此段。OBJECTS 段中的條目樣例是包含多線樣式和組的詞典。
??THUMBNAILIMAGE 段。包含圖形的預覽圖像數據。此段為可選。
1.DXF文件中的組碼
??組碼和關聯值定義對象或圖元的特定方面。緊接著組碼的一行是關聯值。該值可以是字符串、整數或浮點值,例如點的 X 坐標。組中第二行后面的行(如果存在)由組定義和與組關聯的數據確定。
??特殊組碼用作文件分隔符,例如用于表示段和表的開始和結束,以及文件本身結束的標記。
??圖元、對象、類、表和表條目以及文件分隔符通過 0 組碼(其后是用于描述該組的名稱)引入
??DXF 文件字符串的最大長度是 256 個字符。如果 AutoCAD 圖形中包含的字符串超出了此數字,則在執行 SAVE、SAVEAS 和 WBLOCK 時將截斷那些字符串。如果 DXF 文件包含的字符串超出了此長度,OPEN 和 INSERT 命令將失敗。
2.DXF文件中的標題組碼
以下是 DXF? 文件的 HEADER 區域的樣例:
3.DXF文件中的類組碼
以下是 DXF 文件 CLASSES 段的樣例:
4.DXF文件中的符號表組碼
以下是 DXF 文件 TABLES 段的樣例:
5.DXF文件中的塊組碼
以下是 DXF 文件 BLOCKS 段的樣例:
6.DXF文件中的圖元組碼
以下是 DXF 文件 ENTITIES 段的樣例:
7.DXF文件中的對象組碼
以下是 DXF 文件 OBJECTS 段的樣例:
二.AutoCAD 數據與 GIS數據的融合問題
(1)坐標系統AutoCAD 中的坐標系統和 GIS 中的坐標系統雖然都是笛卡爾坐標系,但其坐標系的意義不同。AutoCAD 中的坐標系原點是任意的,在工程規劃、設計中,可根據需求平移,整個圖形也可以同時平移,甚至旋轉、縮放,只要保證各圖形間的相對關系即可,對坐標的絕對值沒有特別要求。但在 GIS 中,特定坐標系的原點是固定的,一般情況下,不允許對地理要素進行平移、旋轉、縮放等,強調地理要素坐標絕對值的正確性。在 AutoCAD 數據向 GIS數據轉換過程中,就會造成 AutoCAD 數據坐標系與 GIS坐標系不一致的情況,在缺少同名點的情況下,很難實現坐標糾正,影響數據的融合和疊加。
(2)幾何類型
AutoCAD 中的幾何類型包括點、線段、多義線、弧、圓、注記、塊、形等類型,而 GIS 數據的類型一般只有點、線、面、注記(不考慮三維數據類型,如三角扇、面片、不規則格網等),很難通過一一對應的關系實現二者間幾何形狀的無損轉換。一般情況下,可能是多對一的關系,如AutoCAD 中閉合的多義線轉為 GIS 中的面,AutoCAD 中的弧轉為 GIS 中的線,AutoCAD 中的圓轉為 GIS 中的面等。在對幾何形體、長度、面積指標等要求較為精確的應用場景中(如精密工業測量、房產數據),通過 GIS 中的線擬合AutoCAD 中的弧,或 GIS 中的多邊形擬合 AutoCAD 中的圓,對節點的數量是有嚴格要求的,若節點數量過多,盡管可以精確擬合,但數據冗余大、占用過多的物理存儲空間;若節點數量過少,幾何形體、長度、面積指標等會造成損失,影響業務應用。
(3)空間拓撲
AutoCAD 中的幾何實體僅作為圖面表達而存在,只要滿足可視化和出圖需求即可,對幾何實體的空間拓撲關系沒有特殊要求,如封閉幾何形體的首尾節點不閉合、懸掛線、懸掛點等現象在 AutoCAD 中經常出現。而 GIS數據對空間拓撲要求較為嚴格,以上情況在 GIS 數據中可能被判定為不合格數據。因此,在數據融合過程中,若AutoCAD 數據的空間拓撲關系存在嚴重問題,會造成 AutoCAD 數據無法正確轉換成 GIS 數據。
(4)圖層分層
AutoCAD 中的圖層可以理解為幾何實體的容器,不同幾何類型的幾何對象都可以歸到一個圖層中,而 GIS 中的圖層要求內部的要素必須具有同樣的幾何類型和屬性結構。若 AutoCAD 下生產的數據對圖層規則定義與 GIS中的圖層不一致,則會給二者之間的轉換造成很大困難。
(5)屬性信息
AutoCAD 對屬性信息管理能力較弱,屬性信息在 AutoCAD 中有兩種表現形式:擴展屬性、文字注記。擴展屬性與單個幾何對象綁定,結構化特性不強;文字注記直接標注在圖面上,與要標注的幾何對象沒有建立強關聯關系。而 GIS 數據的屬性信息通過圖層的屬性表來定義,結構化特性強。兩種不同屬性信息表達方式,造成從 GIS 數據轉為 AutoCAD 數據,屬性信息可以無損地轉換過去,而
AutoCAD 數據轉為 GIS 數據,要逐個抽取幾何對象的擴展屬性,解析字段名和字段值,甚至要解析注記信息,工作量大且極易造成信息損失。
(6)符號系統
AutoCAD 中的符號系統通過線型文件、塊參照等方式表現,甚至直接用線劃來表現(如地形圖中陡坎要素),可以看出 AutoCAD 中的符號系統較為復雜,且幾何形體和符號間的界限模糊,AutoCAD 中的幾何形體可能是實際地物的骨架線,也有可能就是符號。而 GIS 中幾何形體和符號是分離的,幾何形體就是地物的骨架線,幾何形體通過 GIS 符號庫渲染后,形成可視化的地圖。要實現 AutoCAD 數據與 GIS 數據深度融合、真正的無損轉換,則需要解決二者之間的符號轉換和替換。
總結