R 下載相關套件

由於我們介接API所下載的格式是JSON檔,因此必須利用jsonlite套件解析該格式。在下載完資料後,檔案僅是以文字存取,但為進一步作地理資訊分析,我們必須轉換為地理資訊格式(如.shp),而sf套件即是用來做地理分析的工具。另外做大數據分析和繪圖可分別下載dplyrggplot2套件。

install.packages("jsonlite")
install.packages("sf")
install.packages("dplyr")
install.packages("ggplot2")
library(jsonlite)
library(sf)
library(dplyr)
library(ggplot2)

介接路網API

以下是介接交通部GIS-T路網資料的程式碼,我們以台北市道路路網為例,詳細步驟依序為:

  1. swaggerMOTC這個網頁中,移動到實體路網(PhysicalNetwork)中的“取得指定縣市之道路路網圖資資料”。
  2. 點選City參數為“臺北市”,$top參數為3(意指挑選資料庫前3筆資料),$format參數為JSON,設定完成後點選Try it out!,隨後網頁會回傳Request URL。
  3. 將Request URL的網址複製起來。

完成複製後,我們必須將Request URL的網址稍作修正,剛剛我們只回傳了前3筆資料,所以網址中有$top=3這個參數,但事實上我們希望能回傳所有資料,因此須把這個參數予以刪除,即: https://gist.motc.gov.tw/gist_api/V3/Map/Road/Network/City/Taipei?$top=3&$format=JSON
應更正為:
https://gist.motc.gov.tw/gist_api/V3/Map/Road/Network/City/Taipei?&$format=JSON

(之所以要這樣修正,是因為如果我們一開始沒有設定$top這個參數,會使我們的網頁回傳時間過久,網頁甚至會當掉!)

修正完畢,我們就可以用jsonlite套件內的fromJSON來讀取這個檔案了!!

road=fromJSON("https://gist.motc.gov.tw/gist_api/V3/Map/Road/Network/City/Taipei?&$format=JSON")

不過讀取完後的資料只是文字檔,因此必須再利用sf套件轉換成地理資訊格式。觀察road資料裡面可發現,其中有一個欄位是Geometry,它是利用WKT格式記錄地理資訊,我們可以利用st_as_sfc這個函式來轉換。此外整個road資料也必須設定為地理資訊格式,須利用st_sf轉換,其中應設定crs4326,亦即WGS84經緯度系統。

road=mutate(road, Geometry=st_as_sfc(Geometry))%>%
  st_sf(crs=4326)

最後我們再來畫張地圖,以確認路網是否完整匯入。

ggplot(road)+
  geom_sf()