caline3遠端計算服務
Table of contents
背景
- CALINE3目前仍是美國環保署公告的替代模式。其設定與執行詳見CALINE3的標準輸入輸出,此處介紹遠端執行的版本。
- 模式未來發展:因CALINE後續沒有發展的計畫,系統應無持續更新的需要。
caline3遠端計算服務
- 網址http://sinotec24.com/CALINE3.html
- 選取本地的輸入檔案、按下Run鍵即可。
- 同一位置也可以選擇.kml檔案,內容約定如後所述。氣象條件為8風向。
CALINE遠端計算網頁畫面 |
CaaS檔案結構與連結
- HTML
- $web/CALINE3.html
- 使用filepicker開啟使用者指定上傳的檔案
- CGI-PY:$cgi/caline/CALINE.py,詳說明
- EXE
CLINE='/Users/1.PlumeModels/CALINE3/caline3 '
,編譯自CALINE3.FOR,Y軸座標格式修改如下說明。- KML2INP=CGI+’kml2inp.py’
- HEADER:$cgi/caline/header.txt
- 工作目錄與結果
- $web/caline_results/clin_ RAND/
- CALINE3.OUT
- RAND為隨機產生之6碼文字
KML 輸入與轉檔
輸入方式
- 輸入檔也接受.kml的形式,也算是有圖形界面的功能。約定如下:
- 以數位板Digitizer建立路段與接受點的空間及屬性資料
- 接受點與路段的順序不限
- 一條路可接受最多50個折點(49個路段)
- 範例如example.kml(如下圖)
- 氣象與現場條件設定如下:
- BRG:0, 45, 90, 135, 180, 225, 270, 315 等8個風向
- U, CLAS, MIXH: 1.0m/s, 6, 100m
- ATIM, Vs, Vd, Z0, AMB: 60min, 0, 0, 100cm, 1.0PPM
- 物件屬性的順序(在數位板上有提示)
- 接受點:名稱、高度
- 路線(折線):名稱、路型、交通量、排放係數、路高及路寬
- 屬性間的間隔可以是:
,;_/ |-(
數位板提示鍵入物件名稱與屬性 |
數位板所建立的範例檔案 |
kml轉成輸入檔案caline.inp(kml2inp.py)
- 這支內部程式的用意就是當使用者輸入kml檔時,由CGI-PY啟動轉檔,以利繼續執行CALINE3。
- 與其他rd_kml有類似的讀取方式,而與rd_dat.py有類似的輸出結構,不再贅述。
- 讀取kml檔內的資訊
fname=sys.argv[1]
NS,NR,nms,hgts,lon,lat,lonp,latp,TYPs,VPHs,EMFs,WIDs=rd_kmlLL(fname)
- 8風向氣象條件
NM=8
parm={'U':1.0,'CLAS':6,'MIXH':100,'AMB':1.0}
for var in 'U CLAS MIXH AMB'.split():
exec(var+'=[parm["'+var+'"] for i in range(NM)]')
BRG=[45*i for i in range(NM)]
- 接受點及線段座標都要轉換成TWD97系統(CALINE輸出格式問題另進CALINE3.FOR內修改)
#receptors
recp,zr=nms[NS:],hgts[NS:]
xr,yr=pnyc(lonp, latp, inverse=False)
xr=[int(i+Xcent) for i in xr]
yr=[int(i+Ycent) for i in yr]
#links
NL,(lnks,X1,Y1,X2,Y2,TYP,VPH,EMF,H,W)=0,([] for i in range(10))
for l in range(NS):
llt=[i for i in lat[l,:] if i !=0]
lln=[i for i in lon[l,:] if i !=0]
x,y=pnyc(lln, llt, inverse=False)
x=[int(i+Xcent) for i in x]
y=[int(i+Ycent) for i in y]
X1+=x[:-1]
Y1+=y[:-1]
X2+=x[1:]
Y2+=y[1:]
ms=len(llt)-1
lnks+=[nms[l]+'_'+str(i) for i in range(ms)]
TYP+=[TYPs[l] for i in range(ms)]
VPH+=[VPHs[l] for i in range(ms)]
EMF+=[EMFs[l] for i in range(ms)]
H+=[hgts[l] for i in range(ms)]
W+=[WIDs[l] for i in range(ms)]
NL+=ms
CALINE3.FOR 輸出座標格式調整
- 計有3處調整,以便讓TWD97南北方向座標值(共9碼)可以順利寫出。
...
C 290 FORMAT (4X,A1,2H. ,5A4,2X,1H*,4(1X,F6.0,1X),1H*,4X,F6.0, CLN07190
290 FORMAT (4X,A1,2H. ,5A4,2X,1H*,4( F8.0 ),1H*,4X,F6.0, CLN07190
* 6X,F4.0,6X,A2,2X,F6.0,1X,F5.1,1X,F5.1,2X,F4.1) CLN07200
...
C 340 FORMAT (4X,I2,2H. ,5A4,1X,1H*,4X,F6.0,3X,F6.0,3X,F6.1, !by kuang CLN07320
340 FORMAT (4X,I2,2H. ,5A4,1X,1H*,1X,F9.0, F9.0,3X,F6.1, CLN07320
* 3X,1H*,F5.1) CLN07330
...
C 490 FORMAT (4X,I2,2H. ,5A4,1X,1H*,4X,F6.0,3X,F6.0,3X,F6.1, !by kuang CLN07480
490 FORMAT (4X,I2,2H. ,5A4,1X,1H*,1X,F9.0, F9.0,3X,F6.1, CLN07480
* 3X,1H*,F6.1) CLN07490
結果
- 結果檔名稱為固定
- 執行過程也很快,pid基本上沒有作用。
pid= 23318 is already done.
Model_results:
CALINE3.OUT
caline.inp