Chapter 6 其他 TDX 資料

除軌道運輸、公車、自行車、航空與航運各運具資料外,TDX 平臺亦提供諸多實用的資料介接 API,而本套件中目前另外包含觀光點位、停車場資料、道路路網線型、高快速公路線型、地理編碼服務等,未來將依實務需求,持續開發具實用性的函式。

6.1 觀光點位

◎ 資料概述
觀光點位包含景點、餐廳、旅館,回傳結果包含各興趣點代碼與名稱、地址、經緯度、營業時間等詳細資訊。須注意的是 TDX 平臺上的觀光點位資料更新周期較長,可能有些點位已停業或撤銷,卻仍出現在資料中,且部分縣市政府並未完整調查與整理,故請斟酌使用之。

◎ 函式參數

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

◎ 程式碼撰寫範例
回傳花蓮縣觀光景點資料(地理資料)

# 介接花蓮縣觀光景點
Hualien_scenicspot=Tourism(access_token, county="HualienCounty", poi="ScenicSpot", dtype="sf")
# 查看Hualien_scenicspot資料(去除)
select(Hualien_scenicspot, -DescriptionDetail)
# 使用TWspdata套件中的臺灣鄉鎮資料,並擷取花蓮縣資料
hualien=filter(TWspdata::taiwan_town, COUNTYNAME=="花蓮縣")

# 繪製地圖
ggplot()+
  geom_sf(data=hualien)+
  geom_sf_text_repel(data=hualien, aes(label=TOWNNAME))+
  geom_sf(data=Hualien_scenicspot)+
  annotation_scale(location="br")+
  annotation_north_arrow(location="tl")

NOTE
以上程式碼中係利用 annotation_scale()annotation_north_arrow() 函式分別加上比例尺與指北針,此二元素為繪製地圖的基本元件。R 語言中「比例尺與指北針」之加註方法,請參考 Spatial Analysis with R (Chia Jung, Yeh) 3.7.2 小節 North Arrow and Scale

以上程式碼中另外使用 TWspdata 套件中 taiwan_town(臺灣鄉鎮市區)的資料,若欲使用之,請先行自 GitHub 下載此套件:

devtools::install_github("ChiaJung-Yeh/TWspData")
library(TWspData)

6.2 停車場資料

◎ 資料概述
停車場分為兩種,一為戶內外之停車場,另一則為路邊停車。戶內外停車場資料中詳細記載各停車場的經緯度位置、營運資訊,諸如費率、是否為公有、是否可預約等,各欄位詳細資訊彙整如表6.2。路邊停車格則僅顯示其代號與位置,此資料目前僅少部分縣市提供,而幾何資料型式可為點座標或停車格的面資料。

表 6.2: 停車場回傳欄位說明
欄位名稱 意義
Description 停車場各運具停車位總數 [文字說明]
FareDescription 計費方式 [文字說明]
IsPublic 是否為公有停車場,是填1
OperationType 營運型態(公辦民營:1;公營:2;民營:3)
LiveOccuppancyAvailable 是否提供停車位即時資訊,是填1
EVRechargingAvailable 是否有電動車充電樁,是填1
MonthlyTicketAvailable 是否提供月票,是填1
SeasonTicketAvailable 是否提供季票,是填1
ReservationAvailable 可否預約停車,是填1
WheelchairAccessible 是否具無障礙設施,是填1
OvernightPermitted 是否可過夜停車,是填1

◎ 函式參數

Car_Park(access_token, county, street, dtype="sf", out=FALSE)
表 6.3: Tourism()函式參數設定表
參數 必選填 功能 參數設定值
access_token= 必填參數 [Access Token] 1.6.3 Access Token 取得方式
county= 縣市代碼 請參照TDX_County表格,若欲回傳全臺資料,請填入ALL
street= 戶內外停車場/路邊停車 戶內外停車場:street=off
路邊停車格:street=on
dtype= 選填參數 回傳的資料型態 text:純文字形式,其資料型態屬data.frame [預設值]
sf:地理資料形式,其資料型態屬sf
out= 匯出資料之路徑 FALSE:不匯出資料至本機 [預設值]
若回傳的資料型態為「text」:路徑必須含有.csv.txt
若回傳的資料型態為「sf」:路徑必須含有.shp

◎ 程式碼撰寫範例
1. 回傳臺中市戶內外停車場資料(地理資料)

