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

效果如下:

image-20211013154837821

还有一个方案是利用AutoCAD的自有云产品 Autodesk Forge,能在浏览器中渲染 3D 和 2D 模型数据,不过其数据得保存在AutoCAD公有云上。

posted @ 2021-10-13 19:53  vjmap  阅读(4042)  评论(0编辑  收藏  举报