ESRI Shapefile(shp),是ESRI開發的一種空間資料開放的向量格式。
但是D3.js無法直接讀取shapefile的檔案格式,必須先進行轉換。
topojson 是一個改善 geojson 要去存取過多的重複資料所做的新的一種資料格式,
這種資料格式比geojson可以節省許多的檔案空間,有利讀取的速度。
GitHub上有一個專案可以直接把shp檔轉成topojson,方便D3.js後續的應用。
由於topojson是Nodejs 的模組之一,所以需要先安裝 Nodejs。
Nodejs:https://nodejs.org/
完成安裝後,在Windows開啟cmd.exe(命令列模式),安裝topojson模組:
c:\> npm install -g topojson
模組完成安裝之後,就可以把shp檔轉成topojson了,因為我是下載台南市的里區圖, 而台南市政府提供的是TWD97座標地圖,
先用QGIS把它另存為WGS84的座標地圖,
如果是從交通部下載開啟資料的地圖,
因為交通部個別有提供TWD97與WGS84的地圖,
所以只要選擇WGS84(經緯度)就不必再透過QGIS來做座標轉換。
另外因為中文字的緣故,所以要另外指定big5
轉檔的語法:
c:\> topojson -o tnn.json -p --shapefile-encoding big5 tnn.shp