前端自动识别CAD图纸提取信息方法总结
前言
CAD图纸自动识别和提取信息具有许多意义,包括以下几个方面:
提高工作效率:传统上,对于大量的CAD图纸,人工识别和提取信息是一项耗时且繁琐的任务。通过自动化这一过程,可以大大提高工作效率,节省时间和人力资源。
减少错误和精度提升:人工处理CAD图纸容易出现错误,例如错读数字或忽略细节。自动识别可以减少这些人为错误,并提高数据提取的准确性和精度。
快速获取信息:对于需要从大量CAD图纸中获取特定信息的项目或任务来说,自动识别可以快速提取所需的数据,而无需人工逐个查找和处理。
数据整合和分析:自动提取的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)遍历图中所有的矩形,获取所有的矩形范围
(2) 因为有时候矩形是由四条线所组成的,所以需要获取图中所有的水平线和垂直线,然后判断能否组成矩形
(3)对所有获取的矩形进行判断,如果这个矩形没有被其他矩形所包含了,则以为是子图的图框。
这个之前的博文进行了详细的介绍,可参考原文:
在线体验和源码地址:https://vjmap.com/demo/#/demo/map/service/22findsubmapsplit
方法四:通过图像相似性来识别
应用场景:对于无法或不方便通过图形查询坐标及属性方法来进行识别的对象,可以利用图像的相似性来进行识别。
图像相似性算法是指用于比较和判断两个或多个图像之间相似度的算法。下面列举了一些常见的图像相似性算法:
感知哈希算法(Perceptual Hashing):该算法通过计算图像的哈希值,将图像转化为一个固定长度的二进制串,然后通过比较哈希值的差异来评估图像的相似度。
结构相似性算法(Structural Similarity):结构相似性算法基于人眼感知的原理,通过比较图像的结构、纹理和亮度等特征,给出一个相似度的评分。
均值哈希算法(Average Hashing):均值哈希算法通过将图像缩小为固定大小的低分辨率图像,并计算图像的平均像素值,然后将每个像素与平均值进行比较,生成一个二进制串作为图像的哈希值,通过比较哈希值的差异来评估图像的相似度。
欧氏距离算法(Euclidean Distance):欧氏距离算法通过计算两个图像像素之间的欧氏距离来评估它们的相似度。较小的距离表示两个图像更相似。
余弦相似度算法(Cosine Similarity):余弦相似度算法通过计算两个图像的向量之间的夹角余弦值来评估它们的相似度。较大的余弦值表示两个图像更相似。
归一化交叉相关算法(Normalized Cross-Correlation):归一化交叉相关算法通过计算两个图像之间的交叉相关性来评估它们的相似度。较大的相关性表示两个图像更相似。
具体流程为:
(1)通过提供的WMS服务把图形数据转化为图像数据
(2) 对图像数据进行相似性判断
(3)把判断结果的像素坐标数据转化为图形坐标数据进行显示
以下图为例

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

