三維軌跡分析整體作業
Table of contents
背景
- HYSPLIT可以選擇產生三維軌跡線,來呈現長程輸送的垂直運動,這2維軌跡模式的發展及應用遭受諸多質疑。基本上這是一個誤會。
- 大氣在數千公里範圍內確實有顯著的氣流下層現象,但在都會尺度,大氣紊流垂直混合的現象對污染物質對高度的重新分配,會比垂直速度更加有效。
- 一般大氣之動力模式的垂直速度,是在假設質量守恆的前提下由水平速度梯度的平衡計算而得,並非實際垂直渦流的速度、或氣層整體的垂直升降運動。
WRFOUT三維軌跡主程式
wrfout檔案之彙整、連結
- 由於所需歷年來之wrfout,可能分散在不同目錄、磁碟機檔案系統、需要先做好連結。[‘links/wrfout_d0’+str(i)+’_‘+ymd+’_00:00:00’ for i in range(1,5)]:各層wrfout檔案(連結)
- 時間規格:每天一個檔,檔案為逐時,自UTC 0時開始,結束於隔天0時。
- wrf版本:不限、不檢查
bt2_DVP.py
- 3維軌跡程式參考2維程式進行增修,2維(CWB觀測值內插)軌跡程式公開於github
- arguments: - -t daliao (測站名稱)
- -d 20171231 (軌跡起始的年月日時)
- -b T (是否為反軌跡 T/F)
- 輸入檔
- sta_list.json:測站編號名稱
- path+’sta_ll.csv:測站經緯度
- [‘links/wrfout_d0’+str(i)+’_‘+ymd+’_00:00:00’ for i in range(1,5)]:各層wrfout檔案(連結)
- 輸出檔:’trj_results’+DATE[2:6]+’/’+’trj’+nam[0]+DATE+’.csv’
- 軌跡點時間間距:15S
- 程式內掛後處理(不執行不影響主要結果)
- csv2kml.py:繪製google map
- csv2bln.cs:bln file is used for surfer plotting
download bt2.py
- Download: 三維軌跡模式(超微工作站版本)bt2_DVP.py
do_bt1.cs 動態執行批次檔
- 每(小時,測站)反軌跡線的計算彼此之間是互相獨立的作業,不會彼此干擾、彼此需要,因此非常適合平行運作。可以在OS層次就可以控制。
- 控制邏輯:
- 不止盡的
while true
迴圈。- 設定當運轉中核心數低於下限(如工作站總核心數的9成)時執行下一條軌跡線、並且挑脫迴圈。
- 核心數高於下限值時,休息5秒。5秒後取得執行核心之個數。
- 不止盡的
- bt2.py引數
- $1=station name
- $2=month(2 digits)
- $3=day
kuang@master /nas1/backup/data/cwb/e-service/btraj_WRFnests
$ cat do_bt1.cs
#do_bt1 station mm dd
st=$1
for y1 in {16..16};do
y=20$y1
#for m in {02..03};do
m=$2
ym=$y1$m
#for d in {01..31};do
d=$3
h=00
if ! [ -e links/wrfout_d04_${y}-${m}-${d}_${h}:00:00 ];then continue;fi
for h in {00..23};do
if [ -e trj_results${ym}/trj${st}${y}${m}${d}${h}.csv ];then continue;fi
n=$(psg bt2.py|wc -l)
while true;do
if [ $n -lt 90 ];then
touch trj_results${ym}/trj${st}${y}${m}${d}${h}.csv
sub python bt2.py -t $st -d ${y}${m}${d}${h} -b True >& dum
sleep 5s
break
else
sleep 5s
n=$(psg bt2.py|wc -l)
fi
done
done
#done
#done
done
叢集分析
choose10(前處理)
- 從前述bt2.py所得之軌跡點L.csv檔案,選取其中10個點,將20個維度之矩陣進行k_means分析
- 輸入檔案: - tmplateD1_3km.nc:讀取網格設定,以簡化軌跡點 - fnames.txt(檔案路徑名稱之listing)
輸出檔案: - *10.csv
- 程式說明:詳見choose10.py程式說明與下載。
km.py
- 這支程式讀取choose10.py結果,以K-means方式取其代表性叢集。
- 程式說明,詳見km.py說明
程式IO
- arguments:
- *10.csv檔案路徑名稱之文字檔
- nclt: number of clusters
- 輸入檔
- *10.csv:choose10.py的結果
- tmplateD1_3km.nc:由JI轉換成網格化座標位置
- 輸出檔
- lab.csv:逐時的叢集編號
- ‘res’+str(l)+’.csv’ :各叢集的代表性軌跡
- 內掛後處理(csv2kml.py):
- 由csv產生kml檔案
- 可以google map、leaflet套件等等進行繪圖
download km.py
- Download: 三維軌跡線之k-means叢集分析程式:km.py
google map繪圖、軌跡命名
- 由於叢集分析結果為數字,需建立名稱對照表,以便在繪圖時(google map上軌跡點之說明內容、參考筆記繪製逆軌跡圖流程csv2kml)顯示結果。
- 定義數字與文字(區域方向)之對照(path.txt)如下。
kuang@master /nas1/backup/data/cwb/e-service/btraj_WRFnests/kmean_spr
$ cat n_clusters6/path.txt
1SH 5 Shang Hai and northwestern China
2BJ 3 Bei Jing
3SW 1 South Western of stations
4LOCAL 2 Local Circulations
6BH 0 Bo Hai
7SC 4 Southern China
其他後處理
acc_prob.py
- 從軌跡點L.csv檔案,統計網格通過機率,以便進行繪圖
- 輸入檔案:
- fnames.txt(檔案路徑名稱之listing)
- 輸出檔案:
- probJ.nc
- 單位:crossing time/total time
- Download: 三維軌跡線之網格通過機率分析程式:acc_prob.py
成果
反軌跡線叢集分析結果 |