JSON格式資料運用(OSEP scratch)
開放資料 (英語:Open data) 指的是一種經過挑選與許可的資料,這些資料不受著作權、專利權,以及其他管理機制所限制,可以開放給社會公眾,任何人都可以自由出版使用,不論是要拿來出版或是做其他的運用都不加以限制。(註1)
政府資訊公開法(註2)有政府資訊公開的相關規定,行政院及各縣市政府也都有相關資料公開網站。(註3)
這些開放的資料很多都是使用JSON格式(註4),因此使用時需要一點點技巧。
OSEP scratch 使用了幾個積木,幫助學生可以簡單的解讀這些資料。
——————————–
積木說明
填上將要讀取資料的來源網站網址(一般網址最後會有.json)
選擇要讀取第幾筆資料
選擇資料欄位
顯示該筆資料內容,框框打勾可以在螢幕顯示
JSON資料檔一般都有很多筆資料,每一筆資料裡面有很多不同的欄位存放不同的資料。
填入要讀取第幾筆資料,和要讀取的欄位名稱,執行時就會去找到該筆資料。
注意:
因為網路讀取資料,會因網路品質影響讀取速度,請加[等待…秒],讓資料能順利讀取。
—————————————
讀取LASS資料
1.LASS開放資料下載,請點選[https://pm25.lass-net.org/],下方找到[單一感測器的最近一筆資料],填上測站感測器編號[註5],按[送出]
2.出現測站的PM2.5資料,就是JSON格式
程式設計:
1.直接點OSEP網址:
https://ys-fang.github.io/OSEP/app/
開啟OSEP線上(網頁)版(請使用chrome瀏覽器)。
在網頁左下角點[添加擴展]
2添加[JSON],這個擴展功能積木。
3.程式說明
1.設定[DATA]、[feeds]、[AirBox]3個變數
2.從LASS網站讀取JSON資料
3.重複讀取、說出資料。
4.設定[DATA]變數是原始JSON全部的資料
5.設定[feeds]變數是原始JSON裡面 feeds 欄位的資料
6.設定[AirBox]變數是 feeds 欄位裡面的 [AirBox] 欄位的第一筆資料
7.說出[AirBox]變數(第一筆資料)裡面,欄位名稱為SiteName的資料
8.等待2秒
9.說出[AirBox]變數(第一筆資料)裡面,欄位名稱為s_d0的資料(PM2.5值)
程式下載:PM2.5(json) .sb3
———————————————
空氣品質指標(AQI)自動警報系統
———————————————
1.直接點OSEP網址:
https://ys-fang.github.io/OSEP/app/
開啟OSEP線上(網頁)版(請使用chrome瀏覽器)。
在網頁左下角點[添加擴展]
2添加[JSON],這個擴展功能積木。
3.到 (行政院環境保護署-空氣品質監測網) 點連結 https://airtw.epa.gov.tw/CHT/EnvMonitoring/Central/CentralMonitoring.aspx ,查離學校最近的測站名稱,記下來。
4.點右上角[綠旗],輸入[測站名稱],按[Enter]
5.自動顯示現在的AQI值及警示畫面。
程式說明:
A、舞台:
用不同顏色來表示空氣品質
B、主程式:
1.先提問[測站名稱],將答案(測站名稱)存入變數備用。
2.到環保署公開資料庫(註6),讀取json資料。
3.先計算要讀的測站是第幾筆資料。
4.讀取測站的AQI值,依據AQI值,判斷要顯示(說)哪一種警告畫面及背景。(註7)
請自行發揮創意設計。
6.修改程式的等待時間可以改變讀取更新的時間。
程式下載:AQI空氣品質看板.sb3
延伸:
1.當空氣品質AQU不好超標時,自動在line群組發出警示訊息,通知全校(群組)老師。
2.顯示所有空氣品質監測資料:細懸浮微粒( PM2.5 )、懸浮微粒( PM10 )、二氧化硫( SO2 )、氮氧化物( NOx )、一氧化碳( CO )、臭氧( O3 )
——————————–
補充資料:
1.中研院PM2.5 開放資料入口網站
https://pm25.lass-net.org/zh_tw/
JSON 格式 API(更新頻率:每 5 分鐘)
2.南投地區PM2.5開放資料網址如下:
http://www.airq.org.tw/Home/AboutData_ZH
JSON 格式 API(更新頻率:每 10分鐘)
http://www.airq.org.tw/Home/realtime10m
請寫程式將您家附近測站的PM2.5資料抓下使用。
——————–
註1:開放資料
https://zh.wikipedia.org/wiki/%E9%96%8B%E6%94%BE%E8%B3%87%E6%96%99
註2:政府資訊公開法
http://law.moj.gov.tw/LawClass/LawAll.aspx?PCode=I0020026
註3:政府資料開放平臺 http://data.gov.tw/
政府資料開放平臺,是中華民國政府根據《政府資訊公開法》規定,採開放資料的精神,所建立的一個跨部門計畫。
該計畫目前採取了CSV、XML、JSON、OLAP、TXT等格式提供資料集,任何人(包括企業)在其使用規範內,可以利用該平臺所提供的開放資料自由運用(包括重製、改作、公開傳輸、產生衍生物等)。
政府資料標準平臺 API服務
註4:
https://zh.wikipedia.org/wiki/JSON#WEB.E5.BC.80.E5.8F.91
JSON(JavaScript Object Notation)是一種由道格拉斯·克羅克福特構想設計、輕量級的資料交換語言,以文字為基礎,且易於讓人閱讀。儘管JSON是Javascript的一個子集,但JSON是獨立於語言的文字格式,並且採用了類似於C語言家族的一些習慣。
JSON原始檔格式不容易判讀,可以利用線上編輯器整理,讓資料更容易觀看。
點 http://json2table.com/ 開啟轉換網頁
將原來的JSON網頁內容,全選複製後貼上這個網頁的最左邊那一欄。
然後點上面的 [ > ]
再點上面的 [ Table ]或 [Tree],就可以看到比較整齊的列表。
註5:
搜尋測站編號請參考:
https://2blog.ilc.edu.tw/868/44807/
註6:
OpenData.epa 行政院環境保護署 環境資源資料開放平台
空氣品質指標(AQI)(每小時)
https://opendata.epa.gov.tw/Data/Contents/AQI/
選[OPEN API]
https://opendata.epa.gov.tw/api/v1/AQI?%24skip=0&%24top=1000&%24format=json (新版)
http://opendata2.epa.gov.tw/AQI.json (舊版)
空氣品質指標(AQI)資料說明
https://opendata.epa.gov.tw/Data/Details/AQI/?show=all
主要欄位說明 | SiteName(測站名稱)、County(縣市)、AQI(空氣品質指標)、Pollutant(空氣污染指標物)、Status(狀態)、SO2(二氧化硫ppb)、CO(一氧化碳ppm)、CO_8hr(一氧化碳8小時移動平均ppm)、O3(臭氧ppb)、O3_8hr(臭氧8小時移動平均ppb)、PM10(懸浮微粒μg/m3)、PM2.5(細懸浮微粒μg/m3)、NO2(二氧化氮ppb)、NOx(氮氧化物ppb)、NO(一氧化氮ppb)、WindSpeed(風m/sec)、WindDirec(風向degrees)、PublishTime(資料發布時間)、PM2.5_AVG(細懸浮微粒移動平均值μg/m3)、PM10_AVG(懸浮微粒移動平均值μg/m3)、SO2_AVG(二氧化硫移動平均值ppb)、Longitude(經度)、Latitude(緯度)、SiteId(測站編號)。 |
註7:
http://taqm.epa.gov.tw/taqm/tw/b0201.html
空氣品質指標(AQI)與健康影響,空氣品質指標(AQI)與活動建議
註8:
http://taqm.epa.gov.tw/taqm/tw/b0201.aspx
空氣品質指標為依據監測資料將當日空氣中臭氧(O3)、細懸浮微粒(PM2.5)、懸浮微粒(PM10)、一氧化碳(CO)、二氧化硫(SO2)及二氧化氮(NO2)濃度等數值,以其對人體健康的影響程度,分別換算出不同污染物之副指標值,再以當日各副指標之最大值為該測站當日之空氣品質指標值(AQI)。
http://taqm.epa.gov.tw/taqm/tw/b0202.aspx
細懸浮微粒( PM2.5 )
PM2.5係指微粒氣動粒徑小於2.5微米,單位以微克/立方公尺表示之,由於PM2.5較PM10更容易深入人體肺部,對健康影響更大,若細微粒又附著其他污染物,將更加深呼吸系統之危害。
懸浮微粒( PM10 )
係指粒徑在10微米以下之粒子,又稱浮游塵。主要來源包括道路揚塵、車輛排放廢氣、露天燃燒、營建施工及農地耕作等,或由原生性空氣污染物轉化成之二次污染物,由於粒徑小於10微米以下,能深入人體肺部深處,如該粒子附著其他污染物,則將加深對呼吸系統之危害。
二氧化硫( SO2 )
除自然界產生外,一般為燃料中硫份燃燒與空氣中之氧結合者,為一具刺激臭味之無色氣體,易溶於水,與水反應為亞硫酸;於空氣中可氧化成亞硫酸,為引起酸雨的主要物質之一。
氮氧化物( NOx )
氮氧化物主要包括一氧化氮(NO)及二氧化氮(NO2),其生成原因係來自燃燒過程中,空氣中氮或燃料中氮化物氧化而成,一氧化氮為無色無味氣體,稍溶於水,燃燒過程生成之氮氧化物以一氧化氮為主要成份,光化學反應中可反應成二氧化氮。
二氧化氮為具刺激味道之赤褐色氣體,易溶於水,與水反應為亞硝酸及硝酸;參與光化學反應,吸收陽光後分解成一氧化氮及氧,在空氣中可氧化成硝酸鹽,亦是造成雨水酸化原因之一。
一氧化碳( CO )
除森林火災、甲烷氧化及生物活動等自然現象產生外,主要來自石化等燃料之不完全燃燒產生,無色無味,比空氣輕,由於一氧化碳對血紅素的親和力比氧氣大得多,因此,可能造成人體及動物血液和組織中氧氣過低,而產生中毒現象。
臭氧( O3 )
係一種由氮氧化物、反應性碳氫化合物及日光照射後產生之二次汙染物。具強氧化力,對呼吸系統具刺激性,能引起咳嗽、氣喘、頭痛、疲倦及肺部之傷害,特別是對小孩、老人、病人或戶外運動者有較大影響,同時對於植物,包括農作物有不良影響,對於人造材料,諸如橡膠(輪胎等)及油漆等,均能造成危害。
http://taqm.epa.gov.tw/taqm/tw/b0203.aspx
即時空氣品質指標(AQI)計算方式如下:
各測項即時濃度依下列公式計算後,再對應下表得出O3、PM2.5、PM10、CO、SO2、 NO2等6個測項之即時副指標值,再取出其中最大值為即時空氣品質指標,該最大值測項即為指標污染物:
O3,8hr | : | 取最近連續8小時移動平均值 (例如今日上午10點發布的O3的8小時濃度平均值,是取今日上午2點至上午9點監測數據的平均值。) |
O3 | : | 取即時濃度值 |
PM2.5 | : | 0.5 × 前12小時平均 + 0.5 × 前4小時平均 (前4小時2筆有效,前12小時6筆有效) |
PM10 | : | 0.5 × 前12小時平均 + 0.5 × 前4小時平均 (前4小時2筆有效,前12小時6筆有效) |
CO | : | 取最近連續8小時移動平均值 (例如今日上午10點發布的CO的8小時濃度平均值,是取今日上午2點至上午9點監測數據的平均值。) |
SO2 | : | 取即時濃度值 |
SO2,24hr | : | 取最近連續24小時濃度平均值 (例如今日上午10點發布的SO2的24小時濃度平均值,是取前1天上午10點至今日上午9點監測數據的平均值。) |
NO2 | : | 取即時濃度值 |
污染物濃度與即時副指標值對照表
- 一般以臭氧(O3)8小時值計算各地區之空氣品質指標(AQI)。但部分地區以臭氧(O3)小時值計算空氣品質指標(AQI)是更具有預警性,在此情況下,臭氧(O3)8小時與臭氧(O3)1小時之空氣品質指標(AQI)則皆計算之,取兩者之最大值作為空氣品質指標(AQI)。
- 空氣品質指標(AQI)301以上之指標值,是以臭氧(O3)小時值計算之,不以臭氧(O3)8小時值計算之。
- 空氣品質指標(AQI)200以上之指標值,是以二氧化硫(SO2)24小時值計算之,不以二氧化硫(SO2)小時值計算之。
瞭解JSON格式
相關連結:
PM2.5環境監測超簡單(第二十四課)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/652136
相關連結:
OSEP scratch3課程目錄
https://2blog.ilc.edu.tw/868/44668/
OSEP第0課 概論(課前準備)程式安裝
https://2blog.ilc.edu.tw/868/44734/
用scratch學物聯網(IOT)
語音控制超簡單(OSEP scratch)
https://2blog.ilc.edu.tw/868/44875/
即時空氣品質監測看板(OSEP scratch3)(LASS資料庫應用)
https://2blog.ilc.edu.tw/868/44690/
即時空氣品質監測看板(OSEP 實用版)
https://2blog.ilc.edu.tw/868/44807/
IFTTT物聯網的運用(OSEP scratch3)
https://2blog.ilc.edu.tw/868/44812/
大數據之雲端資料儲存
ThingSpeak雲端資料庫應用(OSEP scratch3)
https://2blog.ilc.edu.tw/868/44928/
大數據之網路資料運用
JSON格式資料運用(OSEP scratch)
https://2blog.ilc.edu.tw/868/44903/