前言

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. 63.C++类型转换

      类型转换(cast)是将一种数据类型转换成另一种数据类型.例如,如果将一个整型值赋给一个浮点类型的变量,编译器会暗地里将其转换成浮点类型.   转换是非常有用的,但是它也会带来一些问题,比如在转换 ...

  2. 数据库相关知识点整理,助力拿到心仪的offer

    1. 数据库的事务 1.1 什么是数据库事务? 事务是指一组逻辑上相关的操作,这些操作要么全部完成,要么全部不完成. 事务是数据库管理系统执行过程中的一个逻辑工作单位,是用户定义的一个操作序列,这些操 ...

  3. MySQL高可用架构-MMM、MHA、MGR、分库分表

    总结 MMM是是Perl语言开发的用于管理MySQL主主同步架构的工具包.主要作用:管理MySQL的主主复制拓扑,在主服务器失效时,进行主备切换和故障转移. MMM缺点:故障切换可能会丢事务(主备使用 ...

  4. CoordConv:给你的卷积加上坐标

    摘要:本文主要对CoordConv的理论进行了介绍,对其进行了复现,并展示了其在网络结构中的用法. 本文分享自华为云社区<CoordConv:给你的卷积加上坐标>,作者: 李长安. 一.理 ...

  5. Chrome浏览器插件 Undo Close Tab (恢复关掉的标签页)

    背景 如果您经常使用Chrome浏览器,也许有时候会意外关闭一个标签页,从而丢失您正在查看的内容.这时您可能会感到非常烦恼,并希望能够迅速找回这个标签页.当然,您可以通过点击浏览器历史记录中的条目来找 ...

  6. 二进制安装Kubernetes(k8s) v1.26.1 IPv4/IPv6双栈 可脱离互联网

    二进制安装Kubernetes(k8s) v1.26.1 IPv4/IPv6双栈 可脱离互联网 https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star ...

  7. Kubernetes 部署 MySQL 高可用读写分离

    Kubernetes 部署 MySQL 高可用读写分离 简介: 在有状态应用中,MySQL是我们最常见也是最常用的.本文我们将实战部署一个一组多从的MySQL集群. 一.配置准备 configMap ...

  8. Archlinux最新安装教程

    介绍 Arch Linux(或 Arch /ˈɑːrtʃ/))是一款基于 x86-64 架构的 Linux发行版 .系统主要由自由和开源软件组成,支持社区参与.系统设计以 KISS原则(保持简单和愚蠢 ...

  9. Java内部类的使用介绍详解

    前言 在之前讲解static静态内部类时,就给大家简单说过内部类的概念.但实际上,内部类并不是那么简单,所以今天我们需要对内部类进行专门地讲解和学习. 全文大约 [6500]字,不说废话,只讲可以让你 ...

  10. [Java/IDE]IDEA运行Java类时报错:Error running 'MainTest': Command line is too long. Shorten command line for MainTest or also for Application default configuration

    报错原因 Java项目启动命令过长 解决方法 点击项目启动配置项 -> shorten command line 选项选择 classpath file 或 java manifest 选项 - ...