空氣品質情況影響著人們的日常生活和身心健康,空氣品質指數(AQI)是衡量空氣品質情況的一個重要依據,它利用函數將空氣中影響人們健康的幾種主要汙染物化成單一指數值的形式,通過它的大小來判斷空氣品質情況,值越大,空氣汙染情況越嚴重,是目前衡量空氣品質情況最常用的參照指標。
本文以生態環境部今天(2021年1月28日)發布的實時空氣品質指數為例,通過QGIS演示空氣品質指數地圖製作過程,展示QGIS點數據分級可視化和表達式生成文字標註技巧,最終的效果圖如下:
本文的示範數據及圖層樣式文件打包下載地址為:
連結: https://pan.baidu.com/s/1hX0_UsAK-v7xWqTjMuCj2A
提取碼: krrn
其中,空氣品質指數來自中華人民共和國生態環境部官網:https://www.mee.gov.cn/。
城市點數據來自天地圖的1:100萬地形數據(2017版),WFS服務地址為:http://gisserver.tianditu.gov.cn/TDTService/wfs。
首先,收集和整理空氣品質指數。從生態環境部將所需要的數據下載,整理為三個欄位:AQI、空氣品質、城市,保存為CSV分隔文本文件。其中AQI為整型欄位,用於製作空氣品質指數分級專題圖;空氣品質是對應AQI分級的中文描述;城市名稱將作為連接欄位與矢量數據掛接。
其次,利用QGIS提取和處理天地圖1:100萬地形數據(2017版)居民點數據。打開QGIS,在【瀏覽】面板找到「WFS/OGC API-Features」節點,右鍵->【新建連接】,在彈出的對話框,名稱填寫「tianditu」,URL輸入:「http://gisserver.tianditu.gov.cn/TDTService/wfs」,點擊【OK】完成WFS連接。
展開【瀏覽器】面板->【WFS/OGC API-Features】->【tianditu】,可以看到該數據服務下共有AANP、AGNP、BOUA、BOUL等十個圖層,對應居民點、行政區劃界線、水系、道路等要素,其中AGNP為帶名稱的居民點,將其拖拽到地圖窗口,同時打開對應的屬性表,觀察數據情況:
可以看到,AGNP圖層共包含OBJECTID、CLASS、NAME、PINYIN、GNID、XZNAME六個欄位,其中CLASS表示居民點分類,通過分析可知,當CLASS取值為「AD」時,可提取到城市點。
點擊屬性表窗口左下角的下拉菜單,選擇【高級過濾(表達式)】,打開表達式字符串過濾器,輸入下列表達式篩選出城市點:
點擊【OK】完成表達式篩選,返回屬性表窗口,共過濾出415個要素,點擊表格左上角,選中所有過濾結果:
切換到QGIS地圖主窗口,右鍵點擊【圖層】面板->【AGNP】->【導出】->【另存選中的要素為…】,彈出【矢量圖層另存為】對話框,設置如下參數:
格式:GeoPackage;
文件名:任意存儲路徑\city.gpkg;
其他參數保持默認,點擊【OK】將篩選到的城市點保存為單獨的圖層。
最後,建立空氣品質指數與城市點數據的連接。在【瀏覽器】面板找到上一步驟保存的城市點圖層和空氣品質指數,拖拽到地圖窗口。右鍵點擊城市點圖層->【屬性】->【連接】:
點擊左下角的 按鈕,打開新建連接對話框,設置如下參數:
連接圖層:AQI20210128;
連接欄位:城市;
目標欄位:NAME。
點擊【OK】完成連接設置。
關閉圖層屬性對話框,返回QGIS主窗口,打開城市點圖層的屬性表窗口,可以看到屬性欄位增加了AQI、空氣品質和城市,說明AQI數據已經連接到城市點圖層:
至此,數據預處理工作完成,開始空氣品質指數地圖可視化設置。
根據我國生態環境部科技標準司於2012年發布的《環境空氣品質指數(AQI)技術規定(試行)(HJ 633—2012)》,我國的空氣品質指數可以分為六個等級,具體分級標準如下:
使用QGIS的「漸進」渲染,可以將上述標準表達在地圖上。
選中城市點圖層,點擊【圖層】面板上方的 按鈕,打開【圖層樣式】面板,點擊渲染器下拉框,選擇「漸進」渲染:
設置「漸進」渲染的參數如下:
值:AQI20210128_AQI;
圖例格式:精度-2,勾選「裁剪」;
模式:等數量(分位數);
類:6。
點擊【分類】按鈕,將城市的AQI分為6個等級,如下圖:
默認的分級斷點和樣式與我國的標準並不一致,需要手工調整。首先,修改一級AQI的符號顏色為標準規定的綠色,RGB值為(72, 228, 0):雙擊分類第一行中的【符號】, 在符號圖層選中【標記】->【簡單標記】->【填充顏色】->【選擇顏色】,分別填入顏色的R、G、B分量:72, 228, 0。
第二步,修改分級的上下限。雙擊第一行的【值】,彈出上下限設置對話框,輸入【下界值】為0;【上界值】為50:
最後,修改圖例的文字,雙擊第一行的【圖例】,進入編輯狀態,輸入文字「優」:
按同樣步驟完成其他AQI級別的符號、上下限、圖例的修改,完成後效果如下圖:
在【圖層樣式】面板,切換到 標註標籤頁,選擇「單一標註」,點擊【值】右側的 按鈕,打開【表達式對話框】,輸入如下表達式作為標註的內容:
"NAME" || '\n' || "AQI20210128_AQI"接下來設置標籤的背景顏色。切換到 背景,勾選「繪製背景」,設置【大小 橫坐標】為2,【縱向大小】為0.5,點擊【填充顏色】右側的 按鈕,打開【表達式字符串構造器】對話框,輸入如下表達式設置標註的背景色:
此時可以看到,有些標註壓蓋了城市點,需要設置標註的位置以解決壓蓋問題。切換到 位置,將【模式】設置為「離點偏移量」,【橫、縱坐標偏移】分別輸入0.0000,-6.0000。
為了明確標註與城市的對應關係,可以繪製引出線,即標註牽引線。切換到 引出線,勾選「繪製引出線」,將【從要素偏移】設置為1毫米。
最後,為地圖選擇一個比較素淨的網絡地圖作為背景圖,本文選擇使用OpenStreetMap monochrome作為底圖,其XYZ連接URL為:http://a.tiles.wmflabs.org/bw-mapnik/{z}/{x}/{y}.png。也可以使用國內的天地圖、高德地圖等(關於如何加載網絡地圖,請參考:淺談XYZTiles 和 通過QGIS XYZ Tiles訪問國內四大圖商地圖服務)。最終效果如下:
從圖中可以看出,我國冬季空氣汙染「北高南低」的布局特點仍然非常突出,今天(2021年1月28日)華北平原普遍汙染較嚴重。本人在鄭州,從昨晚開始颳起大風,汙染物大部分來自揚沙,對空氣品質情況的感受與圖中所展示的數據相一致。