前言

CAD图纸自动识别和提取信息具有许多意义,包括以下几个方面:

  1. 提高工作效率:传统上,对于大量的CAD图纸,人工识别和提取信息是一项耗时且繁琐的任务。通过自动化这一过程,可以大大提高工作效率,节省时间和人力资源。

  2. 减少错误和精度提升:人工处理CAD图纸容易出现错误,例如错读数字或忽略细节。自动识别可以减少这些人为错误,并提高数据提取的准确性和精度。

  3. 快速获取信息:对于需要从大量CAD图纸中获取特定信息的项目或任务来说,自动识别可以快速提取所需的数据,而无需人工逐个查找和处理。

  4. 数据整合和分析:自动提取的CAD图纸信息可以与其他系统或软件集成,实现数据的整合和分析。这样,可以更好地理解和利用CAD数据,为决策和规划提供支持。

通过CAD图纸自动识别和提取信息有助于提高效率、快速自动的获取数据信息及提高获取信息的质量,那么怎么样才能在前端自动识别和提取CAD图纸信息呢?

思路

以下图中的一个停车场的CAD图纸为例,怎么样自动识别CAD图所有停车位,获取每个停车位的位置及所有停车位个数呢?

一般识别的方法和流程为:

  • 观察CAD图纸:仔细查看CAD图纸,查找可能代表停车位的图形或符号。这可能是表示一些特定图标、标识或标记。例如此图中停车位都是一个矩形

  • 检查图例和标注:CAD图纸通常包含图例或标注,用于解释不同元素的含义。检查图例和标注,看是否提供了关于要识别的说明或标识。例如此图中矩形的里面都包含了停车线的一个符号。

  • 使用CAD的选择和查询功能:利用CAD选择和查询图形的功能,使您能够选择图纸上的特定对象并查看其属性。使用这些工具选择可能的工位对象,并查看其属性以获取更多信息。

  • 检查图层和图纸结构:CAD图纸通常使用不同的图层来组织不同类型的元素。查看图层列表,并查找与工位相关的图层。如果有多个图层包含工位信息,您可以逐个查看这些图层以找到工位对象。

  • 参考CAD标准和惯例:CAD绘图通常遵循一些标准和惯例,其中包括特定的符号和图形表示要识别的内容。

对于一些不能通过图形识别出来的CAD图,可以利用图像识别的方法。例如

  • 图像处理和模式识别:使用图像处理技术,例如边缘检测、轮廓提取和形状识别,来分析CAD图像中的对象。您可以使用计算机视觉库,如OpenCV,来实现这些功能。

  • 机器学习和深度学习:利用机器学习和深度学习算法,您可以训练模型来自动识别CAD图像中的对象。这种方法涉及将大量标记CAD图像用作训练数据,然后使用这些数据来训练分类器或卷积神经网络(CNN)。训练完成后,您可以将新的CAD图像输入已训练好的模型,并让其自动预测识别对象的位置。

    以上面的CAD停车场CAD图为例,我们可以通过以下步骤来识别来自动识别出CAD图中所有的停车位:

    (1)通过观察,我们发现所有的停车位都是”0"图层,并且实体为类型为多段线"AcDbPolyline"

    (2) 我们在前端通过CAD数据查询,查询出”0“图层的所有多段线。结果如下

    (3)通过查询到的数据我们发现,我们把所有停车位都找出来了。但是查到的数据中还包含我们不想要的数据(停车位中间的停车线也查询出来了)。所以我们需要对查询的数据做下过滤出线为矩形形状的线(五个点)

    (4) 这样,我们就把所有停车位都自动找出来了。我们可以获取停车位坐标的中心点,加个车符号,看下效果。效果如下:

    上面示例的体验地址和视频教程如下

    https://vjmap.com/app/visual/#/edit?key=sys_be517afb&isLocal=false

    唯杰地图可视化之停车场路径规划 https://www.bilibili.com/video/BV1oX4y1r7L3/

前端CAD图纸自动识别实现总结

方法一:自动通过要识别对象的CAD属性数据来识别

应用场景: 数据很有规律,直接通过观察CAD图中的对象的属性如实体的图层颜色实体类型面积属性填充符号是否是同一个块等就可以自动识别出要识别的对象。

以上面的停车场CAD为例,我们再仔细观察,看下停车位的面积大小是一样的,如下图

我们可以在查询时,可以直接通过“实体类型”为多段线“实体图层”为“0“实体面积“为12720000来直接查询出所有的停车位数据

方法二: 通过CAD属性数据和相关业务规则来识别

应用场景: 对于不能直接通过属性数据来识别出的对象,如果在图上有相关联的可以识别的对象,可以先自动识别出好识别的对象,再利用业务规则识别出要真正需要识别的对象。

举例来说,以下图为例,我们想要识别出圆圈里面的所有标注的内容

如果我们直接识别图有所有的文字的时候,会有很多无关的文字,过滤不出真正想要的文字标识。

