速成指南—Hysplit後推氣流軌跡聚類分析
發現網上關於用Hysplit做後推氣流軌跡聚類分析的教程較少並且不詳細,因此萌生寫個速成指南的想法。
後推氣流軌跡的聚類指的是將一段時間內的後退氣流軌跡按照一定方法進行分類歸納。聚類分析可以用於分析目標地點的氣團的來向構成以及佔比。
我們常在文獻中看到這樣的圖,用於分析研究地點的氣團傳輸機制:
也會看到這樣的表,分析不同來源的氣團的污染物濃度:
這些分析通過Hysplit可以做到。
分為四個步驟:氣象數據準備;按所需時間段批量計算後推氣流軌跡;對後退氣流軌跡數據進行聚類;將聚類結果與污染物濃度數據結合分析。
一、下載氣象數據
要計算後退氣流軌跡,最重要的是氣象數據,一般常用的氣象數據為GDAS1。
下載地址為:下載gdas1氣象數據
文件格式為「gdas1.英文月份縮寫+年份.第幾周」。例如,「gdas1.apr05.w3」指的是2005年四月第三周的氣象數據。
其他Hysplit支持的氣象數據格式詳見:
READY - Gridded Data Archives二、按所需時間段批量計算後退氣流軌跡
分為兩小步:
1、初始參數設置
打開Hysplit主界面->「Trajectory"->「Setup Run」
無論是跑單次的後推氣流軌跡還是跑一段時間的,都需要在Setup Run的頁面里進行參數的預先設置。如圖所示:
需要設置的參數有:
(1)開始時間:按年月日小時的順序輸入起始時間,注意空格。
(2)起始位置的數量:一般只研究一個點,填1。同時點擊右側的Setup starting location,填寫坐標經緯度以及起始高度。
(3)總運行時間:按實際需求填寫,一般和你要研究的物種的大氣化學壽命相關。
(4)方向:選擇後推「Back」。
(5)模型層高:填寫模型的最大高度,一般按默認即可。
(6)垂直運動模式:點擊「Select」,選擇「0 = input model data",按輸入的氣象數據內置的垂直運動模式即可。
(7)輸出:軌跡結果輸出目錄。注意一個細節,在目錄最後要加上幾個字母作為這次計算的輸出文件的前綴,以便下一步計算的時候識別並鎖定。
(8)添加氣象數據:按所要計算的時間範圍選擇多個氣象文件。
(9)可點擊「save as」保存配置文件,以便下一次使用。點擊「save」保存配置。
2、運行批量計算
Hysplits 最多可以進行一個月的批量後推氣流軌跡計算。
返回Hysplit主界面->「Special Runs"->「Daily」
填寫所需要計算的開始日期、計算的總天數(最多一個月)、每天計算的時間點。
點擊「執行腳本」,稍等片刻(這時候會不斷閃現對話框),直到下圖出現,表示計算完成。點擊「繼續」。
這時候在前一步配置的工作目錄里會出現我們剛計算的結果,文件名結構為」前綴+年月日小時」。
三、對後退氣流軌跡數據進行聚類
我們現在有多日多條的後推氣流軌跡,接下來要做的就是將所有軌跡按照距離進行歸類。
返回Hysplit主界面->「Special Runs"->"Clustering"->"Standard"
選擇標準模式進行聚類。
從對話框可以看到,需要進行三小步。
1、第一小步,進行配置。
需要填寫以下幾個選項:
(1)聚類時間:需要進行聚類的時間長度。需要注意的是,72小時的後推氣流軌跡,可以只聚類前36小時。但是36小時的後推氣流軌跡無法聚類72小時的。這樣一說你應該能理解這個選項。
(2)聚類時間間隔:選擇將軌跡劃分為幾段進行聚類計算。例如36小時的聚類時間+1小時的聚類時間間隔,就意味著把所有軌跡每隔1小時進行一次距離比對,共進行36小時的距離比對。
(3)軌跡間隔:簡單地說就是每隔幾條納入計算範圍。例如填寫1,就是每一條都參加計算,填寫2,就是每兩條取一條進行計算。
(4)端點文件夾:選取批量計算的軌跡結果所在的文件夾。
(5)工作文件夾:輸出聚類結果的文件夾。
(6)結果文件夾:當點擊頁面最下方的「完成」按鈕後,工作文件夾的數據數據會被自動移動到結果文件夾。
2、第二小步,運行聚類程序。
首先要鎖定目標軌跡文件。這時候就需要用到我們在批量輸出軌跡時預先設置的文件前綴。例如上文提到我輸出的批量軌跡的前綴是「test」,這裡我就填寫「test」。點擊「MAKE INFILE」。如果成功識別鎖定我們要的那批軌跡文件,會有如下提示。
點擊「Run cluster analysis」,會出現如下對話框依次聚類每條軌跡,完成後點擊退出即可。
接下來是最關鍵的步驟,確定聚類的簇數量。在操作之前先介紹一下聚類的簡單原理。理解了這一原理,操作下面的步驟就易如反掌。
Hysplit聚類的原理是運行集群(所有軌跡組成的集合)從N個軌跡(簇)開始,一條一條加進去,進行類似簇的配對,直到所有軌跡都位於一個簇中。 每次迭代後,將計算總空間方差(TSV),即所有聚類空間方差的總和,並計算前一次迭代的TSV變化百分比。(迭代是後指向的,例如第一次迭代是從N到N-1,因此變化率也是,例如,cluster 10的TSV變化率是10到11的TSV與9到10的TSV差值比去9到10的TSV,理解這點很關鍵)。
理解以上原理後,我們來看具體操作。
確定簇的數量就是看兩個指標:TSV變化圖和TSV變化的變化率。
單擊運行按鈕「Display total spatiall variance」以生成TSV變化圖。
在前幾個聚類迭代中,TSV的變化非常大,那麼對於大部分聚類來說,隨著聚類數量的減少,TSV的增加速率通常很小,並且幾乎不變。在某一時刻,TSV的變化迅速上升,表明組合的簇不是非常相似。通常會有幾個較大的上升點。 在這些TSV大幅增加的點之前的聚類數量給出了可能的最終結果。
單擊下圖的運行按鈕以生成可能的最終簇數的文本列表(CLUSEND)。
結果如下圖。一列為簇數,一列為該簇數的迭代的TSV變化相對於前一個簇數的迭代的TSV變化的變化率。
通常,TSV變化率大於30%表示「不同」簇被配對了,也就是說匹配前的簇數是可能的最終結果。但是,如果30%未識別任何最終簇數,則可以使用20%的標準。如何確定呢,以下圖結果為例,圖中2雖然變化率很大,但是2的簇數太少,綜合考慮,可以選擇4條。
3、第三小步,獲取聚類結果。
確定簇數後,我們就可以進入第三小步,進行聚類結果輸出。填寫我們想要的簇數,然後點擊運行即可。
會出現如下運行框,完成後點擊退出即可。
這個時候聚類就已經完成了。我們可以點擊「Display Means」查看分類結果,也可以點擊「Display Clusters」查看單個簇中的所有軌跡。
聚類結果會生成在working文件夾里。主要有以下幾個結果文件:
(1)CLUSLIST_N (N是聚類的簇數)。
(2)C1_Nmean.tdump(簇數是多少,就會有幾個這樣的文件,C1_N一直到CN_N,介紹的是具體每個簇的信息)。
(3)Cmean1_N.tdump (每個簇的平均情況)。
(4)clusmean1_N(簇的分布圖)。
最後一步匹配濃度的時候,需要用的文件是CLUSLIST_N 。
三、將聚類結果與污染物濃度數據結合分析
打開CLUSLIST_N文件,會見到如下的數據格式。文件中會列出聚類時間段里的所有軌跡,以及他們所屬的cluster。將文件中數據用excel打開,並整理後可以得到兩列,一列是cluster編號,一列是時間點組成的序列。這樣我們就得到了時間點和cluster的對應信息。再把污染物濃度與時間點對應,我們就可以得到每個cluster的的污染物濃度情況。
有了cluster的數據以及相應的濃度數據,我們就可以分析氣團傳輸機制以及污染物來源了。
推薦閱讀: