王帥奇 龐小兵 陳浪 韓張亮 吳振濤
(浙江工業大學環境學院 浙江杭州 310014)
隨著人類工業化的不斷發展,大氣中各種氣體的排放量不斷增加[1]。在中國政府的努力下,近年來我國大氣中某些氣體的濃度雖然呈持續下降趨勢,但是由PM2.5和O3等氣體導致的空氣污染問題仍然存在[2]。對這些氣體濃度的有效監測是開展環境空氣治理的先行條件。目前,常規儀器只能對近地面的氣體濃度進行檢測,無法解析污染過程、污染特征,以及污染來源和變化趨勢[3]。垂直觀測可確定大氣中不同氣體的物理、化學成分及其變化,可解析污染的來源、演變與輸送過程[4]。運用無人飛機進行垂直觀測具有效率高、機動靈活、使用方便、續航時間長、受環境影響小和精度高等優點,可以承擔高風險的飛行任務,也不受地理條件限制。隨著無人飛機技術在軍事和民用領域的普及,如何利用無人飛機進行更高效的高空大氣檢測給研究人員提供了一種新的思路[5]。
近年來,無人飛機搭載大氣分析儀器的技術正在成為大氣污染物垂直觀測的一種新手段。Elena 等[6]利用無人飛機搭載定制的溫室氣體分析儀實現了對挪威斯瓦爾巴特群島的低海拔偏遠和危險地點的CO2、CH4和水蒸氣濃度的高精度測量。Watai 等[7]為了研究行星邊界層及以上的大氣CO2濃度變化,研制了一種小型無人飛機觀測系統,該系統可用于測量從地面到最高海拔約3 000 m 的CO2濃度。Illingworth 等[8]利用無人飛機搭載O3檢測儀,協助相關部門對城市范圍內O3濃度的變化實現直觀觀測。然而,目前市面上的大氣檢測儀器價格昂貴、可檢測大氣物質種類較少。針對該問題,本課題組研制了微型多組分大氣檢測裝置,將其搭載在無人飛機上,可實現距離地面500 m 內的20 多種大氣成分和氣象參數進行測量。Pang 等[9]利用微型多組分大氣檢測裝置與商用便攜式檢測裝置進行比較,通過多種污染物濃度的測量分析后證實微型多組分大氣檢測裝置測定的可靠性;Chen 等[10]利用多組分大氣檢測裝置在新冠疫情封鎖期間測得寧波市NO2和O3等污染物濃度,并分析新冠疫情前后污染物濃度變化情況。
本課題組搭載在無人飛機上的微型多組分大氣檢測裝置采用DAQ 采集數據,經軟件處理后在大氣檢測儀的屏幕上會顯示氣體濃度,實現數據可視化。但從大氣檢測儀中導出的數據為DAQ 采集的原始數據(電信號),輸出格式為txt 文件。將電信號轉化成濃度數據的傳統方法是將txt 對應的氣體濃度信號復制到Excel 文件中,氣體的瞬時濃度、某時段的平均濃度需要輸入相應的計算公式經轉換獲得。傳統數據處理方法的過程較為繁瑣、數據處理效率較低,特別是當需要計算多個某區間的平均濃度,如連續100 個2 min 內的平均濃度。
Python 語言作為一種功能齊全可、操作性強、上手簡單的編程工具,在數據分析領域受到了廣泛認可,在大氣污染物數據分析中也有著廣泛的應用。Kadiyala 等[11]在對公共汽車內CO2濃度數據采集后,利用Python 語言中的Scikit learn 模塊完成數據導入,建立統計回歸模型和決策樹(Decision Tree)模型等一系列操作來完成汽車內CO2分析;Sebbah 等[12]利用Python語言開發并設計出了Q-LIP 程序,該程序可以安裝在QGIS 中并從陸地衛星中下載原始數據,將原始數據根據預先設置的數學公式自動處理并生成需要的圖像,為了解環境狀況和環境成分時空變化提供重要參考依據;O'Meara 等[13]在論文中介紹了Python 語言在氣溶膠實驗設計和分析中的應用,該編程語言可以將實驗結果自動生成數學模型,并根據模型分析氣溶膠運動過程與相關參數的相關性,同時與實際觀測結果比較差異性從而對實驗進行改進;Matytsyna 等[14]利用ldquoCalpuffrdquo 模塊在對城市空氣質量建模的過程中用Python 語言開發了一個程序,該程序主要用于計算街道上機動車尾氣每小時排放污染數據并實時儲存在計算機中。
本研究使用Python 語言作為編程工具,調用Openpyxl 和Numpy 等多個模塊,對DAQ 導出的原始大氣檢測數據進行預處理,可實現導出數據自動寫入Excel 文檔,并同步生成瞬時濃度數據。濃度數據會自動保存在新建表格中以滿足后續數據可視化的需要。此外,根據用戶需要可對程序進行優化,實現同步生成連續的某時段內多種物質的平均濃度值。本研究開發的程序應用在大氣檢測儀DAQ 采集數據的后續數據處理,可大幅縮短人工數據處理的時間從而提高數據處理效率。
Python 語言編程過程中用到的6 個模塊,分別為文檔讀取的Openpyxl Excel 模塊;數據計算的Numpy 模塊;處理時間日期的Datetime 模塊;解決程序與操作系統間交互問題的Sys模塊;使程序可以在不同操作系統中正常運行OS 模塊;解決模塊封裝過度的Pywin32 模塊。模塊的具體介紹如表1 所示。

