06Json雲端應用
(2016/09/27 梅姬颱風)
題目一: 凹子底站的列車進站時間
- 這次要做的題目是學校附近的「凹子底站」,下一班列車及下下一班列車還要多少時間進站? (此題目參考WFduino)
- 首先先到高雄市政府資料開放平台OPEN DATA.KAOHSIUNG.GOV.TW,找到高雄捷運動態資料(http://data.kaohsiung.gov.tw/Opendata/DetailList_Mrt.aspx)
- 高雄捷運各站的代號,可到捷運動態資料之站代號及站名稱對照表找到
- 啟動Transformer 2.0
- 本題目不必使用 Arduino 等硬體
- 啟動Transformer v2.0程式 (請參閱前面說明)
- 因不使用硬體,所以介面選「不使用 arduino (default)」
- 檔案選「自動開啟「含網路積木」)
- 進入Scratch2.0程式(離線版),並且發現 02 出現「綠燈」,連線成功!
- Scratch 2.0程式 (認識Transformer雲端積木的使用)
- 先利用「GET」的功能取得捷運動態資料,網址http://data.kaohsiung.gov.tw/Opendata/MrtJsonGet.aspx?site=112 ;112代表凹子底站,程式如下:
- 先利用raw 取得原始資料
- 等待一段時間,此等待時間與資料量有關,資料量如果越大,要等待的時間就要越久
- 只出現1筆的「雲端資料」
- 將雲端資料存入d:\temp.txt
- 開啟d:\temp.txt,來了解所取得的雲端資料
- 先利用「GET」的功能取得捷運動態資料,網址http://data.kaohsiung.gov.tw/Opendata/MrtJsonGet.aspx?site=112 ;112代表凹子底站,程式如下:
- 開啟d:\temp.txt的結果如下:
- 將內容整理如下,會看得比較清楚:
- { "MRT":
- [
- { "descr":"南岡山","arrival":"1", "next_arrival":"9"}, 說明:目的地是「南岡山」的列車,將於1分鐘到站,下一班列車於9分鐘到站
- { "descr":"小港" ,"arrival":"6","next_arrival":"14"} 說明:目的地是「小港」的列車,將於6分鐘到站,下一班列車於14分鐘到站
- ]
- }
- 接下來使用「GET」的「JSON」功能取得捷運動態資料,程式如下
- 各雲端積木,說明如下:
- 利用「jason_opendata」來取得資料時,「雲端資料」只會顯示第一筆的第一欄資料,如上的「南岡山」;雲端資料筆數會顯示總筆數,如上的「2」筆
- 「Data剖析可使用的欄位」可以取得這些資料共有哪些欄位,像本例的 descr、arrival、 next_arrival
- 「Data剖析 第1筆的欄位 」可以取得第1個欄位的名稱,如本例的descr
- 「雲端資料 <選擇欄位> 第1筆的剖析資料」,如此就可以找到指定欄位的第幾筆資料,如本例的第1個欄位的第一筆資料為「南岡山」
- Scratch 2.0程式
- 舞台設計
- 除了上述雲端積木外
- 新增4個變數,分別:小港1(儲存下一班列車進站時間)、小港2(儲存下下一班列車進站時間)、南岡山1、南岡山2
- 為增加趣味化,新增兩個列車的角色
- 利用畫圖軟體,畫出有中文字的背景圖
- 舞台設計
- 舞台程式,利用雲端積木取得進站時間
- 註:每筆資料間,等待個0.5秒,有個緩衝時間,避免剖析資料錯誤
- 列車1(往小港)的程式
- 列車2(往南岡山)的程式
- 註:製作此題目時正值2016/09/27「梅姬颱風」來襲,捷運停使,無法好好測試!!
題目二: 左營區的PM2.5
- 本題目說明如何取得行政院環保署所提供的即時的「空氣品質汙染指標」資料
- 網址: http://opendata.epa.gov.tw/ws/Data/REWXQA/?$orderby=SiteName&$skip=0&$top=1000&format=json
- 同題目一的方式,先來取得原始資料,先分析一下
- 雲端資料:
- 再來找出這資料庫的欄位有哪些?我們要用的PM2.5在哪一個欄位?
- 經過以上的剖析後,如果要取得「左營」的PM2.5值,先要取得「左營」是此資料庫的第幾筆資料,當然也可以自己從資料庫中算出(由下圖可知是第17筆),但我們還是讓電腦去算比較精確,也比較現代化!然後這筆資料的第10個欄位,就是我們要的PM2.5!!
- 可利用程式求得,如下:
- Scratch 2.0 程式(找出左營的PM2.5值)
- 單位是:(μg/m3) 可與 「行政院環境保護署-空氣品質監測網」的資料做比較
- Scratch 2.0 程式(舞台設計)
結論:
- Transformer2.0有很強的雲端積木,就看你如何去應用了!!
- 有關積木的文字有些覺得怪怪的:
- 「顯示可使用的欄位」呈現的內容為「可使用的key:.......」,不知為何用「key」而不用「欄位」?
- 「Data 剖析 第1筆的欄位」,這邊用第幾筆,讓人覺得是第幾筆資料的錯覺,是否直接用「Data 剖析 第1個欄位」,會讓人更清楚!!
補充:可以利用http://json.parser.online.fr/來分析Json資料,例如,將上面取得的資料,放進此網站時,就可以整齊的排列我們取得的資料