【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 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。

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

這個網誌中的熱門文章

16天記下7000單字

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

2022 最新入門零基礎 Flutter教學 【Flutter 程式設計入門實戰 30 天】Flutter 教學課程目錄 (IntelliJ IDEA 開發教學)

nano 文字編輯器

【從零開始學 Flutter 程式設計】SharedPreferences 設定檔資料存取