蔣闖
摘 要:地質(zhì)雷達(dá)法作為一種高效的無(wú)損檢測(cè)手段,在隧道工程質(zhì)量檢測(cè)中得到了廣泛的應(yīng)用。數(shù)據(jù)采集時(shí),為了準(zhǔn)確定位缺陷,一般采用單標(biāo)和雙標(biāo)結(jié)合的打標(biāo)方式,而數(shù)據(jù)歸一化時(shí)又需要將雙標(biāo)去掉。另外檢測(cè)時(shí)行進(jìn)速度的變化,會(huì)使圖像在歸一化后拉伸或者壓縮,不利于缺陷識(shí)別。本文分析了勞雷地質(zhì)雷達(dá)文件結(jié)構(gòu),利用C#語(yǔ)言開發(fā)了自動(dòng)添加里程信息工具,工具可以在不做歸一化的基礎(chǔ)上給圖像加上里程,取得了較好的應(yīng)用效果。
關(guān)鍵詞:地質(zhì)雷達(dá),歸一化,里程標(biāo)記
1 引言
地質(zhì)雷達(dá)法是一種高準(zhǔn)確率、快速、高效的無(wú)損檢測(cè)手段,它克服了傳統(tǒng)抽樣檢測(cè)方法效率低、代表性差和對(duì)原有結(jié)構(gòu)有破壞等缺陷,因此在隧道襯砌混凝土厚度、密實(shí)性、鋼筋分布檢測(cè)中得到了廣泛的應(yīng)用。使用地質(zhì)雷達(dá)法進(jìn)行隧道襯砌質(zhì)量檢測(cè)時(shí),一般采用連續(xù)掃描的方式,為了準(zhǔn)確定位缺陷“檢測(cè)規(guī)程”要求每5-10m有一個(gè)里程標(biāo)記[1]。在實(shí)際檢測(cè)中,技術(shù)人員一般5m打一個(gè)標(biāo),采用單標(biāo)和雙標(biāo)結(jié)合的方法進(jìn)行標(biāo)記,即遇到里程號(hào)為50或100結(jié)尾時(shí)使用雙標(biāo),其它情況使用單標(biāo),這樣當(dāng)標(biāo)記缺失時(shí),可以利用雙標(biāo)來(lái)確定缺少的標(biāo)記所在范圍,并且不會(huì)對(duì)后續(xù)標(biāo)記產(chǎn)生影響。但是這樣做會(huì)導(dǎo)致數(shù)據(jù)無(wú)法直接進(jìn)行歸一化,需要去掉雙標(biāo),并且歸一化后圖像的拉伸和壓縮也不利于缺陷識(shí)別。因此快速識(shí)別標(biāo)記、添加里程信息不僅能提高工作效率,也可以保證數(shù)據(jù)的分析質(zhì)量。
2 里程標(biāo)記分析
2.1 DZX文件分析
勞雷地質(zhì)雷達(dá)的原始文件為DZT文件,當(dāng)打開DZT文件時(shí),分析軟件會(huì)自動(dòng)創(chuàng)建一個(gè)同名的DZX文件,DZX文件結(jié)構(gòu)見圖2-1 。DZX文件中的Waypt表示里程標(biāo)記節(jié)點(diǎn),scan表示當(dāng)前標(biāo)記所在的道數(shù),mark表示當(dāng)前標(biāo)記類型。對(duì)比歸一化前和歸一化后的DZX文件后發(fā)現(xiàn)歸一化后Waypt節(jié)點(diǎn)中多了distance參數(shù),且distance內(nèi)容為當(dāng)前里程。因此只要我們?cè)谠糄ZX文件中里程標(biāo)記節(jié)點(diǎn)加入distance參數(shù),并賦值為里程,則分析軟件就可以顯示出來(lái)。
2.2 里程分析
隧道檢測(cè)雷達(dá)文件命名一般以里程的方式,如DK437+250-DK436+950GDZ.DZT,文件名中包含測(cè)線的起止里程,有了起止里程后就可以計(jì)算文件中應(yīng)有的里程標(biāo)記數(shù)量。以64道/每秒的掃描速度和3-5 km/h的行進(jìn)速度為例,5m至少應(yīng)有385個(gè)掃描道,因此當(dāng)DZX文件中里程標(biāo)記的掃描道相差小于200道時(shí),可以判斷為雙標(biāo)。
3 程序?qū)崿F(xiàn)
3.1 C#簡(jiǎn)介
C#(讀作“See Sharp”)是一種新式編程語(yǔ)言,開發(fā)人員利用 C# 能夠生成在 .NET 生態(tài)系統(tǒng)中運(yùn)行的多種安全可靠的應(yīng)用程序。C#是由C和C++衍生出來(lái)的一種安全的、穩(wěn)定的、簡(jiǎn)單的、優(yōu)雅的面向?qū)ο缶幊陶Z(yǔ)言。它在繼承C和C++強(qiáng)大功能的同時(shí)去掉了一些它們的復(fù)雜特性(例如沒有宏以及不允許多重繼承)。C#綜合了VB簡(jiǎn)單的可視化操作和C++的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語(yǔ)法風(fēng)格、創(chuàng)新的語(yǔ)言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語(yǔ)言[2]。
3.2 計(jì)算標(biāo)記里程
使用“正則表達(dá)式”對(duì)測(cè)線里程信息進(jìn)行提取,例如檢測(cè)文件名為“DK437+250-DK436+950GDZ.DZT”,使用Regex.Match(str, @"\w{0,}D\w{0,}K")來(lái)匹配里程冠號(hào)將得到“DK”,使用Regex.Match(str,@"\d{1,}\+\d{1,}(\.*\d*)\-\d{1,}\+\d{1,}(\.*\d*)")來(lái)匹配起訖里程將得到“234+300-234+600”。
然后使用Regex.Split(str, "-")方法對(duì)匹配到的大小里程進(jìn)行分割,得到起止里程后使用循環(huán)計(jì)算每5m一個(gè)里程標(biāo)記的里程。
3.3 寫入里程標(biāo)記
勞雷的DZX文件實(shí)質(zhì)上是一個(gè)xml文件,使用.net自帶System.Xml庫(kù)對(duì)DZX文件進(jìn)講讀寫。使用以下代碼讀取DZX文件中的標(biāo)記信息。
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;
將讀取到的標(biāo)記數(shù)量與計(jì)算應(yīng)有的標(biāo)記數(shù)量對(duì)比,如不相符則說(shuō)明有漏標(biāo)或者多標(biāo)情況,程序可以給予相應(yīng)的提示,并結(jié)束。如對(duì)比無(wú)誤,則利用如下代碼將標(biāo)記里程寫入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 應(yīng)用及結(jié)論
4.1 應(yīng)用案例
以某隧道拱頂測(cè)線為例,如下圖4-1所示,使用分析工具對(duì)“DK437+250-DK436+950GDZ.DZX”文件進(jìn)行分析,分析完成后工具下方信息框給出分析結(jié)果。使用官方數(shù)據(jù)處理軟件打開DK437+250-DK436+950GDZ.DZT文件,找到里程標(biāo)記,分析軟件顯示如圖4-2 。從圖中可以看出,點(diǎn)擊任何標(biāo)記,標(biāo)記里程則會(huì)顯示在下方表格中,方便技術(shù)人員整理里程標(biāo)記和缺陷判釋。
4.2 結(jié)論
在實(shí)際檢測(cè)過(guò)程中因?yàn)楝F(xiàn)場(chǎng)情況復(fù)雜,采集人員經(jīng)常因?yàn)楦鞣N原因會(huì)漏掉標(biāo)記,造成標(biāo)記混亂,無(wú)法判斷漏標(biāo)位置。當(dāng)技術(shù)人員發(fā)現(xiàn)缺陷后,一般只能夠通過(guò)數(shù)里程標(biāo)記的方式來(lái)確定位置,這種方式不僅費(fèi)時(shí)、費(fèi)力,而且易錯(cuò)。另外“歸一化”操作會(huì)對(duì)檢測(cè)數(shù)據(jù)進(jìn)行壓縮或拉伸,如果數(shù)據(jù)采集時(shí)行進(jìn)速度變化較大,則“歸一化”會(huì)使圖像產(chǎn)生較大的畸變,并且“歸一化”操作不支持單雙標(biāo)的標(biāo)記方式。
本工具的開發(fā),可以幫助技術(shù)人員快速厘清標(biāo)記,發(fā)現(xiàn)缺陷后能迅速定位,大大提高了工作效率。
參考文獻(xiàn)
[1] TB 10223-2004,鐵路隧道襯砌質(zhì)量無(wú)損檢測(cè)規(guī)程 [S]
[2]李凌. C#程序設(shè)計(jì)教程[M]. 遼寧大學(xué)出版社, 2013.