# 介接臺中市戶內外停車場資料
Taichung_carpark=Car_Park(access_token, county="Taichung", street="off", dtype="sf")
## Data provides 'POINT' geometry.
# 查看Taichung_carpark資料
Taichung_carpark



2. 回傳花蓮縣路邊停車格資料(地理資料)

# 介接花蓮縣路邊停車格資料
Hualien_carpark=Car_Park(access_token, county="HualienCounty", street="on", dtype="sf")
## Data provides 'POINT' geometry.

6.3 道路路網線型

◎ 資料概述
TDX 平臺中提供道路路網線型資料,包含國道、省道快速公路、省道一般公路等三種類型之公路,請注意目前平臺中並未提供縣道以下等級(縣道、市道、鄉道、市區道路)之道路線型。本函式中需輸入縣市名稱與道路等級,回傳結果包含道路等級、道路代碼、道路名稱與空間資料等。另外本函式亦可直接擷取全臺灣、所有道路等級之資料,僅需在相對應的參數中填入「ALL」即可,詳見以下函式參數。

◎ 函式參數

Road_Network(accesss_token, county, roadclass, dtype="text", out=FALSE)
表 6.4: Road_Network()函式參數設定表
參數 必選填 功能 參數設定值
accesss_token= 必填參數 [Access Token] 1.6.3 Access Token 取得方式
county= 縣市代碼 請參照TDX_County表格,若欲回傳全臺資料,請填入ALL
roadclass= 道路等級代碼 0:國道
1:省道快速公路
3:省道一般公路
ALL:所有道路等級
dtype= 選填參數 回傳的資料型態 text:純文字形式,其資料型態屬data.frame [預設值]
sf:地理資料形式,其資料型態屬sf
out= 匯出資料之路徑 FALSE:不匯出資料至本機 [預設值]
若回傳的資料型態為「text」:路徑必須含有.csv.txt
若回傳的資料型態為「sf」:路徑必須含有.shp

◎ 程式碼撰寫範例
1. 回傳宜蘭縣省道一般公路資料(地理資料)

# 介接宜蘭縣省道
Yilan_road=Road_Network(access_token, county="YilanCounty", roadclass=3, dtype="sf")
# 繪製地圖
ggplot()+
  geom_sf(data=Yilan_road, aes(color=RoadName))



2. 回傳臺中市所有公路資料(地理資料)

# 介接臺中市所有公路
Taichung_road=Road_Network(access_token, county="Taichung", roadclass="ALL", dtype="sf")

# 擷取臺中市行政區資料(且刪除和平區)
taichung_city=filter(TWspdata::taiwan_town, COUNTYNAME=="臺中市", TOWNNAME!="和平區")

# 轉換座標系統
taichung_city=st_transform(taichung_city, crs=4326)

# 取臺中道路與臺中市行政區(不包括和平區)之交集
Taichung_road=st_intersection(Taichung_road, taichung_city$geometry)

# 繪製地圖
ggplot()+
  geom_sf(data=taichung_city, color="#F0F0F0", fill="#D0D0D0")+
  geom_sf(data=Taichung_road, aes(color=RoadClassName))

NOTE
以上程式碼中係利用 filter() 函式擷取臺中市鄉鎮市區資料,並刪除「和平區」此一行政區。filter()dplyr 套件中相當常用的函式。R 語言中「篩選地理資料」之方法,請參考 資料科學與R語言 (曾意儒 Yi-Ju Tseng) 7.3.2 小節 filter()

在地理資料處理中,很常需要將兩地理資料取交集,可利用 sf 套件中的 st_intersection() 函式完成之。R語言中「地理資料交集」之方法,請參見Spatial Analysis with R (Chia Jung, Yeh) 5.9 章節 Clipping

另外,若欲執行交集,請確保交集的兩份地理資料必須擁有相同的座標參考系統(CRS),若座標參考系統不同,則請先行轉換至統一的格式。座標參考系統之概念詳見Spatial Analysis with R (Chia Jung, Yeh) 2.4 章節 Coordinate Reference System (CRS),轉換座標參考系統可利用 sf 套件中的 st_transform() 函式完成之,請參考Spatial Analysis with R (Chia Jung, Yeh) 4.5 章節 Reproject Geographic Data

6.4 高快速公路線型

