ADU WORK IN PROGRESS

《2020 全國交通事故地圖》說明

使用語言: JavaScript

工具、套件: kepler.gl

簡介: 將2020年台灣各縣市交通事故資料視覺化,快速定位交通事故熱區,並建立篩選器搜尋符合條件之資料分布。

cover image

幾周前在研究資料視覺化工具時,曾快速建立了台北、台中、高雄三個城市的2019年交通事故視覺呈現。但僅提供初步的資料呈現。警政署在3月初更新了2020年全台灣的交通事故統計資料,藉著這次機會重新整理建立了《2020全國交通事故地圖》。新版本讓使用者可以主動查詢全台灣22個縣市的交通事故資料;透過篩選器,可進一步搜尋死亡車禍、肇事車種、月份、24小時高風險時段等事故地圖。

資料取得: A1與A2交通事故

根據法規,交通事故區分為A1、A2、A3類等三種:

事故類型 說明
A1類 造成人員當場或二十四小時內死亡之交通事故
A2類 造成人員受傷或超過二十四小時死亡之交通事故
A3類 僅有車輛財物受損之交通事故

這裡使用A1類與A2類的統計資料,來源為政府資料開放平台的歷史交通事故資料

資料整理

全台灣2020全年的死亡車禍(A1類)共計有1,806筆,A2類則有360,564筆資料。資料欄位包含「發生時間」、「發生地點」、「死亡受傷人數」、「車種」、「經度」、「緯度」等六個欄位。

對資料進行初步整理,將「車種」中的肇事車輛種類分別建立獨立變數以利後續篩選與分析。同樣地,也拆開「死亡受傷人數」為「死亡人數」與「受傷人數」。

{'人': ['行人', '其他人', '乘客'],
    '全聯結車': ['自用', '營業用'],
    '其他車': ['拖車(架)', '火車', '拼裝車', '農耕用車(或機械)', '其他車', '動力機械'],
    '半聯結車': ['自用', '營業用'],
    '大客車': ['民營公車', '自用大客車', '遊覽車', '民營客運', '公營公車', '公營客運'],
    '大貨車': ['自用', '營業用'],
    '小客車': ['自用', '租賃車', '計程車'],
    '小貨車': ['自用', '營業用'],
    '慢車': ['電動自行車', '人力車', '其他慢車', '獸力車', '電動輔助自行車', '腳踏自行車'],
    '曳引車': ['自用', '營業用'],
    '機車': ['大型重型2(250~550C.C.)', '普通重型', '小型輕型', '大型重型1(550C.C.以上)', '普通輕型'],
    '特種車': ['其他特種車', '消防車', '救護車', '工程車', '警備車'],
    '軍車': ['載重車', '大客車', '小型車']}

初步統計與分析

車種與致死率

下表顯示為超過36萬筆的交通事故中包含各該車種的數量,並以A1類事故筆數相對於所有交通事故數量計算致死率。

排名 車禍總數 筆數 死亡車禍 筆數 致死率 %
1 機車 324,604 機車 1,308 半聯結車 7.36%
2 小客車 177,306 小客車 725 全聯結車 6.58%
3 64,232 567 曳引車 4.74%
4 小貨車 32,789 小貨車 329 大貨車 3.38%
5 慢車 22,400 大貨車 159 其他車 2.62%
6 大貨車 4,702 慢車 131 軍車 1.89%
7 大客車 3,319 曳引車 74 大客車 1.78%
8 曳引車 1,562 大客車 59 特種車 1.06%
9 其他車 803 半聯結車 39 小貨車 1.00%
10 半聯結車 530 其他車 21 0.88%
11 特種車 378 全聯結車 10 慢車 0.58%
12 全聯結車 152 特種車 4 小客車 0.41%
13 軍車 53 軍車 1 機車 0.40%

肇事車種組合

將每筆資料的車種組合建立矩陣圖如下。如資料顯示為相同車種間的事故或該車種自撞事故,則將其歸於單一車種事故。 事故車輛組合最高者依序為「機車-小客車」、「機車-機車」、「機車-人」、「小客車-人」、「機車-小貨車」。

accidents pairs

事故時間

依照事故發生時間將次數呈現於下圖。事故頻發時間顯然為早晚的尖峰時間「07:30-09:00」、「17:00-18:30」。

accidents timeline

六都事故頻發地點

將交通事故依照經緯度建立於地圖上(下節詳述),依各縣市蜂窩圖(3D)查看事故發生頻率最高的地點。

城市 事故頻發地點
台北市 基隆路、羅斯福路口
景福門圓環
鄭州路、西寧北路口
新北市 新莊區中正路、思源路口
板橋區華江橋機車道
坪林區北宜公路前0公尺
桃園市 大溪區台七乙8.5公里處附近
桃園區民權路與大同路、復興路口
桃園區三民路、大同路口
台中市 北區三民、五權、錦南、崇德路口
北屯區北屯路、太原路口
北區錦中街、崇德路口
台南市 永康區中華路、中正南路口
永康區中華路、中山南路口
永康區中山南路、中山南路568巷路口
高雄市 新興區中山一路、民生路口
新興區中山一路、民生路口(!)
新興區中山一路、民生路口(!!)

建立事故地圖

使用語言與工具

建立「事故地圖」的需求主要為:

  1. 將資料以3D呈現於地圖上,以利使用者直觀找到事故熱區
  2. 建立與使用者互動的篩選器

這裡使用kepler.gl做為將資料視覺化於地圖上的工具。kepler.gl 是一套強大的地圖資料視覺化的網頁應用工具,同步處理上百萬筆資料庫的效能都維持地非常理想,並可藉由React-Redux可以很好地進行網頁應用的整合。這裡將利用JavaScript建立篩選器與kepler地圖互動。

互動機制

1. 初始畫面

第一次載入網頁會需要稍微長一點的時間。完成後將呈現預設的城市(台南市)的事故地圖。

onload

2. 切換縣市

點選左上角顯示縣市的按鈕叫出篩選器開始與地圖互動。藉由篩選器可以將預設城市定位到其他縣市。

load database

3. 選擇查看事故細節

工具建立兩種資料呈現方式,預設為顯示事故頻率的3D柱狀蜂窩圖,另一便是顯示事故細節的斑點圖。點選各個斑點將呈現各該筆事故的詳細資料。

load layer

4. 加入篩選條件

最後使用篩選條件找尋符合條件的事故分布。依照原始資料,這裡建立了「死亡車禍(A1類)」、「月份」、「時間軸(24hr)」以及「車種」等條件。

add filters

開啟時間軸後可以調整時間軸長短進行播放,以查看不同時間的交通事故熱區。

timeline filter