2016年10月26日 星期三

Scratch & OpenData :以桃園路外停車資訊為例

什麼是Open Data?什麼是JSON?Scratch可以做出什麼Open Data的應用?
以下是我的探索過程!




最近隨著雲端、大數據(Big Data),跟著世界的潮流,政府也有了資料開放平台,讓一些公共的資料,透過網路獲得各種資料,甚至是即時的資料。



首先要找到自己有興趣的開放資料,身為在地人當然是選以下的網站,雖然目前即時性的不多,相信以後會越來越豐富。




找來找去,又要有中文的,又不要太複雜的,最後找到這個「路外停車資訊」,可以提供各公立停車場的即時資訊(每分鐘更新)



Open Data常透過網頁的API形式來查詢資料,所以找到了下面的API的查詢網址。
格式用目前網路上交換資料流行的JSON格式。



直接點下API的連結,瀏覽器出現的是密密麻麻的JSON數值。


JSON是什麼?它起源於Javascript,是資料(數字、文字、物件)的文字表示方法 ,後來變成是網路上流行的資料交換格式


JSON雖是輕量型的文字表達(比較起XML)但是資料過多,直接看還是不方便。所以可在將JSON的文字,貼到類似JSON VIEWER的工具,這樣結構看起來就會清楚多了。



另外也可以稍參考一下開放資料的開發指南,裡面有提到一些查詢語法的細節。像我這次的路外停車資料,它的API網址是:


最後的format=json是表示資料要用json格式,其他的還有CSV或是XML。可是對我而言,這樣的資料還是太多,像我只需要桃園區的停車場資料。依開發指南,可以再加一個filters查詢變數。

http://data.tycg.gov.tw/api/v1/rest/datastore/0daad6e6-0632-44f5-bd25-5e1de1e9146f?format=json&filters={"areaName":"桃園區"}

這樣就可以過濾掉一些不必要的資料。



找到了想要的資料,接著要在Scratch做相關的規劃,由於Scratch的資料結構,只有清單可以使用,類似其他語言的陣列,清單的項目可以是文字或數字,不過只能是一維的,所以在配置上就比較費功夫。



接下來是要如何解析Open Data的JSON資料呢?這部份Transformer社群版已幫我們打通關節,
如下圖,在連線時,檔案的部分要用「自動開啟(含網路積木)」




這樣才會在Scratch內,有相關的擴充積木。


抓取資料積木的例子如下圖,HTTP GET資料類型,記得要用json_opendata(開放資料使用),Data剖析完後,就可以雲端資料選擇欄位與第幾筆,最後用剖析資料來當成文字的值。

因為每一個資料,都必需透過中介程式,所以資料抓取的速度會慢(太快會有資料來不及產生的情形),所以在規畫上,抓取的資料不要太多,不然會等得很辛苦。




抓到資料,並放進Scratch清單後,還要考慮資料如何呈現。因為有不同的停車場,所以我第一個想到的是Google地圖,為了增一點動態效果,再加上2張畫面捲動的功能。


除了地圖以外,還有貓咪會說出相關訊息。右方有計費、車位數、地址資料,右下有切換停車場的按鈕。


最後做出來的Scratch作品如下影片。





本來還想讓查出來的資料,再加上轉語音的積木,變成語音唸出。不過由於我筆電的關係,無法使用這個功能,就做罷了。

最後要感謝的是Transformer社群版的中介程式:

宇宙機器人

以及參考了呂奎漢老師的例子

https://www.facebook.com/TonightCode/posts/857000691100807

最後附上作品的Scratch檔案:

https://drive.google.com/file/d/0B2bn9imRnAgdd1g5aVBPUFVSUmM/view?usp=sharing






沒有留言:

張貼留言