TNDengueMain

    來台南吃喝玩樂的朋友,您是否知道自己正身處登革熱疫情熱區,應該要提高警覺呢?
     
    住台南的朋友,您是否能及時發現住家附近發生通報疫情,可能不久之後要被室內噴藥呢?
     
    您希望多瞭解自己的居住的鄰里,最近的登革熱疫情是否逐漸趨緩了呢?
     
    您是否覺得官方媒體公佈的登革熱資訊不夠清楚、不夠公開透明,有看沒有懂?
     
    以上這些問題,現在都不是問題了。
     
    面對疫情,現在您有更方便掌握資訊的方法,只需滑動您的手機!
     
    App 下載網址:appstore
     
    這是至今為止,行動裝置上最方便好用的台南登革熱資訊查詢工具,高達兩萬多筆登革熱疫情資訊,以及上千筆化學噴藥防治時程,透過簡單明瞭的視覺化地圖定位,彈指間就能輕鬆獲得您想知道的登革熱資訊。有效掌握疫情資訊,消滅登革熱一統天下的日子指日可待。
     
    特點:
    1. 有效且靈活運用「臺南市政府資料開放平台」兩萬多筆通報資料。
    2. 超強又簡便的地圖查詢介面,支援多重關鍵字查詢。
    3. 透過手機裝置,一鍵定位是否身處疫情熱區,超好用der!
    4. 支援通知中心,快速得知最新資料日期,不需時時刻刻進入 APP 查詢。
    5. 將關注的 區 / 里 疫情加入常用項目,結合地圖查詢介面,輕鬆關注區 / 里的疫情變化。
    6. 圖表統計疫情分佈,關注地區疫情趨勢一目了然。

    操作說明:

    主畫面

    1. 啟動 App 的第一個動作,會先自動從「臺南市政府資料開放平台」下載通報資料與噴藥記錄。

    TNDengue_01  

    若沒有網路的話,會顯示如下的錯誤訊息。

    TNDengue_02

    一開始沒有網路的話,也抓不到資料,後面就不用介紹啦!所以請確認網路環境是否正常連線。

    當所有的可用資料抓完之後,主畫面就有資料啦!接下來就可以進行各項功能操作了。

    主畫面功能說明:

     TNDengue_03  

    主畫面中顯示藍色的地方,按下去都是有功能的啦!會不會很容易理解呢?其中:

    疫情分佈查詢 / 噴藥地點查詢 / 疫情分佈查詢:常用項目 / 分佈地圖:這四個功能按下去,畫面都會進入地圖查詢頁面,並附帶符合條件的關鍵字。

    例如,點擊 TNDengue_flag01 功能按鈕,畫面會切換到地圖查詢介面,搜尋最後日期的資料並顯示在地圖上:

    TNDengue_04

    點擊 TNDengue_Chemical01 就是把最新噴藥日期 11-18 的 13 筆噴藥紀錄顯示在地圖上。

    TNDengue_05  

    常用項目:這一區塊是可以捲動的,包含「區別」3 筆與「里別」3 筆,點擊常用項目內的資料,例如點擊「東區」這一筆

    TNDengue_06    

    就會把 2015-11-16 的東區新增的 10 筆疫情顯示在地圖上。

    TNDengue_07 

    那麼…點擊在新增疫情為 0 筆的項目上呢?例如大恩里 2015-11-16 的 新增/總數 為 0 / 93,點擊之後:

    TNDengue_08

    查詢 2015-11-16 大恩里疫情 0 筆記錄沒有意義,所以會自動轉換成查詢大恩里全部疫情 93 筆並顯示在地圖上。

    (上面的「大恩里」疫情座標,看起來怎麼怪怪的啊~?還有標示在鹽水溪北岸的…恩~這個問題,請跟市政府大力反應吧!他們提供的座標就是錯誤的,回報錯誤的人也不只我一個人,但公開資料平台也始終沒有更正,真正的原因我也不清楚。)

    各位發現了嗎?每一個地圖查詢畫面下方,都有不一樣的關鍵字。結果的不同,關鍵就在查詢的關鍵字上…
    關鍵就在查詢的關鍵字上…
    關鍵就在查詢的關鍵字上…
    (很重要,說三次)

    所以啦!這支 App 最好用的地方,就是這個地圖查詢功能啦!接下來要隆重介紹,超強又好用的地圖查詢功能。

    地圖查詢功能

    從主畫面的 TNDengue_09 點進去,就會直接不帶關鍵字的方式進入地圖查詢畫面了。

    TNDengue_10

    截至 2015 年 11 月中旬就已經有兩萬多筆記錄,若全部顯示在地圖上的話,手機就會當場卡.卡.卡.卡.卡….然後就不小心閃退當機啦!就算用了蘋果公司最快最大最強最新最屌的 iPhone 6s 噗拉絲,照樣也會給你當場卡.卡.卡.卡.卡,然後……

    就沒有然後了,因為我沒有 iPhone 6s 噗拉絲,太貴了,買不起…(現在還在用 iPhone 4s)

    iPadPro_11

    所以雖然有兩萬多筆資料,不過地圖上也只會顯示最新的 1,000 筆疫情與 200 筆的噴藥紀錄。以 11 月以來降至每天兩位數的疫情來看,1,000 筆大約是 10 月下旬以後的紀錄。

    限制 1,000 筆記錄並不表示 App 只能查詢最近一千筆的紀錄,它真正的意思是,如果查詢結果超過 1,000 筆,也只會在地圖上顯示日期最新的 1,000 筆資料。搜尋結果若少於 1,000 筆時就會全部顯示出來。

    善用關鍵字

    地圖查詢的關鍵字支援多重條件,例如:

    查詢「2015-10 泉南里 東門」得到 21 筆資料,也就是搜尋範圍限制在2015年10月份泉南里東門路附近的疫情。其中「2015-10」、「泉南里」、「東門」這三個關鍵字順序沒有限制,中間只需用空格隔開即可。關鍵字組的個數也沒有限制,條件下得越多,結果更精確,每一組關鍵字都必須滿足才會顯示在地圖上。

    TNDengue_12

    疫情與噴藥紀錄同時搜尋

    地圖查詢結果會同時顯示通報疫情與噴藥紀錄,例如關鍵字只輸入「泉南里」,結果如下:

    TNDengue_15

    某些疫情標示會特別的「紅明顯」,原因就是該座標不只有一筆資料。點擊疫情標示後,會顯示發生在該座標的所有通報紀錄,依日期排序,一目了然。

    TNDengue_16  

    開放平台提供的座標精度只到小數點第三位(據說是個資法保護),每 0.001 相隔大約是一百多公尺,所以常有同一地點出現一堆通報病例。大概就兩種含義:

    1. 該地為連續發生疫情熱區,估計這附近的住戶家裡應該被噴藥噴了很多次。
    2. 座標錯誤,可能是登錄資料時不明原因以該座標輸入。

    點擊紀錄右邊的 [+] 或是每一筆紀錄本身時,就能把這筆紀錄列為常用項目啦!可選擇要新增「區」或是「里」,新增後在主畫面和統計圖表的常用項目就看得到了。只支援紀錄最近新增的三筆區別或里別資料喔!

    TNDengue_17

    點擊地圖上噴藥的圖示,就會顯示在該地點的所有噴藥記錄,也是一樣因為座標精度的不足,有可能出現多筆。

    TNDengue_18 

    TNDengue_19 

    定位功能

    在地圖查詢介面中,只需點擊右下角的LocationOn 圖示,就能打開定位功能。 

    TNDengue_20

    空白關鍵字只顯示最近 1,000 筆資料的特性,再把定位功能打開時,就能知道自己是否身陷疫情熱區,時時刻刻提高警覺,還是趕緊就近趕緊買個防蚊液吧!萬一買不到防蚊液,還可以這樣做:

    TNDengue_Chicken  

    關鍵字訣竅

    1. 關鍵字組中,包含「疫情」,則只查詢登革熱通報疫情資料。
    2. 關鍵字組中,包含「噴藥」,則只查詢噴藥資料。
    3. 日期的差異:開放平台的資料中,通報疫情包含「年(4位)-月(2位)-日(2位)」(例如 2015-11-01),但噴藥記錄卻只有「月(2位)-日(2位)」(例如 11-01),如果關鍵字組中包含年份,也只會查詢通報疫情。(不懂噴藥記錄為何沒有加入年份…)

    統計圖表

    從主畫面點擊「統計圖表」即可。

    iOS Simulator Screen Shot 2015年11月18日 上午2.25.02  

    分成日期跟月份兩種統計區間,點擊下方的標籤可切換。點擊圖表上面的圓點,會顯示統計的值。

    通知中心

    App 支援 iOS8 的通知中心,輕輕一滑就知道開放平台的資料更新到哪一天,再決定要不要點進去 App 撈資料,很方便喔!

    TNDengue_Today  

    關於「台南登革熱」

    最後就是懇請支持啦~這麼好用的 App ,進入頁面時預設會載入廣告。

    如果不想被廣告干擾的話,請從主畫面右上方點擊 TNDengue_21 ,購買「移除廣告」功能,NT$30 比一杯珍奶還便宜啊!請多多支持並鼓勵 本土型 App 的個人開發創作者如小弟我,讓我有更多的動力( ㄑㄧㄢ/ )來開發出更多的資料平台應用 App  (ㄇㄞˇ  ㄞ  ㄈㄥˋ  ㄌㄧㄡˋ  ㄟ  ㄙ  ㄆㄨˇ ㄌㄚ  ㄙ ),甘溫啦!

    TNDengue_22  

     

    後記

    本來沒打算寫這個 App ,不過今年的蘇迪勒風災之後,台南的登革熱疫情突然間大爆發,關注通報病例變成很多台南人每天必要的功課。

    說到關注通報疫情,大部份的人也只是加入台南市政府的 LINE,了不起再連線到市府衛生局網站,翻閱又臭又長的 Excel 表格,最多也知道「哪個里」昨天又多了幾個病例而已。然而在台南市政府資料開放平台上也有疫情資料,並加入了座標與 路/街 名稱,應該是比較有參考價值。可是我搜尋了 AppStore ,竟然沒有任何一支 App 使用平台上的登革熱資料,現今已是 App 爆炸的時代,實在是令人匪夷所思…

    「那就乾脆自己寫一個吧!」沒有就自己搞一個,是我一貫信念。差不多九月中下旬的時候,這個專案正式啟動了,當時想說應該不難,很快就能搞好。

    萬萬沒想到,這竟然是自找麻煩的開始。請聽我娓娓道來~(泡茶)

    ——

    一開始,基礎的程式兩三天就寫好了,後來還加了一丁點美化的元素,倒也自用得開心。可是沒多久,問題卻漸漸的開始浮現…

    某天發現,App 一開就閃退了,問題找了半天,發現是資料的問題,當天有些資料出現莫名其妙的 NULL 空值。好吧~加個判斷,很快就修好了。

    過了幾天,發現某天「東區」的疫情出現 0 ,想說賴神再神,也不可能將疫情瞬間消滅啊!果不其然,審視原始資料,當天的資料變成「東  區」,兩個字的區其實都有這問題(北區、南區…)…嗯~好吧!再改,一律拿掉空格,問題,也是不大…

    過了幾天,打開 App 竟然又閃退了。再檢查,發現竟然是座標的問題。座標錯了就錯了啊!怎麼會發生閃退?

    原來是當天的資料,經度跟緯度弄反了!緯度欄位被填入經度座標 122.xxx,緯度值 > 90 度時發生閃退,TNND 真想罵髒話,再加了判斷式,修好了…

    又過了幾天,我發現資料的發布方式改了,它先來個「截至2015/09/30」,再從 10 月開始,每天產生一個獨立連結。然後每天連結取得的資料,欄位變少,識別編號竟然就這麼沒了。

    換句話說,撈資料的邏輯全改了,這一塊撈取程式得重寫,真是要吐血了!

    所以我終於知道,為何 AppStore 上面沒有相關應用。有誰願意浪費生命,跟這種邏輯改來改去,資料也錯來錯去的人為低級錯誤,繼續周旋下去?

    於是給它放著觀察幾天,看起來這個邏輯應該是確定了。好吧!再改一次,又花了點時間重寫撈資料程式,時間已經來到十月中下旬。

    才開心終於又搞好了,卻在自己寫的 App 裡,看到住家附近被標上了疫情通報。

    「恩~這個應該是又弄錯了吧!資料中很多座標都是錯的!」心裏雖不以為意,但還是有點擔心這可能是真的…

    又過了兩天,某天下午家門口被貼了噴藥公告,預告後天後要被噴藥,我只有一天的時間準備!

    Spraying10xx 

    WTFUXK!沒想到竟然是真的。我的 App 提早兩天預告被噴藥個可能性,It works!不知該哭還是該笑?噴藥當天衛生局的人說,正因為這附近發生疫情,半徑 50 公尺內都是室內化學噴藥範圍。

    噴藥前後的那幾天,打掃環境收拾善後,整個人累攤了。本來就沒什麼蚊子,噴藥後四天,我親手消滅了一隻蚊子,開始擔心被二次噴藥的可能性,於是恐慌症發作,每天盯著 App 查詢有沒有新的疫情…

    再過了沒兩天,發現資料怎麼又怪怪的了?我撈到的資料筆數,跟官方發佈的數字,差距怎麼越來越大?

    發現原來不是每天都有 API 串接,看來真的得改用 CSV 了。本來想放棄,但恐慌症驅使下,所以我又千辛萬苦搞定 CSV 的程序。嗯!幫自己按個讚!

    可是…災難還沒結束啊!後來又發現特定某幾天的 CSV 根本吃不下來,研究了好久,發現是轉碼的問題。

    現在幾乎都是 UTF-8 了,沒想到這個資料開放平台上,萬年 BIG5 碼神蹟再現啊!這已經是上個世紀的產物,終究…我還是解決了它。

    看到這裡大家也應該知道了,說什麼開放資料平台,其實也只是把一堆本來的人為 Paper Work 放到平台上而已。如果本來就是用系統管理,就不會出現經緯度相反、BIG5 碼這種明顯的人為錯誤。

    更可以推測,原始端應該不只一個人在做放資料這件事,應該是花了不少人力跟金錢,有做卻沒把事情做好,難道公家機關行事風格就這樣?

    然後時間也來到十一月初,疫情也下降了,這個專案前前後後竟也花了我一個多月的時間。想想若只是自用,還真是不甘心啊~

    所以決定再加把勁,讓它通過 Apple 審查上架,與大家分享吧!經歷漫長的審查過程(歪果人的感恩節),最終 App 就是大家現在看到的這個樣子了…

    若各位覺得已經緩不濟急,那我只能泡好咖啡,對著電腦,路上無車無人,夜深無聲,跟大家說聲:

    「對不起,我來晚了…」

    今年的台南的登革熱疫情,已奪走了一百多條人命,並重創台南的觀光業,算是很嚴重的大事,但 AppStore 為何連一支 App 都沒有(或許是我沒找到)?其中的關連,或許值得大家一起思考,真正的問題到底出在哪裡。不論是弄個資料開放平台也好,或是一再的化學噴藥也罷,決定要做一件事的時候,目標應該定在哪裡?是要做好,還是有做就好呢?

     

    其他補充:

    「臺南市政府資料開放平台」網站
    http://data.tainan.gov.tw/
     
    本 App 開放部分原始碼(與「臺南市政府資料開放平台」接介部分)
    https://github.com/benjenq/TNDengue
     
    專案使用的第三方開放原始碼套件
    PNChart
    https://github.com/kevinzhow/PNChart
     
    Hpple
    https://github.com/topfunky/hpple
     
    MBProgressHUD
    https://github.com/jdg/MBProgressHUD

    2 Comments

    1. 版主真的很強!
      我不會寫程式,但用想像就…..想睡覺~~~
      不曉得有沒有 Android 版?哈~
      (自從不玩黑蘋果後,iPhone也順便丟給家人了。現在改用Nexus 6P)
      登革熱大爆發後,已經很久都不敢往南部跑了 = .=
      版主回覆:(12/10/2015 12:56:28 AM)
      當初開始搞黑蘋果的動機,就是為了「寫 iPhone 程式」,
      一切皆因一支 iPhone 3GS 而起,人生也因此轉了彎,
      說起來這是一段故事了。
      去年嘗試過一段時間的 Android 程式開發,後來也沒繼續了,
      畢竟 iOS 開發環境比 Android 友善許多,效益也比較好。
      台南登革熱疫情已經趨緩了,每天只剩個位數通報,高雄似乎仍在持續中
      (不過高雄登革熱似乎沒有公開資料平台,不然我一定也寫個高雄版)
      最近台南的觀光人潮又回籠了,又是人擠人、阿雜的 FU,
      不少台南人會懷念前陣子不用塞車排隊的日子。

    2. 太棒了!感受到程式人的辛苦…那一點一點紅紅的區域看起來就好癢阿~登革熱爆發之後有感受到想吃小吃不用在排隊了…
      版主回覆:(01/01/2016 03:37:50 PM)
      可惜不用排隊的日子是短暫的…12月開始又塞爆了

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *