1. 程式人生 > 其它 >CAD圖DWG解析WebGIS視覺化技術分析總結

CAD圖DWG解析WebGIS視覺化技術分析總結

AutoCAD是私有格式,只能在CAD軟體上編輯檢視,如何釋出至Web上,並在上面做應用開發,如資料展示,GIS分析等,一直是業內頭疼的事情,文章介紹了一些常用的CAD圖DWG解析WebGIS視覺化技術方法

背景

AutoCAD是國際上著名的二維和三維CAD設計軟體,用於二維繪圖、詳細繪製、設計文件和基本三維設計。現已經成為國際上廣為流行的繪圖工具。.dwg檔案格式成為二維繪圖的事實標準格式。

但由於AutoCAD私有格式,只能在CAD軟體上編輯檢視,如何釋出至Web上,並在上面做應用開發,如資料展示,GIS分析等,一直是業內頭疼的事情。

解析DWG格式

DWG與DXF
DWG格式檔案是Auto CAD 軟體的專有格式,類似於doc,是封閉的不開放的,且是二進位制的。而 DXF 格式則是文字格式的,用於交換資料的,使用Auto CAD軟體本身就可將 DWG檔案另存為 DXF檔案。

現有的能解析DWG格式的開源 CAD專案:
1、FreeCAD:開源,2D支援較好,對DXF支援較好。

需要使用 TeighaFileConverter(商業軟體)將 DWG格式轉換為 DXF格式。因為 FreeCAD 基本不支援DWG格式。

參考:https://www.freecadweb.org/wiki/index.php?title=FreeCAD_and_DWG_Import

  1. 其它 github 解析、瀏覽CAD檔案的一些專案,未驗證是否有效:
    https://github.com/LibreCAD/LibreCAD
    https://github.com/janopontarollo/DXF2JSON
    https://github.com/wanttobeno/dwg2dxf
    https://github.com/apendua/dxf2svg


    https://github.com/haplokuon/netDxf
    https://github.com/mozman/ezdxf

  2. 採用OpenDwg Toolkit實現對DWG檔案的解析。由於ObjectDBX應用程式只能在Windows平臺上採用Visual C++來開發,而網路應用開發環境要比AutoCAD單個軟體執行的環境要複雜的多。OpenDwg Toolkit簡稱ODT。

  3. GDAL中也部分支援dwg. https://gdal.org/drivers/vector/dwg.html

解析完dwg檔案是很重要的第一步,那如何Web展示?
下面就一些常見的方法做下分析和總結:

Web展示方法

方法根據實現的方式不同,大致可以分為兩類:

有外掛ActiveX方式

ActiveX控制元件是MicrosoftActiveX技術的一部分。是一種很早的技術。只能適合於windows平臺。

實現原理大致是:

解析AutoCAD圖形繪製,並封裝成AcitveX控制元件,用於PC端和Web端顯示。比較典型的有夢想CAD控制元件

優點:效能好,功能全,能編輯二次開發
缺點:Web端需要安裝外掛,只支援windows,而Chrome已不再支援ActiveX技術,同時無法利用html5做展示效果,效果一般

無外掛Html5方式

HTML5是網際網路的下一代標準,是構建以及呈現網際網路內容的一種語言方式.被認為是網際網路的核心技術之一。

實現原理大致是:

解析AutoCAD圖形格式,然後轉成html5所能繪製的格式如svg,geojson,柵格瓦片,在前端渲染。

這塊如果從底層去實現,有很大的工作量。一般利用GIS生態圈的開源專案來搭建。

例如可以利用 GDAL把dwg或dxf格式導成shpGeoJson,後端利用 GeoServerMapServer釋出成服務,前端利用LeafletOpenLayers去展示。

技術棧:
後端 GeoServerMapServer
前端 LeafletOpenLayers

但CAD與GIS在資料結構上存在較大的差異,CAD資料型別較為豐富,支援簡單點、線、面、多義線、橢圓、塊、文字等多種資料型別,而轉換到GIS中,只轉換為點、線、面、註記等型別,這使得CAD圖形資料不能很好的滿足GIS的要求,如:CAD中的Text資料型別,直接轉換後只轉換為GIS中的Point。通過這種轉換去繪製,會導致和原始CAD圖形繪製不太一樣, 同時CAD裡面有線型、字型也會導致繪製上的差異性。

同時對於GIS而言,有個地理座標系的概念,而一些圖紙,如戶型圖等就沒有地理座標系的概念。

此方案優缺點如下:

優點:能利用GIS生態圈,容易實現;能利用html5做應用開發,開發簡單,效果好
缺點:存在著和真實CAD圖形繪製差異的問題;座標系也是個問題

結論

上述兩種方案各有利弊,前者主要應用於圖形的編輯展示,後面應用於基於圖形的視覺化開發展示。各有優缺點,貌似魚和熊掌不可兼得!

那有沒有一種方案,既能在Web端和真實CAD圖形繪製一樣,同時不能安裝外掛,也能利用html5做應用開發呢?

其實也是可以的。不過技術難度比較大。
實現原理大致是在後端解析CAD的圖形資料不進行轉換直接渲染,同時儲存圖形的幾何資料至空間資料庫用於以後查詢分析;前端不用安裝外掛,載入渲染出的柵格和向量資料,完美解決上述問題;
比較典型的有 唯傑地圖vjmap
具體原因細節可檢視 https://vjmap.com/guide/service.html

效果如下:

還有一個方案是利用AutoCAD的自有云產品 Autodesk Forge,能在瀏覽器中渲染 3D 和 2D 模型資料,不過其資料得儲存在AutoCAD公有云上。