寫 Python程式去追風

題目的 “追風” 的 “追” 字是指 tracking(追縱路徑),而不是 chasing(在打風時冒險出外追風)。 :p

編寫追風程式的原由

在很多年前開始,在網上留意熱帶氣旋的消息,把地下天文台首頁設為我的瀏覽器首頁,以便在開啟時看到基本天氣資料。

很多影響香港的熱帶氣旋都在西北太平洋或南中國海形成,而美軍的聯合颱風警報中心(JTWC)提供比香港天文台更大範圍的熱帶氣旋訊息,甚至報告有機會形成熱帶氣旋的低壓區,所以追縱熱帶氣旋的香港愛好者會把 JTWC 作為參考資料之一。

多年來,為了看看有否新的熱帶氣旋形成,不定時會人手點擊所關 JTWC 連結看看有否更新訊息,或可能會錯過了。今年三月尾在看看 python 編程時,發現  python 的程序庫有很多好東西,讓我簡便地編寫一些程式,便開始編寫一個分析 JTWC 報告和提供提示的程序。

追風程式的發展

開發這個程式的主要目的是 Just For Fun(Just for my fun 是更加貼切的形容),開發方式是 Release Early, Release Often。XD

不過唯獨這個程式不是開源的,所以我不太著重這程式在 release 時,是否符合我心中的基本簡單要求。

在開始編寫數小時後,第一個版本便開始使用起來。透過 crond 定時執行,第一個版本程式會分析 JTWC 報告,當發現報告提及 “疑似” 氣旋或低壓區時,會以 NNTP 張貼在我的個人新聞組上(newsgroup)。

以下是最近期的例子,比起第一個版本修改臭蟲和加入新訊息。

JTWC Report Time: 18/06/08 01:00 HKT
Effective Time: 18/06/08 01:00 - 18/06/08 14:00 HKT

No active tropical cyclone.
1 active tropical disturbance occurs in NW Pacific ocean.

Tropical Disturbance #1:
Location: 6.6N 133.3E (old) -> 8.1N 134.8E (current).
Status: FAIR (upgraded).

在第一個版本 in production 之後,我繼續不定時加入新的功能。例如加入報告中熱帶擾亂位置和狀態,提示擾亂被升級或降級(poor <-> fair <-> good)等。後期也加入報告中提及正活躍中熱帶氣旋的資料 - 位置、分級、相關連結。

除了我的 newsgroup 朋友/版友外,沒有太多人知道我正在開發這程式,因為除了對我 user friendly 之外,對其他人不太 user friendly 了。

使用 Google Map 來顯示路徑

在編寫這程式的同時,我也試過這程式以外的東西,例如 Google Map API,多月前試過把早年熱帶氣旋路徑位置資料,加上香港的 800、400、200 km 警戒線在 Google Map 上畫出來。

昨晚我把程式再作改進,把熱帶氣旋資料獨立張貼,和提示有關預測路徑。

  Current 210600Z @ 12.2N 122.3E, 每分鐘最高持續風速 095 海里和陣風 115 海里.
Forecast 211800Z @ 12.7N 121.7E, 每分鐘最高持續風速 090 海里和陣風 110 海里.
Forecast 220600Z @ 13.5N 121.0E, 每分鐘最高持續風速 085 海里和陣風 105 海里.
Forecast 221800Z @ 14.2N 120.2E, 每分鐘最高持續風速 080 海里和陣風 100 海里.
Forecast 230600Z @ 15.4N 119.4E, 每分鐘最高持續風速 075 海里和陣風 090 海里.
Forecast 240600Z @ 17.8N 118.4E, 每分鐘最高持續風速 075 海里和陣風 090 海里.
Forecast 250600Z @ 20.6N 118.4E, 每分鐘最高持續風速 075 海里和陣風 090 海里.
Forecast 260600Z @ 24.6N 120.5E, 每分鐘最高持續風速 065 海里和陣風 080 海里.

今天,更進一步地把程式再作改進(其實為了滿足自己 XD),為我透過 Google Map 顯示的熱帶氣旋路徑圖提供 “風神” (07W)過去和預測路徑,成為了這個初次 beta 版的網頁了。