數據是數據科學中必不可少的一環。如果沒有數據,那麼數據科學中所有的算法都將是一紙空談,毫無利用價值。
機器學習和深度學習的訓練也依賴於數據的輸入。最近兩年機器學習和深度學習在氣象領域的應用也逐漸火熱起來,而且不少機構都在舉辦機器學習和深度學習在氣象應用的比賽。
近些年來人們也越加關注大氣汙染的情況,尤其是空氣品質,關乎到人們生活的各個方面。考慮到目前國內沒有多少關於空氣品質數據共享的平臺。除了環保部總站提供的實時數據之外,也有一些網站提供了國控站的實時數據以及歷史數據,但是這些數據站提供的數據僅是空氣品質的數據,而且除了總站平臺之外,其餘的實時數據分享平臺(比如pm25.in)提供的數據有時會因為某些原因導致數據中斷。因此出於項目需要,調查了不少提供空氣品質數據的網站,然後找到 aqicn.org 網站可以獲取空氣品質數據,此外還提供了一些氣象數據(比如溫度,氣壓,溼度和風速)。但是由於此網站不提供歷史數據接口,因此只能通過其提供的實時數據API獲取數據。
多源資料庫的構建具有不可忽視的意義。尤其是對於利用機器學習和深度學習來預測空氣品質的項目來說,僅僅需要空氣品質數據是遠遠不夠的,因為空氣品質的變化依賴於很多因素:比如氣象條件,大氣的環流背景會對汙染物的傳輸具有非常重要的影響,而且汙染源的排放對於汙染物的變化也具有非常重要的影響。
微軟亞洲研究院曾利用大數據對空氣品質進行了預測:
要預測一個地方的空氣品質,並不是指單純地只看這個地方本地的數據,而且要考慮到周邊地區的空氣及其他因素,比如空氣品質站點數據、交通流數據、氣象數據、廠礦數據、人口流動數據、路網結構等。
與傳統模擬空氣品質不同,大數據預測空氣品質依靠的是基於多源數據融合的機器學習方法,也就是說,空氣品質的預測不僅僅看空氣品質數據,還要看與之相關的氣象數據、交通流量數據、廠礦數據、城市路網結構等不同領域的數據,不同領域的數據互相疊加,相互補強,從而預測空氣品質狀況。
其中利用的不僅僅是空氣品質數據,而且還有氣象數據以及其它的一些數據。所用到的廠礦數據和人口數據類似數值模式中所使用的人為排放源。
本文不對這些細節進行過多探討,關於這些內容的討論將放到後面。上述的討論只是想說明構建多數據源資料庫的重要性。
本來此項目是想作為第一個正式項目來維護的,但是由於一些原因,比如國控站太多,又由於python的GIL鎖限制導致下載數據的時候會需要不少資源(測試了12個核,可以在30分鐘左右獲取到所有國控站數據,這不僅取決於伺服器可分配資源,而且還受到網絡響應的影響),導致無法繼續單獨維護此項目運行。
目前程序已經持續運行一個月左右,由於我能使用的資源有限,目前僅持續獲取了大概600個站點一個月左右的數據。
簡單的對此項目進行一下介紹:
waqip項目是為了從aqicn.org網站下載中國各國控站的空氣品質數據以及氣象數據,並且存儲到資料庫。
其中包括了四個主要腳本:
aqi.py : 可以根據pm2.5, pm10, co, no2, so2, o3的值計算IAQI和AQI,也可以根據各個要素的分指數計算各要素的值。
waqip.py : 下載空氣品質數據(包括各要素的分指數以及AQI)以及氣象數據(包括溫度,氣壓,溼度和風速等數據)。
get_cities_china.py : 獲取中國所有國控站的連結。
get_waqip_all.py : 下載數據並存儲到資料庫。採用多進程下載,腳本中測試時使用了12個核。
(注意:為了能夠成功下載數據,必須要從aqicn.org網站申請token。)
waqip.sh 腳本可用於設置 crontab 定時任務,而 cities_china_url.csv 文件中包含了中國所有國控站的信息。
程序已經上傳到Github,連結見文末。無論你是對這個項目本身感興趣,還是想學習python,都可以關注一下。
https://github.com/bugsuse/waqip