• 沒有找到結果。

臺北市開放資料平台開放時間較長,除了資料集較為完整,各部門提供之資 料格式與內容也相當齊全,本研究使用其開放資料作為網頁資訊之基礎資料,對 照資料中有所缺少之部分,適度採用中央政府機關所公布之開放資料作為替代。

平台中資料格式若非以API 介接,多以 CSV、JSON 與 XML 作為公開格式,少 部分圖資以shp、KML 或是其他檔案格式釋出。本研究系統未規劃伺服器資料處 理架構,為了減少瀏覽器處理負擔,非介接方式之資料採取預先處理的方式進行。

本階段處理工具利用開源軟體Quantum GIS(QGIS)進行資料欄位整理與資料格 式匯出之動作,使用內政部資訊中心地理資訊圖資雲服務平台(TGOS)之轉址 服務進行批次地址比對,最後自行撰寫檔案讀取之程式碼將資料匯入程式定義之 資料管理物件中,詳細流程如圖 10 所示意:

圖 10 資料處理與管理流程圖,本研究繪製。

41

資料介接的判定

考量檔案大小以及後續系統處理考量,採用 API 或者來源直接介接的資料 以youbike 即時資料(公共運輸整合資訊流通服務平台 , Public Transport data eXchange)與中央地調所所公告土壤液化的 GeoJSON 做為示範實作,兩者資料 量較小,且欄位內容較為簡單。其餘圖資在檢視資料內容與檔案大小後,使用下 載後處理的方式處理。

下載後處理的資料使用 QGIS 將資料匯出為 GeoJSON 之格式,並於程式中 整合所需之空間資訊欄位(例如住址、座標等)與去除無關欄位,減輕瀏覽器載 入時的時間,與減少使用者端之記憶體消耗。

介接API 的處理過程採用跨域 JSONP 方法,使用回傳函數方式接取伺服器 資料,利用程式碼轉換為JSON 格式,並取用需要之資訊,經函式處理後匯入至 資料管理層中。

地理座標資訊的驗證

此步驟中在檢查資料中欄位是否有包含正確的座標資訊,統一使用 WGS84 經緯度座標系統,以便接取國內外圖資。國內圖資座標多採用TWD97 與 TWD67 座標系統,若採用GPS 設備更新的資料多使用 WGS84 經緯度座標,因此檢查是 否有座標資訊並比對,即便有座標但不符合系統設定值,仍須先進行座標轉換,

置換為正確的座標系統,再行進行資料格式轉換。

若所得資料無地理座標資訊,可依資料型態分處不同方式處理。以本研究的 資料而言,無座標資訊多為點資料型態,並多檢附地址資訊作為參照。地理編碼 技術多應用在地址資訊與座標位址間的轉換,內政部資訊中心地理資訊圖資雲服 務平台提供批次門牌地址比對服務,於網路上可申請單日10000 筆批次比對,並 可以設置比對相關參數。以本研究而言,比對方式不允許模糊比對,只回傳單筆 資訊,以快速處理與篩選資訊為主要處理原則。無法比對成功之資訊,視圖資用 途給予濾除或是補足。轉換座標後,經由比對檢查座標無誤,便進入資料格式檢 核的流程。

42

資料格式的檢核

為了統一後續圖層設計與程式碼維護,將下載來的資料進行標準化的動作。

本研究中出現的檔案格式共有五種(csv、kml、shp、JSON、GeoJSON),在此過 程中,將利用開源軟體QGIS 轉檔統一輸出成 GeoJSON,其文字編碼使用 UTF-8,檢測資料轉檔無誤後,藉由程式碼匯入資料管理層中。

資料管理層以 JavaScript object 管理所有資料,供圖層產生、更新與銷毀時 使用,每個物件代表一個圖層資料,在圖層使用時取用其資料以及詮釋資料。資 料處理流程結束後,藉由程式碼載入記錄檔的動作可將以處理好的資訊匯入 JavaScript object 中,該物件所有屬性資料紀錄程式碼如圖 11。利用自定義物件 類別管理所有與該物件相關之屬性,可有效控管變數的使用,以及程式後續維護 的複雜度,除了圖層的參照管理外,圖例及預設樣式都可以藉由自定義的類別管 理與擴充,可由圖 11 的註解為例,指出物件類別各種屬性的用途。

function eachLayer(urlname) {

//this.layerJSON = loadGeoJSON(urlname);

this.JSON = loadJSON(urlname);//資料本身 this.layer;//指向圖層的參照

this.layer2;//指向圖層 2 的參照 this.legendHTML = '';//圖例的 HTML this.legend = L.control({

position: 'bottomright' });//圖例的 css 設定

this.status = "off";//使用判斷 this.name = '';//圖層名稱 this.unit = '';//主要資料單位

this.value_column = '';//值的欄位名稱

this.infounit = '';//要呈現於資訊框的資料單位 this.infovalue = ''; //要呈現於資訊框的資料

this.info_column = ''; //要呈現於資訊框的資料欄位名稱 };

圖 11 資料管理物件變數示意,本研究繪製。

43