表1 模塊介紹
DAQ 是一套成熟、完整的組態軟件,它由美國AzeoTech公司開發,在世界范圍內得到廣泛應用。該軟件具有靈活的數據采集、輸出控制、高級數據分析工具的功能,在環境檢測領域有著非常廣泛的應用。
(1)DAQ 的作用。傳感器中的電解液與監測組分發生電化學反應產生電信號,經數據采集設備采集后通過DAQ 處理,可將電信號轉變成氣體濃度值并生成濃度值變化的圖表在儀器上顯示。
(2)DAQ 數據主要參數。本課題組通過DAQ 收集到的數據參數包括COWE、COAE、PID-1 等11 個。具體參數介紹詳見表2。

表2 數據參數
根據需求,創建一個空白的Excel 文檔作為數據處理的工作表,修改單元格格式后在第一行寫入表頭。利用大氣污染物NO 等物質的電極1 與電極2 的電勢數值,根據數學公式計算出NO 等物質的濃度。若需要提取某個時間區間內物質的平均濃度值,則需要找到工作表A 列對應時間信息,找到某物質對應列求濃度平均值,并將濃度平均值寫入新Sheet 表格中。如此反復操作,直到所有數據全部寫入新Sheet 表格中。
(1)數據處理框架。整個數據處理程序包括三個部分,設置參數部分,函數導入部分,主程序部分,具體框架如圖1 所示。

圖1 數據處理框架
參數部分提供程序運行中需要改變的參數,為了在程序運行前能更加直觀地找到需要改變的參數而單獨設立此模塊。函數模塊包括通過時間查找對應物質濃度值,計算平均值并將數據寫入新Sheet 表格等相關代碼。函數模塊主要對已經得到的數據進行更加復雜的運算,也是程序的基本組成部分之一。主程序起到了連接參數模塊和函數模塊,對數據預處理,調整表格格式并將得到的結果輸出保存的作用,是整個程序最核心的部分。
(2)數據處理流程。針對DAQ 導出的原始數據處理流程如圖2 所示。整個程序運行步驟如下:①在setting 中輸入需要計算平均濃度的時間區間“N”(如2 min)、需要讀取txt 的路徑、保存Excel 文檔的路徑等信息;②程序運行過程中會自動創建Excel 文檔,將txt 中的原始數據(電信號)寫入到Excel 文檔中;③程序自動調整單元格格式,并使用預先設置的數學公式自動計算每個時間點的各物質濃度;④自動創建新Sheet 表格,按照預先在setting 中輸入的時間(N min)依次判斷,是否滿足某時間點后的N min:若滿足要求,則取該時間點后N min 內物質濃度的平均值并寫入新Sheet 表格中;若不滿足(時間段<N min),則取剩余時間內物質濃度的平均值并寫入新Sheet 表格中。

圖2 數據處理流程圖
(3)關鍵步驟源代碼。
①導入的setting 和Average_data 模塊用于設置參數和定義函數,其他導入模塊(如Openpyxl 和Numpy 等)用于執行擴展模塊工具。

②setting 中設置的參數包括讀取txt 路徑,保存Excel 文檔路徑等。具體參數如下:


③主程序讀取setting 中設置的參數。

④主程序讀取數據到新創建的Excel 文檔,利用While 循環確定文檔中是否存在數據,若存在數據則利用for 循環遍歷文檔中的每一個數據,以逗號作為分隔符將數據依次寫入Excel 文檔中。

⑤修改Excel 文檔單元格格式,利用數學公式求得各物質濃度并寫入Excel 文檔中,舉例如下:/0.000989)"

⑥根據提前在setting 中設置的時間信息,利用Average_Data 中設置的函數求得該時間點后N min 物質濃度平均值(本文以2 min 的物質濃度平均值為例),并寫入新Sheet 表格中。

⑦利用for 循環遍歷文檔中的每一個由數學公式求得的濃度并寫入另一個Sheet 表格中。


2020 年12 月2 日,本課題組在紹興市上虞區杭州灣精細化工園區采用無人飛機搭載自主研發的微型多組分大氣檢測裝置對CO、NO 等氣體進行垂直立體觀測(距離地面0 m~500 m)。以當天從DAQ 中導出的實驗數據為例,直接從DAQ 中導出的實驗數據如圖3(a)所示,導出的文件格式為txt,文件中呈現的數據為氣體在不同時段濃度對應的電信號。經本文采用Python 語言利用Openpyxl 和Numpy 等6 個模塊設計的程序處理后的實驗數據,自動寫入到Excle 中,如圖3(b)所示。本程序實現了氣體在不同時段的電信號轉化成相應的濃度值,并自動寫入到新建Sheet 表格中,結果如圖3(c)所示。此外,為了解化工園區在不同高度氣體的濃度變化規律,本文設計的程序可自動計算距離地面0 m、50 m、100 m、200 m、300 m、400 m、500 m(每個高度停留2 min)的氣體濃度,并自動寫入到新建Sheet 表格中,結果如圖3(d)所示。經過反復測試,使用本程序處理數據效率顯著高于人工處理數據效率,由此表明本文設計的程序可有效提高數據處理效率。

圖3 DAQ 導出數據及處理結果
本文采用python 語言作為編程工具,調用Openpyxl 和Numpy 等6 個模塊設計了程序,可實現從微型大氣檢測儀DAQ 導出的原始大氣檢測數據,自動寫入Excel 文檔,并同步生成瞬時濃度數據,或連續的某時段內大氣污染物的平均濃度值。使用該程序可顯著減少數據處理所需的時間,優化處理流程,極大地提高了數據處理效率。目前該程序的局限性在于只能把處理后的數據以數字的形式展示在Sheet 表格中,無法自動生成圖表以圖形界面的形式供他人使用。在未來的程序優化中這些問題將獲得解決,研究成果將廣泛應用在大氣監測數據分析領域。