本篇來練習Open Data的應用,要由中央氣象局提供的天氣預報資訊,在 Excel 的工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊,以顯示桃園市各區最近二天的氣象資訊為例。

image

首先,你得先到中央氣象局網站加入會員:

https://www.cwb.gov.tw/V8/C/S/eservice/member.html

註冊為會員,才能使用中央氣象局開放資料平臺之資料擷取API資料。

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

接著,進入中央氣象局開放資料平臺之資料擷取API

https://opendata.cwb.gov.tw/dist/opendata-swagger.html

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

找到「鄉鎮天氣預報-桃園市未來2天天氣預報」,按一下:Try it out

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

現在,你需要設定你要的格式:

(1) 在 Authorization 中輸入氣象開放資料平台會員授權碼。

(2) 在 format 中選取一種格式,例如:XML。

(3) 本例略,不使用。

如果想要特定區,則在 locationName 中按一下 Add item,再輸入你要的鄉鎮。

每個縣市的標準名稱可以PDF檔中查詢:

https://opendata.cwb.gov.tw/opendatadoc/CWB_Opendata_API_V1.2.pdf

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

(4) 在 Responses 中選取回應資料的格式,本例:application/xml。

(5) 按下 Exceute,即可取得資料網址。

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

複製頁面上的URL:

鄉鎮天氣預報-桃園市未來2天天氣預報(F-D0047-005)

https://opendata.cwb.gov.tw/api/v1/rest/datastore/F-D0047-005?Authorization=氣象局會員驗證碼&format=XML

日後要取用不同的縣市,只要修改 F-D0047-005。

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

將網址在瀏覽器中開啟,看到如下圖:

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

接著來到了 Excel 中工作:

1. 從「資料/取得及轉換資料」工作表中點選:從Web。

2. 將複製好的網貼至 URL 文字方塊。

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

3. 點選:轉換資料。

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

4. 在資料表中點選下圖中的圖示以展開資料。

5. 可以不用勾選:使用原始資料行名稱做為前置詞。

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

6. 重覆步驟4和5,將最後一欄的資料展開,並且觀察右側窗格裡的套用步驟。

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

直到資料全部展開:

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

7. 最後,選取:關閉並載入。

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

資料已進入 Excel 工作表,如果要更新資料時,只要在窗格中對資料表按右鍵,再選取:重新整理。

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

取得資料後,就可以任意資料處理了,例如:

(1) 選取E欄中有資料的內容並命名為:locationName

(2) 選取J欄中有資料的內容並命名為:description

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

(3) 取得各區名稱的唯一值

儲存格P1:=UNIQUE(locationName)

(4) 取得各項描述的唯一值

儲存格Q1:=UNIQUE(description)

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

(4)在儲存格V1中利用資料驗證製作各區名稱的下拉式清單

只要在「資料驗證」對話框中設定:

資料驗證準則:清單

來源:=$P$1#  (特別注意「#」的使用是為因為儲存格P1裡的是動態陣列)

相同的,在儲存格X1中利用資料驗證製作各區名稱的下拉式清單。

來源:=$Q$1#

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

(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」是為了將結果轉為數值。

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

最後結果:

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

選取不同的區:

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

重新整理資料後,即可同步取得最新內容:

Excel-在工作表顯示指定縣市之各鄉鎮區最近二天的氣象資訊(Open Data練習)

學不完.教不停.用不盡文章列表

arrow
arrow
    文章標籤
    Excel Open Data 氣象
    全站熱搜

    vincent 發表在 痞客邦 留言(0) 人氣()