Link Search Menu Expand Document

caline3遠端計算服務

Table of contents

背景

  • CALINE3目前仍是美國環保署公告的替代模式。其設定與執行詳見CALINE3的標準輸入輸出,此處介紹遠端執行的版本。
  • 模式未來發展:因CALINE後續沒有發展的計畫,系統應無持續更新的需要。

caline3遠端計算服務

CALINE_remote.png
CALINE遠端計算網頁畫面

CaaS檔案結構與連結

  • HTML
  • 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
  • 物件屬性的順序(在數位板上有提示)
    • 接受點:名稱、高度
    • 路線(折線):名稱、路型、交通量、排放係數、路高及路寬
    • 屬性間的間隔可以是:,;_/ |-(
atts.png
數位板提示鍵入物件名稱與屬性
sanchong.png
數位板所建立的範例檔案

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