而在实际业务中,这个文字在圆里面的。所以,我们第一步,可以通过查询出图中所有同样大小的圆,确定圆的坐标和半径后,再查找圆内所有的文字就是我们所需要的文字标注了。效果如下:

在线体验和源码地址: https://vjmap.com/demo/#/demo/map/service/22findtextbyrules

方法三: 通过业务逻辑来识别

应用场景:对于一些特别复杂的场景,需要通过写相关的业务逻辑代码来实现。

以一键在Web端把CAD图自动分割成多张图纸并导出子图或图片为例,这需要通过业务逻辑自动把图中所有的子图查找出来。

自动分割图纸算法原理:

子图的特征为,外面有一个图框,如果能找出所有图中的图框,就能根据图框位置自动拆分出所有子图了。

而图框的最外面为矩形,同时这个图框矩形外面没有被其他矩形所包含了。

方法四:通过图像相似性来识别

应用场景:对于无法或不方便通过图形查询坐标及属性方法来进行识别的对象,可以利用图像的相似性来进行识别。

图像相似性算法是指用于比较和判断两个或多个图像之间相似度的算法。下面列举了一些常见的图像相似性算法:

  1. 感知哈希算法(Perceptual Hashing):该算法通过计算图像的哈希值,将图像转化为一个固定长度的二进制串,然后通过比较哈希值的差异来评估图像的相似度。

  2. 结构相似性算法(Structural Similarity):结构相似性算法基于人眼感知的原理,通过比较图像的结构、纹理和亮度等特征,给出一个相似度的评分。

  3. 均值哈希算法(Average Hashing):均值哈希算法通过将图像缩小为固定大小的低分辨率图像,并计算图像的平均像素值,然后将每个像素与平均值进行比较,生成一个二进制串作为图像的哈希值,通过比较哈希值的差异来评估图像的相似度。

  4. 欧氏距离算法(Euclidean Distance):欧氏距离算法通过计算两个图像像素之间的欧氏距离来评估它们的相似度。较小的距离表示两个图像更相似。

  5. 余弦相似度算法(Cosine Similarity):余弦相似度算法通过计算两个图像的向量之间的夹角余弦值来评估它们的相似度。较大的余弦值表示两个图像更相似。

  6. 归一化交叉相关算法(Normalized Cross-Correlation):归一化交叉相关算法通过计算两个图像之间的交叉相关性来评估它们的相似度。较大的相关性表示两个图像更相似。

    具体流程为:

    (1)通过提供的WMS服务把图形数据转化为图像数据

    (2) 对图像数据进行相似性判断

    (3)把判断结果的像素坐标数据转化为图形坐标数据进行显示

    以下图为例

    如果图中的这个符号是同一个块的话,我们可以采用图形中判断是否是同一个块来自动识别。但如果绘制不规范,整个对象不是一个块时,就不太方便通过属性数据来自动识别了。这时候我们可以采用图像识别的方法,效果如下:

    在线体验和源码地址:https://vjmap.com/demo/#/demo/map/service/32mapmatchobject

方法五: 通过AI机器深度学习来识别

应用场景: 对于一些复杂的对象,大小不太一样,旋转、缩放也不太一致的复杂的对象,这时候可以用深度学习自己去训练模型,用AI的方式来进行识别。

实现过程同方法四, 通过提供的WMS服务把图形数据转化为图像数据,再把图像在深度学习框架中进行目标检测,获取相应的坐标数据进行预测显示。

因为深度学习框架我们没有进行封装,需要客户自行实现,这里不再举例。

总结

CAD图纸自动识别和提取信息是一个复杂的任务,涉及CAD文件解析、规律总结、业务理解、图像处理、模式识别等领域的知识。您可能需要结合多种技术和方法,根据具体情况进行调整和改进。

 

