Chapter 3 公車運輸資料

公車係包含公路客運(一般公路客運、國道公路客運)與市區客運。後續的函式中皆須設定縣市之參數(county=),請參照TDX_County表格,縣市名稱與其相對應之代碼臚列如表3.1。另請注意,若欲回傳公路客運之資料,county=之參數請設定為「Intercity」。公車運輸資料中提供路線站點、路線線型、班表、站間旅行時間等資料。

TDX_County
表 3.1: 縣市名稱代碼表
縣市名稱 縣市代碼 縣市名稱 縣市代碼
臺北市 Taipei 雲林縣 YunlinCounty
新北市 NewTaipei 嘉義縣 ChiayiCounty
桃園市 Taoyuan 嘉義市 Chiayi
臺中市 Taichung 屏東縣 PingtungCounty
臺南市 Tainan 宜蘭縣 YilanCounty
高雄市 Kaohsiung 花蓮縣 HualienCounty
基隆市 Keelung 臺東縣 TaitungCounty
新竹市 Hsinchu 金門縣 KinmenCounty
新竹縣 HsinchuCounty 澎湖縣 PenghuCounty
苗栗縣 MiaoliCounty 連江縣 LienchiangCounty
彰化縣 ChanghuaCounty 公路客運 Intercity
南投縣 NantouCounty

3.1 公車路線站點資料

◎ 資料概述
回傳結果為公車路線站點的屬性資料,欄位包括(子)路線名稱、(子)路線代碼、方向、站點名稱、站點代碼、站序、經緯度等資料。關於路線(RouteUID、SubRouteUID)、站點(StopUID、StationID)之定義請詳見公共運輸車站站點編碼作業規範公車API靜態資料使用注意事項

◎ 函式參數

Bus_StopOfRoute(access_token, county, dtype="text", out=FALSE)
表 3.2: Bus_StopOfRoute()函式參數設定表
參數 必選填 功能 參數設定值
access_token= 必填參數 [Access Token] 1.6.3 Access Token 取得方式
county= 縣市代碼 請參照TDX_County表格,若為公路客運,請填入Intercity
dtype= 選填參數 回傳的資料型態 text:純文字形式,其資料型態屬data.frame [預設值]
sf:地理資料形式,其資料型態屬sf
out= 匯出資料之路徑 FALSE:不匯出資料至本機 [預設值]
若回傳的資料型態為「text」:路徑必須含有.csv.txt
若回傳的資料型態為「sf」:路徑必須含有.shp

◎ 程式碼撰寫範例
1. 回傳宜蘭縣市區公車路線站點資料(純文字)

# 介接宜蘭公車路線站點
Yilan_bus_station=Bus_StopOfRoute(access_token, "YilanCounty")
## 177 Routes
## #---YilanCounty Stop of Route Downloaded---#
# 查看Yilan_bus_station資料
Yilan_bus_station



2. 回傳新竹市市區公車路線站點資料(地理資料)

# 介接新竹市公車路線站點資料,並匯出地理資料
Hsinchu_bus_station=Bus_StopOfRoute(access_token, "Hsinchu", dtype="sf", out="./Hsinchu_bus_station.shp")
## 54 Routes
## #---Hsinchu Stop of Route Downloaded---#
# 查看Hsinchu_bus_station資料
Hsinchu_bus_station
# Hsinchu_bus_station依路線合併所有點資料
Hsinchu_bus_station_agg=group_by(Hsinchu_bus_station, RouteName)%>%
  summarise()

# 地圖繪製
ggplot()+
  geom_sf(data=Hsinchu_bus_station_agg, aes(color=RouteName))+
  geom_sf_text_repel(data=Hsinchu_bus_station_agg, aes(label=RouteName, color=RouteName))

NOTE
以上程式碼中先行利用 group_by() %>% summarise() 合併地理資料,可參考 Spatial Analysis with R (Chia Jung, Yeh) 5.2 章節 Attribute Aggregation
R 語言中「地圖上文字標記」之方法,請參考 Spatial Analysis with R (Chia Jung, Yeh) 3.3 章節 Labels on Map

3.2 公車路線資料

◎ 資料概述
回傳結果為公車路線的屬性文字資料,欄位包括(子)路線名稱、(子)路線代碼、方向、公車路線類別、起訖站牌等。 公車方向的代碼路線屬性的代碼如表3.3所示:

