查天氣這件事情想必在各位的生活中是不可或缺的一部份,那現在的人通常是如何獲得天氣資訊的呢?
Google、看天氣app、中央氣象局網站、直接看天象……。
那我們何不自己做一個天氣機器人呢,反正都要查嘛,自己做來用不是更有趣!
言歸正傳,我預計怎麼做呢?
首先先來想一下我們查天氣時會有什麼需求,我們把這幾個需求拆開來看。
時間:我們都會在出門前再查天氣,所以我們都會想知道「等一下」的天氣怎麼樣,因此需要的資料是未來的一段時間。
地點:我們一定是要到某個地方或在某個地方所以才會需要知道天氣,地點是不可或缺的。
狀況:天氣狀態、氣溫、降雨機率,不外乎就是這幾個東西是我們會比較想知道的。
現在我們大概知道需要哪些資料了,那這些資料要去哪裡拿呢?
其實網路上有很多公開的天氣API資料,中央氣象局API、Yahoo Weather API、
OpenWeatherMap API等等,使用的方法基本上差不多,透過這些資料我們就可以取得我們想要的數據。
我們這次選用的是中央氣象局的API。
那馬上就來介紹要怎麼取得我們的氣象資料啦。
首先登入中央氣象局的氣象資料開放平台。
https://opendata.cwb.gov.tw/index
點選上方選單的開發指南/使用說明。
https://opendata.cwb.gov.tw/devManual/insrtuction
進入到這個頁面就會看到使用說明,裡面有許多開發指南的說明,大家有興趣可以仔細看一下。
而中間有個取得授權碼,我們必須要登入會員後才可以取得授權碼,之後我們必須要輸入授權碼才可以取得資料。
辦帳號的過程就不特別介紹了,填完一些資料就可以完成會員的申請。
在氣象資料開放平台上方選單的會員資訊/API授權碼的頁面可以取得自己的授權碼。
https://opendata.cwb.gov.tw/user/authkey
接著我們進到氣象資料開放平台上方選單的開發指南/資料擷取API線上說明文件。
https://opendata.cwb.gov.tw/dist/opendata-swagger.html
在這裡面就可以看到許多開放的資料,而我們這次選用的是一般天氣預報-今明36小時天氣預報,這個資料的內容剛好符合我們上面的需求。
點選之後可以看到一些參數的說明,我們直接點選右上角的Try it out。
點下去之後會發現,剛剛的資料變成表格填空的形式,而我們就依照自己的需求去選擇要填選的資料。
我這邊僅有輸入授權碼,其他的東西完全沒有調整,好了之後就點選下方的Execute。
點下去之後就會看到下方出現了一長串JSON格式的資料。
將上面的Request URL複製丟到網址搜尋列就會看到密密麻麻的資料。
這串Request URL的格式可以在中央氣象局氣象資料開放平臺–資料擷取使用說明文件裡面查詢,裡面有關參數的設定說明寫得非常詳細,我會建議有想要抓API的資料一定要看一下這份文件。
可以看到在資料擷取說明裡面都會有規格定義,而這個規格代表說我們只要更改裡面的參數就可以取得不同的資料。
像是說如果我們想要取得新北市今明36小時天氣預報資料,那就在locationName的地方輸入新北市。
https://opendata.cwb.gov.tw/api/v1/rest/datastore/F-C0032-001?Authorization=授權碼&locationName=新北市
這樣取得的就會是只有新北市的資料。
如果再繼續向下細分輸入想要的elementName,例如PoP降雨機率。
https://opendata.cwb.gov.tw/api/v1/rest/datastore/F-C0032-001?Authorization=授權碼&locationName=新北市&elementName=PoP
覺得資料很亂也可以丟到JSON編輯器來看,這樣可以看到更清楚的資料分層。
這個分層的方式在後面我們做資料擷取時非常的重要,請務必讀熟JSON格式,不太熟可以回去看之前介紹JSON格式的文章。
總之,我們要做的呢,就是從這些資料裡面抓出我們想要的數據顯示出來。
有了氣象API資料的來源,並且知道要如何改變參數來取得想要的數據,也對資料的格式有所了解,在下一篇就可以來寫我們的氣象機器人啦。