APP下载

地质雷达衬砌检测中一种快速添加里程的方法

2022-03-27蒋闯

科学与生活 2022年2期
关键词:双标里程雷达

蒋闯

摘 要:地质雷达法作为一种高效的无损检测手段,在隧道工程质量检测中得到了广泛的应用。数据采集时,为了准确定位缺陷,一般采用单标和双标结合的打标方式,而数据归一化时又需要将双标去掉。另外检测时行进速度的变化,会使图像在归一化后拉伸或者压缩,不利于缺陷识别。本文分析了劳雷地质雷达文件结构,利用C#语言开发了自动添加里程信息工具,工具可以在不做归一化的基础上给图像加上里程,取得了较好的应用效果。

关键词:地质雷达,归一化,里程标记

1 引言

地质雷达法是一种高准确率、快速、高效的无损检测手段,它克服了传统抽样检测方法效率低、代表性差和对原有结构有破坏等缺陷,因此在隧道衬砌混凝土厚度、密实性、钢筋分布检测中得到了广泛的应用。使用地质雷达法进行隧道衬砌质量检测时,一般采用连续扫描的方式,为了准确定位缺陷“检测规程”要求每5-10m有一个里程标记[1]。在实际检测中,技术人员一般5m打一个标,采用单标和双标结合的方法进行标记,即遇到里程号为50或100结尾时使用双标,其它情况使用单标,这样当标记缺失时,可以利用双标来确定缺少的标记所在范围,并且不会对后续标记产生影响。但是这样做会导致数据无法直接进行归一化,需要去掉双标,并且归一化后图像的拉伸和压缩也不利于缺陷识别。因此快速识别标记、添加里程信息不仅能提高工作效率,也可以保证数据的分析质量。

2 里程标记分析

2.1 DZX文件分析

劳雷地质雷达的原始文件为DZT文件,当打开DZT文件时,分析軟件会自动创建一个同名的DZX文件,DZX文件结构见图2-1 。DZX文件中的Waypt表示里程标记节点,scan表示当前标记所在的道数,mark表示当前标记类型。对比归一化前和归一化后的DZX文件后发现归一化后Waypt节点中多了distance参数,且distance内容为当前里程。因此只要我们在原始DZX文件中里程标记节点加入distance参数,并赋值为里程,则分析软件就可以显示出来。

2.2 里程分析

隧道检测雷达文件命名一般以里程的方式,如DK437+250-DK436+950GDZ.DZT,文件名中包含测线的起止里程,有了起止里程后就可以计算文件中应有的里程标记数量。以64道/每秒的扫描速度和3-5 km/h的行进速度为例,5m至少应有385个扫描道,因此当DZX文件中里程标记的扫描道相差小于200道时,可以判断为双标。

3 程序实现

3.1 C#简介

C#(读作“See Sharp”)是一种新式编程语言,开发人员利用 C# 能够生成在 .NET 生态系统中运行的多种安全可靠的应用程序。C#是由C和C++衍生出来的一种安全的、稳定的、简单的、优雅的面向对象编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言[2]。

3.2 计算标记里程

使用“正则表达式”对测线里程信息进行提取,例如检测文件名为“DK437+250-DK436+950GDZ.DZT”,使用Regex.Match(str, @"\w{0,}D\w{0,}K")来匹配里程冠号将得到“DK”,使用Regex.Match(str,@"\d{1,}\+\d{1,}(\.*\d*)\-\d{1,}\+\d{1,}(\.*\d*)")来匹配起讫里程将得到“234+300-234+600”。

然后使用Regex.Split(str, "-")方法对匹配到的大小里程进行分割,得到起止里程后使用循环计算每5m一个里程标记的里程。

3.3 写入里程标记

劳雷的DZX文件实质上是一个xml文件,使用.net自带System.Xml库对DZX文件进讲读写。使用以下代码读取DZX文件中的标记信息。

XmlNamespaceManager nsMgr = new XmlNamespaceManager(xmldoc.NameTable);

nsMgr.AddNamespace("DZX", "www.geophysical.com/DZX/1.02");

XmlNodeList WayPtnodelist = xmldoc.SelectNodes("//DZX:WayPt", nsMgr);

List<XmlnodeEX> usermaklist = new List<XmlnodeEX>();

XmlNode lastnode = WayPtnodelist[1].SelectSingleNode("DZX:scan", nsMgr);

usermaklist.Add(new XmlnodeEX() { Xmlnode = lastnode, Tag = "1" });

for (int i = 2; i < WayPtnodelist.Count; i++)

{

XmlNode node = WayPtnodelist[i];

XmlNode scannode = node.SelectSingleNode("DZX:scan", nsMgr);

XmlNode marknode = node.SelectSingleNode("DZX:mark", nsMgr);

if (marknode == null || scannode == null)

{

continue;

}

if (marknode.InnerText == "User")

{

double scans = double.Parse(scannode.InnerText);

double lastscans = double.Parse(lastnode.InnerText);

if (scans - lastscans < 200)

{

usermaklist.Add(new XmlnodeEX() { Xmlnode = scannode, Tag = "2"});

}

else

{

usermaklist.Add(new XmlnodeEX() { Xmlnode = scannode, Tag = "1" });

}

lastnode = scannode;

}

}

return usermaklist;

將读取到的标记数量与计算应有的标记数量对比,如不相符则说明有漏标或者多标情况,程序可以给予相应的提示,并结束。如对比无误,则利用如下代码将标记里程写入DZX文件。

XmlDocument xmldoc = new XmlDocument();

xmldoc.Load(file_ul);

XmlNode waynode = usermaklist[j].Xmlnode.ParentNode;

XmlElement distancenode = xmldoc.CreateElement("distance", waynode.NamespaceURI);

distancenode.InnerText = lc.ToString();

waynode.AppendChild(distancenode);

xmldoc.Save(file_ul);

4 应用及结论

4.1 应用案例

以某隧道拱顶测线为例,如下图4-1所示,使用分析工具对“DK437+250-DK436+950GDZ.DZX”文件进行分析,分析完成后工具下方信息框给出分析结果。使用官方数据处理软件打开DK437+250-DK436+950GDZ.DZT文件,找到里程标记,分析软件显示如图4-2 。从图中可以看出,点击任何标记,标记里程则会显示在下方表格中,方便技术人员整理里程标记和缺陷判释。

4.2 结论

在实际检测过程中因为现场情况复杂,采集人员经常因为各种原因会漏掉标记,造成标记混乱,无法判断漏标位置。当技术人员发现缺陷后,一般只能够通过数里程标记的方式来确定位置,这种方式不仅费时、费力,而且易错。另外“归一化”操作会对检测数据进行压缩或拉伸,如果数据采集时行进速度变化较大,则“归一化”会使图像产生较大的畸变,并且“归一化”操作不支持单双标的标记方式。

本工具的开发,可以帮助技术人员快速厘清标记,发现缺陷后能迅速定位,大大提高了工作效率。

参考文献

[1] TB 10223-2004,铁路隧道衬砌质量无损检测规程 [S]

[2]李凌. C#程序设计教程[M]. 辽宁大学出版社, 2013.

猜你喜欢

双标里程雷达
纯电动汽车续驶里程影响因素
我的“双标”妈妈
心中的一杆秤
隐形飞机哪里躲
双标等
双标
班上的“小雷达”
信用卡积分如何 兑换航空里程数?
能分身的雷达
数学(一)