表 3.3: 公車方向與路線屬性的代碼
方向代碼 方向意義 路線屬性代碼 路線屬性意義
0 outbound 11 市區公車
1 inbound 12 一般公路客運
2 loop 13 國道客運
255 unknown 14 接駁車

◎ 函式參數

Bus_Route(access_token, county, out=FALSE)
表 3.4: Bus_Route()函式參數設定表
參數 必選填 功能 參數設定值
access_token= 必填參數 [Access Token] 1.6.3 Access Token 取得方式
county= 縣市代碼 請參照TDX_County表格,若為公路客運,請填入Intercity
out= 選填參數 匯出資料之路徑 FALSE:不匯出資料至本機 [預設值]
若回傳的資料型態為「text」:路徑必須含有.csv.txt
若回傳的資料型態為「sf」:路徑必須含有.shp

◎ 程式碼撰寫範例

回傳一般公路客運路線資料

# 介接一般公路客運公車路線資料
Intercity_Bus_Route=Bus_Route(access_token, "Intercity")
## 537 Routes
# 查看Intercity_Bus_Route資料
Intercity_Bus_Route

3.3 公車路線線型資料

◎ 資料概述
回傳結果為公車路線的屬性與空間資料,欄位包括(子)路線名稱、(子)路線代碼、方向、空間資料。

◎ 函式參數

Bus_Shape(access_token, county, dtype="text", out=FALSE)
表 3.5: Bus_Shape()函式參數設定表
參數 必選填 功能 參數設定值
access_token= 必填參數 [Access Token] 1.6.3 Access Token 取得方式
county= 縣市代碼 請參照TDX_County表格,若為公路客運,請填入Intercity
dtype= 選填參數 回傳的資料型態 text:純文字形式,其資料型態屬data.frame [預設值]
sf:地理資料形式,其資料型態屬sf
out= 匯出資料之路徑 FALSE:不匯出資料至本機 [預設值]
若回傳的資料型態為「text」:路徑必須含有.csv.txt
若回傳的資料型態為「sf」:路徑必須含有.shp

◎ 程式碼撰寫範例

回傳新竹市市區公車路線資料(地理資料)

# 介接新竹市市區公車路線資料
Hsinchu_bus_shape=Bus_Shape(access_token, "Hsinchu", dtype="sf")
## #---Hsinchu Bus Shape Downloaded---#
# 查看Hsinchu_bus_shape資料
Hsinchu_bus_shape
# 地圖繪製
ggplot()+
  geom_sf(data=Hsinchu_bus_station, aes(color=RouteName))+
  geom_sf(data=Hsinchu_bus_shape, aes(color=RouteName))

NOTE
R 語言中「地圖疊圖」之方法,請參考 Spatial Analysis with R (Chia Jung, Yeh) 3.7.1 小節 Map Overlay

3.4 公車班表資料

◎ 資料概述
在 TDX 平臺中,公車班表的記錄方式有兩種,一為「時刻表格式」,另一為發車「班距格式」。時刻表格式係指依據各路線的發車時間記錄班次,故有確切的時間點資料,而回傳結果之欄位含括(子)路線名稱、(子)路線代碼、方向、站點名稱、各星期是否營運、始發站代碼與站名、始發站發車時間。班距格式的回傳結果雷同,然未有確切的發車時間點,僅包含各時段發車的班距資料,如「07:00 至 09:00 每 5 分鐘一班公車」。時刻表格式為大部分公車資料的記錄方式,惟部分縣市因某些時段為彈性發車,故採班距與時刻表格式混合使用,尤以臺北市的公車班表資料紀錄方式較為複雜。在本函式中逕將時刻表與班距格式合併處理,使用者無需再撰寫額外程式碼進行分類。

回傳資料的部分欄位資訊整理如表3.6所示。

