趙振龍
(遼寧省水利水電勘測設(shè)計(jì)研究院有限責(zé)任公司,遼寧 沈陽 110006)
工程安全監(jiān)測作為工程管理工作的耳目,有助于及早發(fā)現(xiàn)工程中可能存在的問題與隱患,保障水工建筑物持久安全的運(yùn)行。對安全監(jiān)測數(shù)據(jù)進(jìn)行科學(xué)的整編分析,不僅可以使運(yùn)行人員及時(shí)掌握工程的運(yùn)行狀態(tài),而且對工程的安全預(yù)報(bào)、預(yù)警安全狀態(tài)估都起到重要支撐作用。某省重點(diǎn)輸供水工程由水源工程和輸水工程兩部分組成。安全監(jiān)測儀器設(shè)施裝與工程主體建筑施工同步進(jìn)行。監(jiān)測對象涵蓋有壓/無壓隧洞、壓力管線、取水口、調(diào)壓井、鎮(zhèn)支墩、高邊坡、各類閥井等要素。由于工程分4個(gè)分段建設(shè),各分段都建設(shè)了獨(dú)立的安全監(jiān)測系統(tǒng)且互不兼容,故工程運(yùn)行期需將4個(gè)分段的安全監(jiān)測數(shù)據(jù)進(jìn)行統(tǒng)一數(shù)據(jù)整編與分析,下面將結(jié)合實(shí)際項(xiàng)目,論述長距離調(diào)水工程安全監(jiān)測數(shù)據(jù)整編技術(shù)。
當(dāng)下安全監(jiān)測數(shù)據(jù)整編與分析工作很依賴信息化技術(shù)及系統(tǒng)提供商。由于系統(tǒng)提供商專業(yè)技術(shù)能力不足,其整編與分析往往存在深度不夠、針對性差等問題。傳統(tǒng)設(shè)計(jì)單位雖然專業(yè)分析能力強(qiáng),但由于工程設(shè)計(jì)人員信息化技術(shù)欠缺,面對海量數(shù)據(jù),往往束手無策。
本次數(shù)據(jù)整編與分析工作由具有豐富工程設(shè)計(jì)經(jīng)驗(yàn)及軟件開發(fā)技術(shù)的一線工作人員負(fù)責(zé),以解決上述矛盾。在整編過程中發(fā)現(xiàn)如下實(shí)際問題。
(1)由于工程安全監(jiān)測系統(tǒng)根據(jù)工程進(jìn)度分4段進(jìn)行建設(shè),各段工程特點(diǎn)不同、監(jiān)測對象不同,系統(tǒng)交付進(jìn)度不統(tǒng)一,導(dǎo)致如下問題:安全監(jiān)測數(shù)據(jù)較為分散;安全監(jiān)測數(shù)據(jù)記錄方式各異,例如數(shù)據(jù)庫、Excel文件、報(bào)告等;各系統(tǒng)數(shù)據(jù)庫表單結(jié)構(gòu)差異大,例如命名方式、單位、Excel數(shù)據(jù)格式樣式等。
(2)安全監(jiān)測儀器數(shù)量及種類多,導(dǎo)致數(shù)據(jù)處理量大,具統(tǒng)計(jì)監(jiān)測數(shù)據(jù)總條目高達(dá)3000多萬。
(3)部分儀器采集頻次過高,單儀器數(shù)據(jù)條目數(shù)可達(dá)百萬,導(dǎo)致原有安全監(jiān)測系統(tǒng)監(jiān)測過程線生成時(shí)會系統(tǒng)崩潰;大量儀器上傳Null值,導(dǎo)致安全監(jiān)測過程線生成出現(xiàn)故障。
(4)數(shù)據(jù)庫儀器表單、監(jiān)測數(shù)據(jù)表單、安全監(jiān)測通水驗(yàn)收報(bào)告在儀器個(gè)數(shù)上存在出入,個(gè)別名稱存在差異。
(5)水位、流量采集時(shí)間不統(tǒng)一,不利于日后水位流量關(guān)系分析。
綜上,同時(shí)考慮傳統(tǒng)Excel方式處理海量數(shù)據(jù)效率低下問題,本次數(shù)據(jù)整編采用數(shù)據(jù)庫及部分?jǐn)?shù)據(jù)治理相關(guān)技術(shù)。為方便分析階段儀器信息查詢、過程線查詢、水位分析、糙率分析、安全評估等相關(guān)工作的進(jìn)行,在完成數(shù)據(jù)整編處理的同時(shí)需對監(jiān)測數(shù)據(jù)進(jìn)行可視化。
為減少技術(shù)棧、精簡人員投入、降低學(xué)習(xí)成本、提升效率,本次整編主要基于單一語言JavaScript展開。數(shù)據(jù)處理采用數(shù)據(jù)庫+NodeJS,可視化系統(tǒng)后端采用Postgres+NodeJS+express框架,可視化系統(tǒng)前端框架主要采用Vue+element-plus框架,具體數(shù)據(jù)整編技術(shù)框架如圖1所示。
圖1 數(shù)據(jù)整編技術(shù)框架
本次整編通過6個(gè)維度考量監(jiān)測儀器運(yùn)行狀態(tài),并按段整理成表格存入數(shù)據(jù)庫。6個(gè)維度分別為監(jiān)測儀器信息統(tǒng)計(jì)表、監(jiān)測儀器末端時(shí)間統(tǒng)計(jì)表、儀器在線率統(tǒng)計(jì)表、Null值表、儀器超量程統(tǒng)計(jì)表、特征值統(tǒng)計(jì)表。
考慮部分安全監(jiān)測儀器采集頻次過高,單儀器數(shù)據(jù)條目數(shù)可達(dá)十幾萬~上百萬,為方便可視化系統(tǒng)生成過程線,對監(jiān)測數(shù)據(jù)進(jìn)行了抽稀。為了提高抽稀數(shù)據(jù)的代表性,抽稀原則為按天抽稀,并提取每天最大值及最小值,生成監(jiān)測數(shù)據(jù)簡化表,并存儲入庫。
本次數(shù)據(jù)整編,部分工程段有較為完善的水位流量監(jiān)測數(shù)據(jù),為了解水位與流量的對應(yīng)關(guān)系,便于日后的糙率分析,本次整編提取提取每日12∶00時(shí)刻的水位與流量數(shù)據(jù)并建表入庫。鑒于水位與流量監(jiān)測儀器數(shù)據(jù)上傳時(shí)間不統(tǒng)一,大量數(shù)據(jù)上傳時(shí)刻并不嚴(yán)格卡在12∶00,本次數(shù)據(jù)提取采樣區(qū)間為11∶50—12∶10,以區(qū)間內(nèi)的平均值代表12∶00時(shí)刻的水位與流量數(shù)據(jù)。
各類表單含義如下。
(1)監(jiān)測儀器信息表(DmList)。各類監(jiān)測儀器相關(guān)信息的統(tǒng)計(jì)表,包括段、采集站、斷面、儀器名稱、儀器類型、量程等相關(guān)信息,其中IsNoData列表征整編起始時(shí)間后該儀器是否有數(shù)據(jù),為TRUE表征為無數(shù)據(jù)。
(2)斷面信息表(DmInfo)。各個(gè)監(jiān)測斷面的相關(guān)信息的統(tǒng)計(jì)表。包括監(jiān)測斷面安裝圖(記錄url地址數(shù)組),斷面地質(zhì)信息。
(3)監(jiān)測儀器末端時(shí)間統(tǒng)計(jì)表(LastDateList)。儀器最后一次上傳數(shù)據(jù)時(shí)間的統(tǒng)計(jì)表。
(4)儀器在線率統(tǒng)計(jì)表(RadioList)。整編時(shí)間內(nèi)儀器在線率的統(tǒng)計(jì)表,其中Ratio1列表示儀器在整個(gè)整編時(shí)間區(qū)間內(nèi)儀器在線天數(shù)占比,Ratio2表示整編開始時(shí)間至儀器最后一次上傳數(shù)據(jù)時(shí)間區(qū)間內(nèi)在線天數(shù)占比。
(5)Null值表(NullList)。整編時(shí)間內(nèi)儀器上傳空數(shù)據(jù)的次數(shù)的統(tǒng)計(jì)表。
(6)儀器超量程統(tǒng)計(jì)表(OverRangeList)。整編時(shí)間內(nèi)儀器上傳超儀器量程數(shù)據(jù)的次數(shù)的統(tǒng)計(jì)表。
(7)特征值統(tǒng)計(jì)表(TeZhengZhiList)。整編時(shí)間內(nèi)儀器各類特征值表,包括平均值、最大值、最小值、方差。
(8)監(jiān)測數(shù)據(jù)按天簡化表(JianceDataSimplify)。整編時(shí)間內(nèi)儀器每天上傳數(shù)據(jù)的最大值與最小值統(tǒng)計(jì)表。
(9)水位流量數(shù)據(jù)表(waterList)。提取有數(shù)據(jù)的水位與流量數(shù)據(jù),每日12∶00∶00時(shí)刻的水位、流量等數(shù)據(jù)的表格。
儀器最后一次上傳數(shù)據(jù)時(shí)間遠(yuǎn)小于或大于整編末尾時(shí)間、儀器上傳Null次數(shù)過多、儀器上傳超量程數(shù)據(jù)過多、儀器在線天數(shù)過低均為可能存在問題的儀器。
對于有安全監(jiān)測系統(tǒng),并有安全監(jiān)測數(shù)據(jù)庫的監(jiān)測段直接拷貝完整數(shù)據(jù)庫文件進(jìn)行入庫。
對于提供海量Excel數(shù)據(jù)的監(jiān)測段,需將Excel數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫中,然后進(jìn)行提取分析。
導(dǎo)入數(shù)據(jù)庫生成的字段名及格式如圖2所示。
圖2 數(shù)據(jù)入庫格式信息
以導(dǎo)入Excel數(shù)據(jù)為例,其中SensorCode為儀器編號,SensorName為儀器名稱,Time為儀器上傳數(shù)據(jù)時(shí)間,F(xiàn)1~F9為各儀器回傳的數(shù)據(jù),如基本模數(shù)、基準(zhǔn)溫度、靈敏度系數(shù)、測值等,不同類型儀器F1~F9的所代表的含義存在一定差異。本次數(shù)據(jù)導(dǎo)入工具為開源軟件DBeaver。
儀器信息表梳理是整編工作能否順利進(jìn)行的重要前提,后續(xù)各儀器的數(shù)據(jù)整理都需要遍歷查詢儀器信息表。對于施工期監(jiān)測或臨時(shí)監(jiān)測等環(huán)節(jié)存在各段通水驗(yàn)收報(bào)告中儀器個(gè)數(shù)和數(shù)據(jù)庫中的儀器個(gè)數(shù)不一致的情況,為保證整編儀器的唯一性,本工程整編以數(shù)據(jù)庫中監(jiān)測數(shù)據(jù)表(存儲所有儀器監(jiān)測數(shù)據(jù)的表單)中所包含的儀器數(shù)據(jù)為準(zhǔn)。為保證表中各個(gè)字段內(nèi)容、單位的準(zhǔn)確性,表單內(nèi)容需要與監(jiān)測驗(yàn)收報(bào)告、監(jiān)測竣工圖等相互校對。
儀器信息表主要字段包括段(duan)、采集站(caijizhan)、斷面(duanmian)、儀器編號(sensorcode)、儀器名稱(sensorname)、斷面位置(location)、量程(range)、單位(unit)、與量程相關(guān)的結(jié)果在所有儀器上傳的數(shù)據(jù)表中的字段名(rangeres)、與監(jiān)測值相關(guān)的結(jié)果在所有儀器上傳的數(shù)據(jù)表中的字段名(res)、整編時(shí)間段內(nèi)儀器是否有數(shù)據(jù)(isnodata)等。
本表的梳理主要依靠人工完成。但對于表單isnodata字段內(nèi)容需通過編寫代碼進(jìn)行實(shí)現(xiàn)。示例代碼如下:
// 1 查詢數(shù)據(jù)庫中沒有數(shù)據(jù)的儀器
(async()=> {
await sql.connect(sqlConfig);
const result=await sql.query(
"select SensorCode from SensorDate sd group by SensorCode"
);
for(let item of result.recordset){
sql
.query(`select * from DmList where SensorCode='${item.SensorCode}`)
.then((res)=> {
if(!Object.values(res.recordset[0])[0]){
arr.push(item);
NoDataList.create(item);
}
});
}
})();
// 2 在DmList中標(biāo)記哪些無數(shù)據(jù)
(async()=> {
await sql.connect(sqlConfig);
const result=await sql.query("select SensorCode from NoDataList");
for(let item of result.recordset){
await DmList.update(
{ IsNoData:"true" },
{ where:{ SensorCode:item.SensorCode } }
);
}
})();
斷面信息表主要整編各個(gè)監(jiān)測斷面的相關(guān)信息。通過唯一的斷面號,實(shí)現(xiàn)與儀器信息表的關(guān)聯(lián)查詢。斷面信息表主要內(nèi)容包括監(jiān)測斷面安裝圖(記錄url地址數(shù)組)、斷面地質(zhì)信息。
在整編完成儀器信息表的基礎(chǔ)上,將監(jiān)測儀器末端時(shí)間統(tǒng)計(jì)表、儀器在線率統(tǒng)計(jì)表、Null值表、儀器超量程統(tǒng)計(jì)表、特征值統(tǒng)計(jì)表、儀器數(shù)據(jù)按天簡化表、水位流量數(shù)據(jù)表等整編入庫。整編主要通過編寫代碼進(jìn)行實(shí)現(xiàn),主要思路為循環(huán)嵌套。外部循環(huán)為遍歷儀器信息表(DmList),內(nèi)部循環(huán)主要為遍歷每條監(jiān)測數(shù)據(jù),按各表不同要求對數(shù)據(jù)進(jìn)行針對性處理提取。以儀器數(shù)據(jù)按天簡化表(JianceDataSimplify)為例,外部循環(huán)為遍歷儀器信息表(DmList)并按日期分組查詢儀器每天的最大值、最小值、日期,內(nèi)部循環(huán)為補(bǔ)充每條查詢結(jié)果的儀器編號。示例代碼如下:
// 生成儀器數(shù)據(jù)按天簡化表
(async()=> {
await sql.connect(sqlConfig);
const res=await sql.query("SELECT * from DmList where IsNoData !='true’ ");
for(let item of res.recordset){
const res2=await sql.query(
`select YYYYMMDD,MAX(${item.Res})as MaxRes,min(${item.Res})as MinRes from JianCeData where SensorCode='${item.SensorCode}' group by YYYYMMDD`
);
let arr=[];
for(let item2 of res2.recordset){
let obj={…item2 };
obj.SensorCode=item.SensorCode;
arr.push(obj);
}
await JianCeDataSimplify.bulkCreate(arr);
}
})();
本次整編采用循環(huán)嵌套的處理方式,除JiancedataSimplify處理時(shí)間較長(約30min)左右,其余處理時(shí)間均在5min之內(nèi)。
安全監(jiān)測數(shù)據(jù)可視化系統(tǒng)后端采用Postgres+NodeJS+express框架,前端框架主要采用Vue+element-plus框架。頁面風(fēng)格采用常見的開源后臺admin風(fēng)格。
主要功能模塊包括工程概述、監(jiān)測數(shù)據(jù)、系統(tǒng)管理三大模塊。
3.5.1 工程概述
通過頁面展示各段工程并進(jìn)行簡要概述。
3.5.2 監(jiān)測數(shù)據(jù)
本模塊主要包含各段特征值查詢、過程線查詢、水位分析3個(gè)模塊。
(1)特征值查詢。介紹各段的整編時(shí)間區(qū)間,并對監(jiān)測儀器信息表、末端時(shí)間統(tǒng)計(jì)表、儀器在線率統(tǒng)計(jì)表、Null值表、儀器超量程統(tǒng)計(jì)表、儀器特征值表6類表單進(jìn)行展示,并可按字段對表單進(jìn)行升降序排序,同時(shí)可通過斷面信息表跳轉(zhuǎn)查看各個(gè)監(jiān)測斷面的詳細(xì)安裝圖、地質(zhì)信息等相關(guān)信息。如圖3所示。
圖3 特征值查詢頁面
(2)監(jiān)測儀器過程線。點(diǎn)選各個(gè)監(jiān)測儀器,提供多選功能,確認(rèn)查看后可查看儀器整編時(shí)間區(qū)間內(nèi)每日最大值過程線、最小值過程線,過程線可進(jìn)行局部放大與縮小調(diào)節(jié)。如圖4所示。
圖4 過程線查詢頁面
(3)水位分析。本模塊對水位流量數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,為糙率分析提供必要支撐。①按時(shí)間查詢。列表展示每日固定同一時(shí)間區(qū)間內(nèi)有流量與水位數(shù)據(jù)的時(shí)間表,點(diǎn)擊可查看本時(shí)間各個(gè)斷面的流量、水位與水深。②按斷面查詢。列表展示各個(gè)水位監(jiān)測斷面,點(diǎn)擊可查看生成選擇斷面不同時(shí)間段的流量、水位、水深,并生成水位流量關(guān)系方程。如圖5所示。
圖5 按斷面查詢頁面
對整個(gè)工程安全監(jiān)測數(shù)據(jù)及資料進(jìn)行整編入庫,可在詳細(xì)分析安全監(jiān)測數(shù)據(jù)前,快速掌握儀器的工作狀態(tài),發(fā)現(xiàn)明顯異常現(xiàn)象,為安全監(jiān)測系統(tǒng)的運(yùn)維提供幫助。結(jié)合儀器實(shí)際運(yùn)行狀態(tài),總結(jié)如下幾點(diǎn)異?,F(xiàn)象。
(1)安全監(jiān)測儀器監(jiān)測頻次不合理。儀器監(jiān)測頻次過高,遠(yuǎn)高于規(guī)范要求,大量儀器頻次為30min/次,個(gè)別達(dá)1min/次,致使監(jiān)測數(shù)據(jù)表異常龐大,原有安全監(jiān)測系統(tǒng)在查看過程線時(shí)系統(tǒng)崩潰。
(2)水位與流量監(jiān)測數(shù)據(jù)上傳時(shí)間設(shè)置不合理。水位與流量監(jiān)測數(shù)據(jù)上傳時(shí)間不一致,不利于總結(jié)水位流量關(guān)系及后期水力反演分析。
(3)隧洞段安全監(jiān)測系統(tǒng)穩(wěn)定性高于管線段。整體安全監(jiān)測儀器安裝5~6a,無壓洞段安全監(jiān)測儀器整編區(qū)間內(nèi)有數(shù)據(jù)的儀器占比為100%,在線天數(shù)占比30%~70%;管線段整編區(qū)間內(nèi)有數(shù)據(jù)的儀器占比為77%,在線天數(shù)占比僅為0%~20%的儀器高達(dá)55%。
(4)振弦式儀器穩(wěn)定性高于光柵式。以管線段為例,光柵式儀器最后上傳數(shù)據(jù)時(shí)間多為2019年3—9月,振弦式儀器至今仍有數(shù)據(jù)上傳。主要考慮為二者安裝與維護(hù)的差異所導(dǎo)致。
(5)存在一定超量程的現(xiàn)象。以管線段為例,超量程儀器個(gè)數(shù)為34支,占比5.8%。其中個(gè)別為安裝環(huán)境與量程不匹配,其它需在后續(xù)數(shù)據(jù)分析階段重點(diǎn)關(guān)注。
(1)利用信息化技術(shù),對整個(gè)工程的安全監(jiān)測儀器進(jìn)行統(tǒng)一整理入庫,并完成數(shù)據(jù)的可視化,可為后續(xù)的數(shù)據(jù)分析提供有力支撐。
(2)本次數(shù)據(jù)整編與分析人員為一線設(shè)計(jì)人員,綜合考慮數(shù)據(jù)整編分析及數(shù)據(jù)可視化相關(guān)工作所需的開發(fā)技術(shù),整體采用基于JavaScript語言的前端框架。采用開源軟件及成熟的技術(shù)框架,可大大降低學(xué)習(xí)成本,提高工作效率。
(1)對于數(shù)據(jù)回傳異常的安全監(jiān)測儀器進(jìn)行及時(shí)處理,同時(shí)合理設(shè)置安全監(jiān)測儀器的采集頻次及數(shù)據(jù)上傳時(shí)間。
(2)后期可將不同的安全監(jiān)測系統(tǒng)數(shù)據(jù)庫進(jìn)行統(tǒng)一打通,開發(fā)定時(shí)整編工具,定時(shí)對安全監(jiān)測數(shù)據(jù)庫數(shù)據(jù)進(jìn)行自動整理整編。