本篇來練習Open Data的應用,要由中央氣象局提供的天氣預報資訊,在 Excel 的工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊,以顯示桃園市各區最近二天的氣象資訊為例。
首先,你得先到中央氣象局網站加入會員:
https://www.cwb.gov.tw/V8/C/S/eservice/member.html
註冊為會員,才能使用中央氣象局開放資料平臺之資料擷取API資料。
接著,進入中央氣象局開放資料平臺之資料擷取API
https://opendata.cwb.gov.tw/dist/opendata-swagger.html
找到「鄉鎮天氣預報-桃園市未來2天天氣預報」,按一下:Try it out
現在,你需要設定你要的格式:
(1) 在 Authorization 中輸入氣象開放資料平台會員授權碼。
(2) 在 format 中選取一種格式,例如:XML。
(3) 本例略,不使用。
如果想要特定區,則在 locationName 中按一下 Add item,再輸入你要的鄉鎮。
每個縣市的標準名稱可以PDF檔中查詢:
https://opendata.cwb.gov.tw/opendatadoc/CWB_Opendata_API_V1.2.pdf
(4) 在 Responses 中選取回應資料的格式,本例:application/xml。
(5) 按下 Exceute,即可取得資料網址。
複製頁面上的URL:
鄉鎮天氣預報-桃園市未來2天天氣預報(F-D0047-005)
https://opendata.cwb.gov.tw/api/v1/rest/datastore/F-D0047-005?Authorization=氣象局會員驗證碼&format=XML
日後要取用不同的縣市,只要修改 F-D0047-005。
將網址在瀏覽器中開啟,看到如下圖:
接著來到了 Excel 中工作:
1. 從「資料/取得及轉換資料」工作表中點選:從Web。
2. 將複製好的網貼至 URL 文字方塊。
3. 點選:轉換資料。
4. 在資料表中點選下圖中的圖示以展開資料。
5. 可以不用勾選:使用原始資料行名稱做為前置詞。
6. 重覆步驟4和5,將最後一欄的資料展開,並且觀察右側窗格裡的套用步驟。
直到資料全部展開:
7. 最後,選取:關閉並載入。
資料已進入 Excel 工作表,如果要更新資料時,只要在窗格中對資料表按右鍵,再選取:重新整理。
取得資料後,就可以任意資料處理了,例如:
(1) 選取E欄中有資料的內容並命名為:locationName
(2) 選取J欄中有資料的內容並命名為:description
(3) 取得各區名稱的唯一值
儲存格P1:=UNIQUE(locationName)
(4) 取得各項描述的唯一值
儲存格Q1:=UNIQUE(description)
(4)在儲存格V1中利用資料驗證製作各區名稱的下拉式清單
只要在「資料驗證」對話框中設定:
資料驗證準則:清單
來源:=$P$1# (特別注意「#」的使用是為因為儲存格P1裡的是動態陣列)
相同的,在儲存格X1中利用資料驗證製作各區名稱的下拉式清單。
來源:=$Q$1#
(5) 依據:locationName 和 description,篩選出對應的資料
(A) 取得 startTime 清單
儲存格S1:=TEXT(OFFSET($K$8,(ROW(A1)-1)*2,0),"dd hh")&""
當公式:(ROW(A1)-1)*2往下複製時,會產生 0, 2, 4, 6, …。
利用 OFFSET 函數取得每間隔 2 列的儲存格內容。(因為在此資料是每2列為相同內容)
利用 TEXT 函數利用參數「dd hh 」將取得的日期時間顯示為「日2碼 時2碼」。
公式中的「&""」是為了將結果轉為字串。
(B) 取得 value 清單
儲存格T1:=FILTER(INDIRECT(T1),(locationName=$V$1)*(description=$X$1))*1
利用 INDIRECT 函數將儲存格T1中的字串轉為儲存格位址。
再利用雙條件:(locationName=$V$1)*(description=$X$1)
於 FILTER 函數篩選 INDIRECT(T1) 對應的內容。
公式中的「*1」是為了將結果轉為數值。
最後結果:
選取不同的區:
重新整理資料後,即可同步取得最新內容:
留言列表