表 3.6: Bus_Schedule()函式回傳欄位說明
欄位名稱 意義 說明
TripID 班表順序 班表順序是依據發車時間順序排列 [應用於時刻表格式]
Sunday 星期日是否營運 星期日若有營運,記錄為1,否則為0(其他亦同)
Date 特殊營運日期 如:特殊節日日期 [應用於時刻表格式]
ServiceStatus 特殊營運日期營運狀態 營運狀態包含:停駛或照常營運 [應用於時刻表格式]
ArrivalTime 公車抵達時間 [應用於時刻表格式]
DepartureTime 公車出發時間 [應用於時刻表格式]
StartTime 班距紀錄起始時間 [應用於班距格式]
EndTime 班距紀錄結束時間 [應用於班距格式]
MinHeadwayMins 最短班距 [應用於班距格式]
MaxHeadwayMins 最長班距 [應用於班距格式]

◎ 函式參數

Bus_Schedule(access_token, county, out=FALSE)
表 3.7: Bus_Schedule()函式參數設定表
參數 必選填 功能 參數設定值
access_token= 必填參數 [Access Token] 1.6.3 Access Token 取得方式
county= 縣市代碼 請參照TDX_County表格,若為公路客運,請填入Intercity
out= 選填參數 匯出資料之路徑 FALSE:不匯出資料至本機 [預設值]
若欲輸出此結果,路徑中必須含有.csv.txt

◎ 程式碼撰寫範例
回傳新竹市市區公車班表資料

# 介接新竹市市區公車班表資料
Hsinchu_bus_schedule=Bus_Schedule(access_token, "Hsinchu")
## #---Hsinchu Bus Schedule Downloaded---#
# 查看Hsinchu_bus_schedule資料
Hsinchu_bus_schedule

3.5 公車站間旅行時間資料

◎ 資料概述
公車站間旅行時間函式回傳指定公車子路線中,任兩相鄰站牌間的旅行時間。此一資料是透過歷史資料取得平均值,而由於不同星期、不同時間段(尖離峰)的旅行時間應有所不同,故部分縣市的資料會細緻記錄各星期逐小時的站間旅行時間,如臺北市。在回傳資料表中包含以下欄位:路線代碼(RouteID)、子路線代碼(SubRouteID)、星期(Weekday: 0~6,0表示星期日)、起始時間(StartHour)、結束時間(EndHour)、站間旅行時間(RunTime)。其中起始時間與結束時間分別表示該旅行時間值所對應的時間區間,在部分縣市的資料中可能長達數小時,而紀錄較為細緻者通常是一小時之間隔,惟若該時間區間中未有任何公車行駛,則記錄為「-1」。

在本函式中必須設定欲回傳的公車路線代碼之參數(routeid),可透過Bus_Route()函式取得之。此外,路線代碼參數可為一文字或一組向量,亦即可回傳一個或多個公車路線的站間旅行時間資料。

◎ 函式參數

Bus_TravelTime(access_token, county, routeid, out=FALSE)
表 3.8: Bus_TravelTime()函式參數設定表
參數 必選填 功能 參數設定值
access_token= 必填參數 [Access Token] 1.6.3 Access Token 取得方式
county= 縣市代碼 請參照TDX_County表格,若為公路客運,請填入Intercity
routeid 路線代碼 須確保該路線位於所設定縣市中,可利用Bus_Route()查詢
out= 選填參數 匯出資料之路徑 FALSE:不匯出資料至本機 [預設值]
若欲輸出此結果,路徑中必須含有.csv.txt

◎ 程式碼撰寫範例
1. 回傳新竹市路線代碼 0020 公車(2路)的站間旅行時間

# 介接新竹市0020公車站間旅行時間
Hsinchu_bus_traveltime=Bus_TravelTime(access_token, "Hsinchu", "0020")
## Total: 1 Routes
# 查看Hsinchu_bus_schedule前300筆資料
Hsinchu_bus_traveltime[1:300,]

2. 回傳桃園市站間旅行時間

可搭配Bus_Route()函式取得指定縣市的公車路線代碼。

# 介接桃園市公車路線
Taoyuan_bus_route=Bus_Route(access_token, "Taoyuan")
## 366 Routes
# 擷取RouteID之為一值(將重複代碼去除)
Taoyuan_bus_route=unique(Taoyuan_bus_route$RouteID)

# 介接桃園市前五條公車路線旅行時間
Taoyuan_bus_traveltime=Bus_TravelTime(access_token, "Taoyuan", Taoyuan_bus_route[1:5])
## Total: 5 Routes
# 查看Taoyuan_bus_traveltime資料
Taoyuan_bus_traveltime