◎ 資料概述
TDX 平臺中雖有提供高快速公路的線型資料,然而資料較不細緻,故本套件另外自交通部高速公路局交通資料庫介接線型資料,其中包含四種類型的資料:「路段(section)」表示高快速公路上各交流道間的線段;「節線(link)」表示每一路段中更為細緻的幾何線型;「etag 門架(gantry)」表示高速公路的 etag 門架,目前僅國道一、三、五號具門架,故其他橫向高速公路與快速道路並無此一型態資料;「etag 門架路段(gantryod)」表示兩相鄰 etag 門架間的路段。另請注意,由於此函式並非介接自 TDX,故無需輸入 access_token

◎ 函式參數

Freeway_Shape(geotype, dtype="text", out=FALSE)
表 6.5: Road_Network()函式參數設定表
參數 必選填 功能 參數設定值
geotype= 必填參數 資料類型 section:交流道間路段
link:更為細緻路段
gantry:etag 門架
gantryod:etag 門架間路段
dtype= 選填參數 回傳的資料型態 text:純文字形式,其資料型態屬data.frame [預設值]
sf:地理資料形式,其資料型態屬sf
out= 匯出資料之路徑 FALSE:不匯出資料至本機 [預設值]
若回傳的資料型態為「text」:路徑必須含有.csv.txt
若回傳的資料型態為「sf」:路徑必須含有.shp

◎ 程式碼撰寫範例 回傳高速公路各交流道間路段(地理資料)

# 介接高速公路各交流道間路段
freeway_shape=Freeway_Shape(geotype="section", dtype="sf")

6.5 地理編碼服務

地理編碼(Geocode)是指將地址或地標名稱轉換為經緯度的過程,最常見的軟體即是 Google地圖,輸入地址後,在打點座標處點選右鍵,即可複製該位置的經緯度。地理編碼看似簡單的查詢操作,然而若是要進行大量的地理編碼就不是容易的事情,大部分的軟體都需要收費或是有回傳結果的限制,故使用上須格外注意批次處理的數據量。關於地理編碼的詳細概念與各種服務平臺之簡要操作,詳見此

目前 TDX 平臺提供免費的地理編碼服務,且無批次數據量之限制,對比其他需要收費或有批次限制的平臺,TDX 非常佛心!!務必珍惜使用此資源。

本函式僅需輸入地址即可自動回傳經緯度資料,必須特別注意的是,回傳欄位包括:AddressOriginal(原始輸入的地址資料)、AddressNew(TDX 平臺比對後的地理資料,通常地址會更加完整)、Geometry(經緯度資料)。

◎ 函式參數

Geocoding(access_token, address, dtype="text", out=FALSE)
表 6.6: Geocoding()函式參數設定表
參數 必選填 功能 參數設定值
access_token= 必填參數 [Access Token] 1.6.3 Access Token 取得方式
address= ’地址資料 ’須為向量格式
若「地址」位於「資料」中的其一欄位,請輸入資料$地址
dtype= 選填參數 回傳的資料型態 text:純文字形式,其資料型態屬data.frame [預設值]
sf:地理資料形式,其資料型態屬sf
out= 匯出資料之路徑 FALSE:不匯出資料至本機 [預設值]
若回傳的資料型態為「text」:路徑必須含有.csv.txt
若回傳的資料型態為「sf」:路徑必須含有.shp

◎ 程式碼撰寫範例
地理編碼範例

# 將地址資料儲存於向量中
campus=c("臺北市中正區忠孝西路一段118號", "新竹市東區大學路1001號", "新竹縣竹北市六家五路一段1號")

# 將地址向量address置入Geocoding()函式中
campus_geocode=Geocoding(access_token, campus)
## Geocoding Summary
## Total:      3
## Success:    3
## Duplicated: 0
## Fail:       0
# 查看campus_geocode資料
campus_geocode$SUCCESS
##                 AddressOriginal                          AddressNew
## 1 臺北市中正區忠孝西路一段118號 台北市中正區光復里忠孝西路一段118號
## 2        新竹市東區大學路1001號        新竹市東區光明里大學路1001號
## 3   新竹縣竹北市六家五路一段1號   新竹縣竹北市東平里六家五路一段1號
##                                        geometry
## 1   POINT (121.5119072733048 25.04729699068649)
## 2 POINT (120.99949254081611 24.789143078010369)
## 3  POINT (121.0225852454279 24.811634475774639)