【Android 入門開發實戰:口罩地圖】口罩即時庫存開放資料

【Android 入門開發實戰:口罩地圖】線上免費講義課程目錄

2020年初,爆發新型冠狀病毒肺炎(COVID-19)疫情,當時口罩搶破頭,面對一罩難求的情況下,政府管制口罩禁止出口,國內採實名制,民眾可持健保卡至藥局購買。政府開放口罩庫存資料,透明呈現每間藥局即時庫存,不用辛苦挨家挨戶的跑遍每間藥局詢問有無口罩,方便民眾購買口罩。

這次課程的題目, KT 老師,選擇貼近你我身邊的實際例子:「口罩地圖」,來做練習,我們實際動手做,本課程使用 Kotlin 程式語言,來串接口罩即時庫存的公開資料,從實作中來學習如何開發一款 Android APP 應用程式。有別於一般 Android 課程內容設計,或許之後疫情趨緩,再也用不上口罩地圖、但實際上這套課程,我們學到的不只是 Google Maps 應用口罩地圖的開發,而是一套紮實開發 Android 應用程式的方法。

有了這套開發經驗,我們只要將資料來源轉換成是天氣,他就會是一款氣象APP,同理換成 YouBike 微笑單車,他就可以變成隨時查詢,目前每站租借單車狀態的 APP,如果是公車進站資訊,就可以變成等公車 APP,以此類推。

政府資料開放平臺

在介紹「口罩資料」之前,KT 先跟大家介紹一下「政府資料開放平臺」,在這一個網站上,政府根據《政府資訊公開法》,收集了各縣市跨部門的單位資料。目前資料分類上共有18種,其中資料格式有常見的 CSV、XML、JSON 等多樣式格式提供給任何人,在其使用規範內,皆可以使用用該平臺所提供的開放資料自由運用,其中包含了重製、改作、公開傳輸和產生衍生物等。

口罩剩餘數量

而我們這次口罩資料源頭,也是隸屬在這個平台上,健保特約機構口罩剩餘數量明細清單 :

點擊頁面中的「檢視資料」,可以看到其他種資料格式:

開源的藥局資料結合衛生所即時庫存API資料

但上方開放資料只有口罩庫存資料,若我們想結合 Google Map 地圖來標示各藥局分佈,就還需要自己動手結合藥局資料與地址轉座標經、緯度資料。在此特別感謝有好心的大大神人 kiang,已經把我們統整了藥局資訊、口罩庫存與座標資料。我們不再重覆再造輪子,所以我們改採用 kiang 的 開源的藥局+衛生所即時庫存API資料

我們擷取其中一筆資料來瞧瞧,其中包含了,藥局名稱、營業時間、電話、地址、經緯度座標…等藥局相關資訊:

{
  "type": "FeatureCollection",
  "features": [
          {
            "type": "Feature",
            "properties": {
                "id": "5901024427",
                "name": "博昱仁愛藥局",
                "phone": "(02)87739258",
                "address": "臺北市大安區仁愛路4段65號",
                "mask_adult": 0,
                "mask_child": 450,
                "updated": "2020\/09\/13 11:32:37",
                "available": "星期一上午看診、星期二上午看診、星期三上午看診、星期四上午看診、星期五上午看診、星期六上午看診、星期日上午看診、星期一下午看診、星期二下午看診、星期三下午看診、星期四下午看診、星期五下午看診、星期六下午看診、星期日下午看診、星期一晚上看診、星期二晚上看診、星期三晚上看診、星期四晚上看診、星期五晚上看診、星期六晚上看診、星期日晚上看診",
                "note": "週間(週一至週五)上午9點發放號碼牌收取健保卡,下午2點領取",
                "custom_note": "",
                "website": "",
                "county": "臺北市",
                "town": "大安區",
                "cunli": "仁愛里",
                "service_periods": "NNNNNNNNNNNNNNNNNNNNN"
            },
            "geometry": {
                "type": "Point",
                "coordinates": [
                    121.546869,
                    25.038194
                ]
            }
        },
    ...
    ...
    ...
    
  ]
}

而課程大部分時間都是在練習如何使用開源資料,所以我們在學習的階段,暫時可以先不用訪問真實即時庫存資料,造成不必要的國家資源浪費,另外也防止之後疫情結束,政府口罩資訊下架,仍可以繼續學習使用,所以 KT 將 kiang 大大 統整的資料,其中一天特別備份,作為此課程日後學習開發使用。

部分藥局口罩資料(其中一天)
https://raw.githubusercontent.com/thishkt/pharmacies/fafd14667432171227be3e2461cf3b74f9cb9b67/data/info.json

完整藥局口罩資料(其中一天)
https://raw.githubusercontent.com/thishkt/pharmacies/master/data/info.json

參考資料

政府資料開放平臺-健保特約機構口罩剩餘數量明細清單
https://data.gov.tw/dataset/116285

口罩供需資訊平台
https://g0v.hackmd.io/@kiang/mask-info

藥局+衛生所即時庫存 geojson by kiang
https://raw.githubusercontent.com/kiang/pharmacies/master/json/points.json

那這次的課程就介紹到這邊囉~

順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。

我們下次再見囉!!!掰掰~

留言

這個網誌中的熱門文章

最新入門零基礎【從零開始學 Java 程式設計】線上教學課程目錄

NS - Nintendo Switch 遊戲比價網

【從零開始學 Kotlin 程式設計】Android Kotlin 線上教學課程目錄