前端自动识别CAD图纸提取信息方法总结的更多相关文章

  1. CAD图纸怎么看?这两种方法值得看

    在CAD日常的工作中,每天都是需要接触到CAD图纸文件,有一些房屋设计.建筑施工图.室内家具设计图纸等,这些CAD图纸的格式均为dwg格式的.是不能够直接进行打开查看的,需要借助CAD看图软件来使用. ...

  2. 如何在CAD中批量打印图纸?这种方法你要知道

    CAD图纸都是使用CAD制图软件进行设计出来的,图纸的格式均为dwg格式的,不方便进行使用.就需要将图纸进行打印出来.多张CAD图纸如果一张一张进行打印速度就会非常的慢,那就可以使用CAD中的批量打印 ...

  3. 如何在网页打开CAD,DWG文件,(在线CAD)在线CAD平台,H5前端显示CAD,网页CAD

    简介 提示:目前提供两种在网页中浏览编辑CAD图纸方案,详细说明见:https://help.mxdraw.com/?pid=46 提示:MxDraw云图在线API教程:https://demo.mx ...

  4. 如何在Web前端实现CAD图文字全文搜索功能之技术分享

    现状 在CAD看图过程中我们经常会需要用到查找文字的功能,在AutoCAD软件查找一个文字时,可以通过打开左下角输入命令find,输入查找的文字,然后设置查找范围,就可以搜索到需要查询的文字.但在We ...

  5. 高德地图与CAD图叠加显示方法汇总及优缺点分析

    前言 ​ 高德地图应用在许多领域,平常我们用的地图导航,除过正常的地图导航指引功能之外,其实还有很多实用的功能.如高德影像地图应用在包括地理.土地测量.水文学.生态学.气象学以及海洋学等方面.Auto ...

  6. 按照excel文档中的内容在当前cad图纸中自动排布实体

    本例实现的主要功能是读取excel文档中的内容,其次是将按照读取的信息在当前cad图纸中添加相应的实体.下面先介绍实现代码: CString excelPath; //外部excel文档的地址 Upd ...

  7. 【学习】Python进行数据提取的方法总结【转载】

    链接:http://www.jb51.net/article/90946.htm 数据提取是分析师日常工作中经常遇到的需求.如某个用户的贷款金额,某个月或季度的利息总收入,某个特定时间段的贷款金额和笔 ...

  8. 如何在CAD图纸中进行线性标注

    在CAD中,都会在图纸中进行CAD标注,一般都是有CAD标注样式.CAD标注文字等.那其中有一个就是CAD线性标注?可以标注图纸间的距离?那如何在CAD图纸中进行线性标注呢?具体要怎么来进行操作?本篇 ...

  9. CAD 批量提取点坐标,实现坐标的快速提取

    原创 CAD 批量提取点坐标,实现坐标的快速提取 2018-08-07 20:36:13 caohongji 阅读数 13678   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议 ...

  10. Python 抓取网页并提取信息(程序详解)

    最近因项目需要用到python处理网页,因此学习相关知识.下面程序使用python抓取网页并提取信息,具体内容如下: #---------------------------------------- ...

随机推荐

  1. RTE2021 回顾丨实践中的摸爬滚打,AI OPS 落地之路

    本文整理自声网Agora SD - RTN 网络传输质量负责人于涛在 RTE2021 实时互联网大会上的演讲分享.他在演讲中针对传统 OPS 痛点.AI OPS 的优势以及 AI OPS 工程化的难点 ...

  2. 前端性能精进之浏览器(五)——JavaScript

    JavaScript 是一种通过解释执行的高级编程语言,同时也是一门动态.弱类型的直译脚本语言,适合面向对象(基于原型)和函数式的编程风格. 直译语言可以直接在解释器中运行,而与直译语言相对应的编译语 ...

  3. scp上传文件No such file or directory 问题

        问题描述 window使用scp复制文件到linux时报 No such file or directory 错误 解决办法 本地复制到Linux,win环境必须用绝对路径 上传成功

  4. 一些随笔 No.1

    耦合 耦合是一个设计与逻辑上的问题 例如一个软件有20个功能,删除任意一个功能对别的19个功能不造成影响,就是低耦合 如果删除一个功能后其他功能会失去完整性,那么就是高耦合 Difference be ...

  5. C语言结构体大小分析

    title: C语言结构体大小分析 author: saopigqwq233 date: 2022-04-05 C语言结构体大小分析 一,基本类型 C语言自带的数据类型大小如下 数据类型 大小(字节) ...

  6. [Linux]异常配置专题之重复配置的有效性:系统/环境变量 | hosts

    1 文由 在项目中经常遇到这种情况,1个hosts文件里同一IP 或 域名存在多个映射配置,那么到底哪个有效?环境变量亦有此问题. 问题本身不难,只是为了避免混淆,进行专门记录,以加深记忆. 2 ho ...

  7. [SpringBoot/JavaEE]SpringBoot启动与停用的4种方式

    SpringBoot版本: 2.1.6.RELEASE 1 启动 方式1 – IntelliJ IDEA - Windows 右键启动类SpringBootSampleApplication.java ...

  8. TS 导入导出那些事

    前言 最近用 TypeScript 写 npm 包,各种模块.命名空间.全局定义等等扰得我睡不着觉. 我便苦心研究,总结了几个比较冷门的,国内貌似基本上找不到资料的导入导出用法,顺便在其中又插入一些不 ...

  9. 性能最快的代码分析工具,Ruff 正在席卷 Python 圈!

    几天前,Python 开源社区又出了一个不小的新闻:HTTPX 和 Starlette 在同一天将在用的代码分析工具(flake8.autoflake 和 isort)统一替换成了 Ruff. HTT ...

  10. 多态 polymorphic

    多态是同一个行为具有多个不同表现形式,多态实现需要以下条件 继承父类并重写方法 父类引用指向子类对象:Animal a = new Cat(); 多态实例: //测试类 public class Te ...