在线体验和源码地址:https://vjmap.com/demo/#/demo/map/service/32mapmatchobject
方法五: 通过AI机器深度学习来识别
应用场景: 对于一些复杂的对象,大小不太一样,旋转、缩放也不太一致的复杂的对象,这时候可以用深度学习自己去训练模型,用AI的方式来进行识别。
实现过程同方法四, 通过提供的WMS服务把图形数据转化为图像数据,再把图像在深度学习框架中进行目标检测,获取相应的坐标数据进行预测显示。
因为深度学习框架我们没有进行封装,需要客户自行实现,这里不再举例。
总结
CAD图纸自动识别和提取信息是一个复杂的任务,涉及CAD文件解析、规律总结、业务理解、图像处理、模式识别等领域的知识。您可能需要结合多种技术和方法,根据具体情况进行调整和改进。
前端自动识别CAD图纸提取信息方法总结的更多相关文章
- CAD图纸怎么看?这两种方法值得看
在CAD日常的工作中,每天都是需要接触到CAD图纸文件,有一些房屋设计.建筑施工图.室内家具设计图纸等,这些CAD图纸的格式均为dwg格式的.是不能够直接进行打开查看的,需要借助CAD看图软件来使用. ...
- 如何在CAD中批量打印图纸?这种方法你要知道
CAD图纸都是使用CAD制图软件进行设计出来的,图纸的格式均为dwg格式的,不方便进行使用.就需要将图纸进行打印出来.多张CAD图纸如果一张一张进行打印速度就会非常的慢,那就可以使用CAD中的批量打印 ...
- 如何在网页打开CAD,DWG文件,(在线CAD)在线CAD平台,H5前端显示CAD,网页CAD
简介 提示:目前提供两种在网页中浏览编辑CAD图纸方案,详细说明见:https://help.mxdraw.com/?pid=46 提示:MxDraw云图在线API教程:https://demo.mx ...
- 如何在Web前端实现CAD图文字全文搜索功能之技术分享
现状 在CAD看图过程中我们经常会需要用到查找文字的功能,在AutoCAD软件查找一个文字时,可以通过打开左下角输入命令find,输入查找的文字,然后设置查找范围,就可以搜索到需要查询的文字.但在We ...
- 高德地图与CAD图叠加显示方法汇总及优缺点分析
前言 高德地图应用在许多领域,平常我们用的地图导航,除过正常的地图导航指引功能之外,其实还有很多实用的功能.如高德影像地图应用在包括地理.土地测量.水文学.生态学.气象学以及海洋学等方面.Auto ...
- 按照excel文档中的内容在当前cad图纸中自动排布实体
本例实现的主要功能是读取excel文档中的内容,其次是将按照读取的信息在当前cad图纸中添加相应的实体.下面先介绍实现代码: CString excelPath; //外部excel文档的地址 Upd ...
- 【学习】Python进行数据提取的方法总结【转载】
链接:http://www.jb51.net/article/90946.htm 数据提取是分析师日常工作中经常遇到的需求.如某个用户的贷款金额,某个月或季度的利息总收入,某个特定时间段的贷款金额和笔 ...
- 如何在CAD图纸中进行线性标注
在CAD中,都会在图纸中进行CAD标注,一般都是有CAD标注样式.CAD标注文字等.那其中有一个就是CAD线性标注?可以标注图纸间的距离?那如何在CAD图纸中进行线性标注呢?具体要怎么来进行操作?本篇 ...
- CAD 批量提取点坐标,实现坐标的快速提取
原创 CAD 批量提取点坐标,实现坐标的快速提取 2018-08-07 20:36:13 caohongji 阅读数 13678 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议 ...
- Python 抓取网页并提取信息(程序详解)
最近因项目需要用到python处理网页,因此学习相关知识.下面程序使用python抓取网页并提取信息,具体内容如下: #---------------------------------------- ...
随机推荐
- 使用Vue脚手架
关于不同版本的Vue: vue.js与vue.runtime.xxx.js的区别: (1) vue.js是完整版的Vue,包含: 核心功能+模板解析器 (2) vue.runtime.xxx.js是运 ...
- springboot 接入 ChatGPT
项目地址 https://gitee.com/Kindear/lucy-chat 介绍 lucy-chat是接入OpenAI-ChatGPT大模型人工智能的Java解决方案,大模型人工智能的发展是不可 ...
- 在 Rainbond 上使用 Curve 云原生存储
Curve 是网易主导自研的现代化存储系统, 目前支持文件存储(CurveFS)和块存储(CurveBS). CurveBS 的核心应用场景主要包括: 虚拟机/容器的性能型.混合型.容量型云盘或持久化 ...
- [Linux]Xmanager+Xshell远程管理桌面版CentOS物理服务器的桌面版CentOS虚拟机
1 需求/背景 在项目现场有这么一个情况,有1台Gnome版的CentOS的物理服务器,其内运行了2台通过vmware安装的Gnome桌面版的CentOS的虚拟服务器. 按照常规做法是: 将唯一的1台 ...
- 四月二十七日java基础知识
1.多线程的主要目的是讲一个程序中的各个"程序段"并发化2.并行执行通常表示为同一时刻有多个代码在处理器上执行3.并发执行通常表示为在单个处理器上,同一时刻只执行一个代码,但在一个 ...
- 在IIS 搭建FTP站点
最近在项目中需要用到FTP,需要将生成的文件通过FTP上传网站. 在此记录下. FTP SSL设置,需要允许SSL连接. FTP 身份验证,匿名身份验证需要启用. FTP 授权规则,如果没有特殊情况允 ...
- day134:2RenMJ:TypeScript的抽象类&装饰器&命名空间&模块&编译配置文件&python中的类型注解
目录 1.抽象类 2.装饰器 3.命名空间 4.模块 5.编译配置文件 6.python的类型注解 1.抽象类 抽象类(abstract class)做为其它派生类的基类使用. 它们一般不会直接被实例 ...
- handler+looper+messagequeue源码解析
https://www.jianshu.com/p/b4d745c7ff7ahandler机制源码1.handler机制的作用在多线程的场景中,将子线程中需要更新UI的操作信息传递到UI主线程.多个线 ...
- Redis 数据类型 Set
Redis 数据类型 Set(集合) Redis 常用命令,思维导图 >>> Redis 的 Set 是 String 类型的无序集合.集合成员是唯一的,这就意味着集合中不能出现重复 ...
- 论文解读(PAWS)《Semi-Supervised Learning of Visual Features by Non-Parametrically Predicting View Assignments with Support Samples》
论文信息 论文标题:Semi-Supervised Learning of Visual Features by Non-Parametrically Predicting View Assignme ...