?

地質雷達襯砌檢測中一種快速添加里程的方法

2022-03-27 02:00蔣闖
科學與生活 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("http://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.

猜你喜歡
雙標里程雷達
純電動汽車續駛里程影響因素
我的“雙標”媽媽
心中的一桿秤
隱形飛機哪里躲
雙標等
雙標
班上的“小雷達”
信用卡積分如何 兌換航空里程數?
能分身的雷達
數學(一)
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合