06Json雲端應用

(2016/09/27 梅姬颱風)

題目一: 凹子底站的列車進站時間

  1. 這次要做的題目是學校附近的「凹子底站」,下一班列車及下下一班列車還要多少時間進站? (此題目參考WFduino)
  2. 首先先到高雄市政府資料開放平台OPEN DATA.KAOHSIUNG.GOV.TW,找到高雄捷運動態資料(http://data.kaohsiung.gov.tw/Opendata/DetailList_Mrt.aspx
    1. 高雄捷運各站的代號,可到捷運動態資料之站代號及站名稱對照表找到
  1. 啟動Transformer 2.0
    • 本題目不必使用 Arduino 等硬體
    • 啟動Transfor­mer v2.0程式 (請參閱前面說明
      • 因不使用硬體,所以介面選「不使用 arduino (default)
      • 檔案選「自動開啟「含網路積木」
    • 進入Scratch2.0程式(離線版),並且發現 02 出現「綠燈」,連線成功!
  2. Scratch 2.0程式 (認識Transformer雲端積木的使用)
    • 先利用「GET」的功能取得捷運動態資料,網址http://data.kaohsiung.gov.tw/Opendata/MrtJsonGet.aspx?site=112 ;112代表凹子底站,程式如下:
      1. 先利用raw 取得原始資料
      2. 等待一段時間,此等待時間與資料量有關,資料量如果越大,要等待的時間就要越久
      3. 只出現1筆的「雲端資料」
      4. 將雲端資料存入d:\temp.txt
      5. 開啟d:\temp.txt,來了解所取得的雲端資料
    • 開啟d:\temp.txt的結果如下:
      • 將內容整理如下,會看得比較清楚:
      • { "MRT":
      • [
      • { "descr":"南岡山","arrival":"1", "next_arrival":"9"}, 說明:目的地是「南岡山」的列車,將於1分鐘到站,下一班列車於9分鐘到站
      • { "descr":"小港" ,"arrival":"6","next_arrival":"14"} 說明:目的地是「小港」的列車,將於6分鐘到站,下一班列車於14分鐘到站
      • ]
      • }
      • 接下來使用「GET」的「JSON」功能取得捷運動態資料,程式如下
      • 各雲端積木,說明如下:
      1. 利用「jason_opendata」來取得資料時,「雲端資料」只會顯示第一筆的第一欄資料,如上的「南岡山」;雲端資料筆數會顯示總筆數,如上的「2」筆
      2. 「Data剖析可使用的欄位」可以取得這些資料共有哪些欄位,像本例的 descr、arrival、 next_arrival
      3. 「Data剖析 第1筆的欄位 」可以取得第1個欄位的名稱,如本例的descr
      4. 「雲端資料 <選擇欄位> 第1筆的剖析資料」,如此就可以找到指定欄位的第幾筆資料,如本例的第1個欄位的第一筆資料為「南岡山」
  1. Scratch 2.0程式
    • 舞台設計
      1. 除了上述雲端積木外
      2. 新增4個變數,分別:小港1(儲存下一班列車進站時間)、小港2(儲存下下一班列車進站時間)、南岡山1、南岡山2
      3. 為增加趣味化,新增兩個列車的角色
      4. 利用畫圖軟體,畫出有中文字的背景圖
      • 舞台程式,利用雲端積木取得進站時間
      • 註:每筆資料間,等待個0.5秒,有個緩衝時間,避免剖析資料錯誤
      • 列車1(往小港)的程式
      • 列車2(往南岡山)的程式
  • 註:製作此題目時正值2016/09/27「梅姬颱風」來襲,捷運停使,無法好好測試!!

題目二: 左營區的PM2.5

  1. 本題目說明如何取得行政院環保署所提供的即時的「空氣品質汙染指標」資料
  2. 網址: http://opendata.epa.gov.tw/ws/Data/REWXQA/?$orderby=SiteName&$skip=0&$top=1000&format=json
  3. 同題目一的方式,先來取得原始資料,先分析一下
  1. 雲端資料:
  1. 再來找出這資料庫的欄位有哪些?我們要用的PM2.5在哪一個欄位?
  1. 經過以上的剖析後,如果要取得「左營」的PM2.5值,先要取得「左營」是此資料庫的第幾筆資料,當然也可以自己從資料庫中算出(由下圖可知是第17筆),但我們還是讓電腦去算比較精確,也比較現代化!然後這筆資料的第10個欄位,就是我們要的PM2.5!!
    1. 可利用程式求得,如下:
  1. Scratch 2.0 程式(找出左營的PM2.5值)
    1. 單位是:(μg/m3) 可與 「行政院環境保護署-空氣品質監測網」的資料做比較
  1. Scratch 2.0 程式(舞台設計)
    1. 小朋友,請發揮創意來設計呈現畫面!!
    2. 參考資料:http://blog.cavedu.com/programming-language/appinventor/app-inventor-%E8%A1%8C%E6%94%BF%E9%99%A2%E7%92%B0%E4%BF%9D%E7%BD%B2%E5%8D%B3%E6%99%82%E7%A9%BA%E6%B1%A1%E6%8C%87%E6%A8%99%E6%9F%A5%E8%A9%A2/

結論:

  1. Transformer2.0有很強的雲端積木,就看你如何去應用了!!
  2. 有關積木的文字有些覺得怪怪的:
    • 「顯示可使用的欄位」呈現的內容為「可使用的key:.......」,不知為何用「key」而不用「欄位」?
    • 「Data 剖析 第1的欄位」,這邊用第幾筆,讓人覺得是第幾筆資料的錯覺,是否直接用「Data 剖析 第1欄位」,會讓人更清楚!!

補充:可以利用http://json.parser.online.fr/來分析Json資料,例如,將上面取得的資料,放進此網站時,就可以整齊的排列我們取得的資料