第二章 文獻探討
2.6 開放式原始碼 Web GIS 平台簡介
國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
17
圖2.9:MD5 雜湊演算法流程[25]
2.6 開放式原始碼 Web GIS 平台簡介
目前有許多開放免費地圖與程式設計資源的網路地圖服務,其中又以Google Maps 及Open Layers 普遍受各大軟體或學術領域應用,除了可提供使用者製作網路地圖,並 且可以免費使用地圖圖資,讓使用者能客製化地理影像圖資,包括衛星影像、航照圖或 早期地圖掃描影像等。
Google Maps 是由 Google 公司提供的電子地圖服務[36],能提供傳統向量地圖及衛 星照片,其特點為透過Google Maps 提供的組件化 API,讓使用者得以自行利用或與其 他的網路服務整合應用,然而Google Maps 在實務操作上是有限制的提供服務,對於圖 徵的數量及未壓縮檔案的大小均有設限,因此無法完全滿足本研究的要求。
Open Layers 是一個完全開放 JavaScript 原始碼的地圖服務[43],是由 MetaCarta 開 發了初步的版本,且它的所有環境都是透過JavaScript 產生,包括地圖資料、繪圖等,
它可連結多種地圖的圖層,如微軟bing 地圖、Google Maps、Yahoo 地圖及 ESRI 地圖等;
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
18
在使用上,Open Layers 沒有開發限制與付費政策問題,所有程式元件均完全開放且免 費提供使用者應用,對於許多想要節省成本的開發團隊而言,Open Layers 是個非常適 合的網路平台服務,其簡易呈現畫面如圖2.10 所示。本研究綜合考量網路地圖軟體的使 用成本及限制後,將選擇採用Open Layers 作為研究的網路平台。
圖2.10:OpenLayers 範例畫面
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
19
隨著Web GIS 應用層面逐漸擴張,資料的內容豐富度也隨之提昇,面對瞬息萬變的 資料,促使資訊系統與技術推陳出新,運用簡單、快速且有效率的方法來處理龐大的資 料,GeoJSON 技術也在此環境下應運而生。在第二章回顧其他地理資料交換格式,以 及對GeoJSON 的初步了解,每種格式都能有不同的 Web GIS 應用效益,然而 GeoJSON 在Web GIS 解讀過程中,簡化了格式翻譯的流程,加上簡單的內容結構,讓系統讀取與 執行效能優於其他格式,這也是本研究期待GeoJSON 能有更多的應用與發展空間原因。
本章之重點在於討論壓縮技術之設計與檢查機制流程的規劃,再於第四章進一步判 斷壓縮技術的效益與正確性。以下,3.1 節先介紹本研究實驗的系統架構;3.2 節介紹研 究的工具與資料處理的流程;3.3 節是將輸出的 GeoJSON 格式套用在本研究設計的壓縮 技術,以比較浮點式編碼與差分編碼二者的壓縮率,並評估HTTP 壓縮對於改善資料傳 遞時間的效益;3.4 節是將壓縮技術應用於不同條件下進行實驗,包括不同壓縮組合及 不同型態資料對壓縮率的影響;3.5 節是針對壓縮技術套用後,在無法預知可能發生網 路傳輸問題下,設計一套資料傳輸檢查機制,以確保資料的正確性與一致性。
3.1 系統架構
從圖3.1 所示,我們首先處理 Web GIS 需要的空間資料,並將得到的資料透過處理 轉換至資料庫,最後輸出GeoJSON 提供實驗測試;接著將本研究設計的 GeoJSON 壓縮 技術與HTTP 壓縮,依據 GeoJSON 內容進行實驗,以證明本實驗模組改善的成果;再 來將以上兩種模組用不同的組合,觀察資料傳輸時間、壓縮率與資料型態等三種條件對 壓縮的影響,並分別進行實驗;最後,在針對整體壓縮與傳遞過程,套用資料傳輸檢查 的機制,觀察這套檢查機制如何處理可能遇到的網路問題,與錯誤發生的解決方案。詳 細的各部區塊說明如下:
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
20
GeoJSON壓縮
HTTP壓縮 資料前處理
資料傳輸檢查機制 與效能影響
傳輸效能與資料壓縮分析 不同類型資料壓縮分析 資料壓縮技術
效能與壓縮率分析
圖3.1:系統架構圖 1. 資料前處理
由於收集的資料來源屬性不一,為方便實驗進行,需要將不同的檔案格式經由轉 換,以統一型態整合至空間資料庫管理,最後依實驗的資料需求,再透過資料庫 語言產生GeoJSON 格式。
2. 資料壓縮技術
資料壓縮技術分成二部份,一個是針對GeoJSON 格式產生的 GeoJSON 壓縮技術,
另一個為輔助GeoJSON 壓縮技術而運用的 HTTP 壓縮技術。其中,GeoJSON 壓縮 技術參考差分編碼演算法,以及本研究提出的浮點式編碼組成,主要目的為壓縮 座標以減少資料量,而HTTP 壓縮可以縮減 HTTP 解析 GeoJSON 格式的時間,詳 細的方法設計於3.3 節說明,並於第四章實驗探討觀察改善程度與分析成果。
3. 效能與壓縮率分析
主要分成「傳輸效能與資料壓縮分析」與「不同類型資料壓縮分析」,透過不同壓
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
21
縮組合:「原始檔案」、「原始檔案經HTTP 壓縮」、「原始檔案經 GeoJSON 壓縮」、
「原始檔案經GeoJSON 及 HTTP 壓縮」,計算壓縮後資料傳遞的時間。其中「資 料壓縮傳輸效能分析」分析「資料量」對傳遞時間的影響;「不同類型資料壓縮分 析」則將座標資料分成連續與不連續型,分析「差異值大小」對壓縮程度的影響。
4. 資料傳輸檢查機制與效能影響
由於資料傳遞錯誤,可能影響GeoJSON 編碼之正確性,因此參考資料傳輸與驗證 之文獻,採用最普遍的資料驗證方法-「單向雜湊函數」,來避免資料錯誤的發生。
最後,將檢查機制執行時間考慮進資料傳遞的流程,於第四章探討資料檢查對傳 輸效能的影響程度。
在本研究資料搜集與實驗過程中,使用到的程式語言與軟體工具如下:
1. 程式開發:使用 PHP 程式語言,主要用途為開發 GeoJSON 壓縮函式、HTTP 壓縮 程式以及Web GIS 使用者介面。
2. 資料庫:使用 PostgreSQL 空間資料庫,處理收集的地理資料, 其主要功能除了可 利用內建的shp2pgsql 的工具轉換 shp 檔案成空間資料,另外強大的空間資料處理 函式,可支援轉換成實驗需要的GeoJSON 格式。
3. Web GIS 平台:使用 OpenLayers API 建立 GIS 使用者介面平台,並使用 JavaScript(AJAX)與平台進行互動,如放大、縮小、繪圖等。
4. 所有環境佈署在 Apache 應用伺服器。
5. 硬體:CPU 雙核 2.10GHz,記憶體 3GB。
6. 網路條件:由於實驗網路環境為一般家用 ADSL,以此模擬一般使用者查詢地理資 料的現況,網路速度約下載321KBytes/秒,上傳 107.34Kbytes/秒。
3.2 資料前處理
整個系統架構的資料處理流程,包括資料來源、資料轉換、空間資料庫以及GeoJSON 輸出,流程圖與詳細說明如下:
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
22
圖3.2:系統架構圖 1. 資料來源:
於第二章介紹GeoJSON 中,可以發現其支援多種不同的資料型態,包括連續型的 LineString、Polygon,以及非連續型的 Point,因此為了滿足實驗的需求,從過去所 接觸的開發Web GIS 計畫中,取得台灣地區的行政區域以及商業活動的位置分佈。
行政區域資料是經由ArcGIS 軟體產生的 shp 檔案,而商業活動位置分佈則是從同 樣為PostgreSQL 資料庫匯出的檔案,包括有便利商店的分佈、捷運路線、ATM 分 佈等,因此不同的資料型態,可以滿足本研究不同的實驗與分析使用。
2. 資料轉換:
面對不同的檔案來源,必須先有初步轉換成可以讓PostgreSQL 資料庫讀取的格式。
透過內建的「shp2pgsql」執行檔案,可以將 shp 轉換成 SQL 語言並匯入。另外商
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
23
業活動位置分佈資料原本即PostgreSQL 資料庫匯出,在這邊可直接透過資料庫的 回存功能匯入。
3. 空間資料庫:
PostgreSQL 之所以作為本研究實驗的主要資料庫,主要因為 PostgreSQL 除了具有 一般商業資料庫的功能外,更含括幾何空間(geometry)及使用者自定資料型態,讓 使用者可以方便的對資料進行處理與儲存,另外為使空間資料可以符合OGC 制定 的規格,另外附加了PostGIS (Geographic Object for PostgreSQL) 自由軟體套件,可 以輸出如GeoJSON、GML、KML 等 Web GIS 使用的空間資料格式。
4. GeoJSON 產生:
在GeoJSON 輸出階段,可以直接以「ST_AsGeoJSON」資料庫函式語法,產生 GeoJSON 格式,其格式範例如下:
SELECT ST_AsGeoJSON(1,(the_geom)) FROM TABLE;
其語法代表從資料庫中選擇資料所屬的資料表,並將資料表中存放空間資料物件欄 位「the_geom」,用 ST_AsGeoJSON 轉換成 GeoJSON 格式,而 ST_AsGeoJSON (1,(the_geom),5)中的 1 代表 GeoJSON 版本(目前皆為 1)。最後當 PHP 程式接收到 GeoJSON 格式,篩選出座標物件中的座標陣列,即可進行下一步驟的 GeoJSON 資 料壓縮技術套用。
5. 擷取座標內容:
GeoJSON 中含有大量的座標資料,也是本研究的壓縮重點,因此先將格式中過濾 出座標集,以方便壓縮方法的套用流程。
3.3 資料壓縮技術
從文獻回顧以及3.1 的 GeoJSON 格式輸出範例,可以直接辨識出 GeoJSON 格式中,
座標資料佔有相當大的比例、由於鄰近座標數值相近故差異值較小。基於以上發現可以 歸納兩點方向,一為縮減座標資料量;二為利用座標值相近與差異小的特性。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
24
在資料壓縮方法設計過程,參考相關處理序列資料的壓縮技術,以「差分編碼」演 算法最接近本研究的需求,差分編碼簡單來說即兩值相減所得到的「差異值」,因此假 設僅儲存差異值,則資料大小就會減少。
然而,座標資料經由差分編碼後,發現壓縮成效不彰,原因在於座標的浮點數格式 相減後,小數點與尾數間許多值為零的結果,如圖3.3 所示,在這邊本研究將小數點與 尾數間的值為零現象稱之為「前置零」。另外,前置零的存在影響字串長度,因此本研 究提出一個可以去除前置零字元的方法-浮點式編碼,並於下文作詳細的介紹。
120.57425 , 0.00037 , 0.0001
前置零
原始資料 :120.57425 , 120.57462 , 120.57472 差分編碼
圖3.3:差分編碼產生的前置零
另一個探討的議題是HTTP 壓縮技術,從文獻中得知,所有經伺服器傳遞的資訊,
都需要經過HTTP 層解析在回應至用戶端。換句話說,資料內容愈多,花費的解析時間 與頻寬使用率就愈高。參考減少頻寬與提昇效能的方法研究中,最普遍的方法為GZIP 壓縮演算法,因此本研究採用GZIP 壓縮演算法進行 HTTP 壓縮,以輔助減少 GeoJSON 資料的解析時間。
綜合以上說明,本節可以歸納二個部份,分別為GeoJSON 壓縮技術與 HTTP 壓縮技術。
綜合以上說明,本節可以歸納二個部份,分別為GeoJSON 壓縮技術與 HTTP 壓縮技術。