• 沒有找到結果。

第三章    GeoJSON 資料壓縮

3.5  資料傳輸檢查機制

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

31

性的座標資料移動距離較短且數值相近,而非連續性的座標資料可能分佈在不固 定的地理範圍,因此當使用差分編碼時,連續的座標差異值相較於非連續性座標 還來的小,且壓縮率結果較佳。為證明不同類型資料對壓縮率的影響,於4.4 節實 驗結果觀察實際影響的程度。

3.5 資料傳輸檢查機制

根據3.3 節,本研究提出一個避免 GeoJSON 格式編解碼錯誤的方法-「資料傳輸 驗證」機制,來確保資料傳遞的正確與一致性。首先說明資料傳輸檢查機制的基本架構 圖,如下圖所示,其中最重要的部份為伺服器端的「資料驗證前置處理」,以及用戶端 的「資料驗證與錯誤檢查」,詳細流程如下:

圖3.8:資料傳輸驗證架構圖

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

32

1. 伺服器端作業流程:

在進行資料驗證前,首先需要為每一個資料準備一個驗證碼,提供用戶端在接收 資料的檢查依據,驗證碼必須是唯一且不可能重複;此外,為了降低資料錯誤率,

亦加入分散風險的機制以防堵一次傳遞就全軍覆沒的情況發生。因此將本步驟分 成兩大重點,一為「資料分割」、二為「資料驗證碼產生」,詳細說明如下:

(1) 資料切割:

資料切割的用意在於將錯誤風險分散,如參考圖3.12 的例子,一份 GeoJSON 文件並包涵四個座標值,其中差分編碼後的Δp1座標值未傳遞成功,則用戶端 解碼後發生錯誤,錯誤率為100% ( =

傳遞檔案次數 傳遞失敗次數

);若假設我們將 GeoJSON 文件分成4 次傳遞,則發生一次失誤所得到的錯誤率可能降為 25%。

圖3.9 為資料切割的流程示意圖,圖中將(x , y ) 座標以 p 來表示,n 代表文件i i 中的座標個數,以 m 筆座標資料為單位分割,k 表示為總切割數(k=n/m),F 符號代表檔案,且i 為 0 到 k-1 個檔案索引值,因此F ~F 的座標內容為0 k-1

0 m-1 1 2m-1 (k-1)m km-1

{p ...p },{p ...p }, {p… ...p },在將每一個檔案套用GeoJSON 壓 縮,並保留第一個座標值作為解碼的基準值,得到編碼後的檔案F' ~F' ,以0 k-1 及內容為{p ,Δp ...Δp0 0 m-2},{p ,Δp ...Δpm m 2m-2}, {p… (k-1)m,Δp(k-1)m...Δpkm-2}。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

35 p '1 p '2 p '3

圖3.12:GeoJSON 驗證與檢查錯誤示意圖

完整的驗證流程如圖3.13,伺服器端將F' 檔案與附帶s h 驗證碼一併傳至用戶s 端,用戶端在接收到F' 同樣產生一串驗證碼s h ' ,並且與s h 比對並且檢查結果回傳s 至伺服器端。另外,流程執行次數會經由「網址參數」來判斷,參數表示方式例子 如http://localhost/geojson_split.php?k=4&s=2,其中 k 代表分割數,s 代表傳遞檔案的 序號0~k-1,因此上串網址代表總分割數為 4(傳遞 4 次),且目前傳遞為第 2 筆檔案;

當傳遞下一筆時,s=s+1,直到 s<k 為止。反之,若資料驗證有誤,用戶端便會告知 網址不需要加1,則會使用原來的檔案序號再傳遞一次。

F's

F's

h's

hs

F's 1

^

Fs

F's

hs

s s

h h '

圖3.13:資料傳送與檢查

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

36

雖然經由資料傳輸驗證可以避免錯誤發生,若將資料驗證加入本研究壓縮方法程 序,則必須將驗證時間也考慮總傳輸時間,因此在第四章資料傳輸檢查與效能評估實驗 中,將資料驗證加入GeoJSON 壓縮與傳遞時間計算,以此觀察此機制影響多少時間,

以此評估未來需要改善的方向。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

37

根據第三章的系統架構與方法設計,本章針對GeoJSON 資料壓縮進行以下實驗 與分析,以驗證本研究的GeoJSON 資料壓縮能有效的增進網路資料傳輸效能,並且 兼具完整與正確的資料傳輸品質。首先於4.1 節說明,實驗的資料來源處理流程,以 及如何建立GeoJSON 作為資料的傳輸格式;4.2 節將本研究設計的 GeoJSON 壓縮技 術兩種函式-「差分編碼」與「浮點式編碼」,分別進行GeoJSON 資料壓縮實驗,

並整合兩者來觀察相互影響的程度;4.3 節將 GeoJSON 壓縮技術與 HTTP 壓縮,作 比較與結合的實驗,除了觀察資料傳遞的效率外,並考量空間資料的多樣化,從資料 的類別了觀察對壓縮程度的影響;最後引入雜湊函數法進行資料驗證,同時評估此一 程序對本研究提昇效能是否相互影響。

4.1 資料處理與 GeoJSON 輸出

本實驗資料來源,是根據不同的資料型態搜集(點、線、面),由於每種資料型態 對於壓縮能力可能會產生不同的結果與影響,因此本研究期望能透過多樣的資料型態 與大量的資料量,來滿足壓縮實驗的需求,以得到多面向的分析結果。本節共分成三 個部份說明,一為「實驗資料來源」介紹,二為「資料轉換與匯入」,三為「GeoJSON 格式輸出」。

1. 實驗資料來源

(1) 台灣行政區域檔案:

台灣行政區域檔案地理資料型態分類中屬「面」(Polygon)的資料,此檔案 是經由美國環境系統研究所公司(ESRI)的 ArcGIS 軟體匯出成 Shapefile(shp) 檔案,shp 檔為 ESRI 公司開發的一種空間資料格式,該文件格式已經成為 了地理資料軟體界的一個開放標準。由於shp 為一種向量圖形格式,如下 圖所示,因此若要保存其資料屬性至資料庫,必須經由資料轉換工具成資

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

38

料庫可以讀取的-結構化查詢語言(Structured Query Language,SQL)。

圖4.1:台灣行政區域 shp 檔案

(2) 商業活動座標點資料:

商業活動座標點資料是從PostgreSQL 資料庫直接匯出的備份檔案,共包含

「點」(Point)與「線」(LineString)兩種資料型態。商業活動座標點資料依屬 性分成商業、居住、交通、生活、觀光,搜集不同的型態,只是為了營造 不同層次的資料量,透過不同的檔案大小來測試是否對壓縮產生影響。

2. 資料轉換與匯入

為讓不同類型資料可以在各大資料庫互通,因此資料庫都必須要有基本格式的 轉換功能,以本研究PostgreSQL 資料庫,即提供 shp 格式轉換工具,且不需要 另外下載特殊軟體處理。詳細的轉換與匯入資料庫的說明如下:

(1) shp 檔案轉換:

PostgreSQL 提供的轉換工具,需要開啟微軟提供的命令列工具,透過命令

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

39

列執行轉換工具名為shp2pgsql.exe,並且輸入轉換的條件參數。

為使用 shp2pgsql 轉換程式,

代表指定空間座標為WGS84,

代表建立空間資料 索引號,

代表需要轉的的shp 檔案完整路徑,

代表要存入資料庫的資 料表名稱,

>符號為匯出,整句代表匯出一個 twn_country.sql 的檔案,語 法範例與截圖如下,完成轉換後他會列印象資料型態,圖4.2 所示,代表這 份shp 檔案為面(Polygon)的資料。

圖4.2:台灣行政區域 shp 檔案轉換 (2)匯入 PostgreSQL 資料庫:

匯入資料庫的方式有兩種,一為開啟上述指令轉出的文件,並複製文件中的 SQL 語法,貼入資料庫的「SQL 編輯器」執行語法即可,如圖 4.3 所示;二 則是,經由PostgreSQL 轉出的格式,可以在指定的資料庫,按滑鼠右鍵選擇

「備份回存」,如圖4.4 所示。所有資料成功匯入後,從圖 4.5 中框線的區域,

可以看到所有的資料表與內容。

圖4.3:匯入 SQL 至資料庫

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

40

圖4.4:備份回存至資料庫

圖4.5:己匯入的資料表

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

41

3. GeoJSON 格式輸出

根據3.2 節的 GeoJSON 語法如下,即可輸出圖 4.6 所示的 GeoJSON 格式,從 GeoJSON 格式中,可以看到物件名稱「coordinates」,經由 PHP 程式取出 coordinates 中的陣列值[[120.03661,23.08909],[120.03688,23.08907]……],最後使 用遞迴方式,逐一將每組座標值進行壓縮演算,

SELECT ST_AsGeoJSON(1,(the_geom)) FROM TABLE;

{'format': 'geojson','size':'','data':'{type:MultiPoint,coordinates:

[[120.03661,23.08909],[120.03688,23.08907],[120.03768,23.102 79],[120.03773,23.10308],[120.03799,23.07901],[120.03879,23.0 79],[120.03914,23.08006],[120.03924,23.07883],[120.03924,23.0 8139],[120.04006,23.10783],[120.04071,23.07903],[120.04206,2 3.07798],[120.04211,23.08153],[120.04212,23.07905],[120.0421 4,23.07821],[120.04295,23.08304],[120.04476,23.0791],[120.045 74,23.10606],[120.04608,23.1072],[120.04649,23.10919],[120.04

圖4.6:GeoJSON 格式 4.2 GeoJSON 資料壓縮技術實驗結果

本節根據第三章GeoJSON 壓縮技術設計,進行 GeoJSON 格式壓縮的成果測試,

分成「差分編碼與浮點式編碼對檔案壓縮的影響」以及「進制參數對浮點式壓縮資料 的影響」兩大部份。

1. 差分編碼與浮點式編碼對檔案壓縮的影響

本研究從收集的資料來源中,選擇資料量較大的-北台灣診所位置資料,共 計有二萬餘筆的鄉鎮座標資料,由於同一地區內的座標內容非常相似,因此適合 應用GeoJSON 壓縮技術進行資料壓縮處理。GeoJSON 壓縮技術簡單流程為,先 經由「差分編碼」儲存座標的差異值,再利用「浮點式編碼」簡化差異值含括的 大量前置零,因此本實驗的觀察重點,即為「浮點式編碼」可以為傳統的「差分 編碼」改善多少成果。

由於資料樣本數為二萬餘筆,為避免因資料筆數的不同而影響壓縮效果的測

定,本研究以5,000 筆資料為級距,分別從資料中擷取 5,000、10,000、15,000、

20,000 四種規模的資料量,進行差分編碼與浮點式編碼的壓縮實驗,分別計算其 壓縮率。壓縮率(R)的定義如下,Z 為壓縮後檔案的大小;O 為原始檔案的大小,

計算出的壓縮率(R)將介於 0~100%之間,其中(R)值愈大或愈接近 100%,代表壓 縮效果愈佳。

5,000 831,256 739,712 384,712

10,000 1,662,456 1,477,064 775,064 15,000 2,493,312 2,213,35 1,162,472 20,000 3,324,200 2,949,528 1,549,584

 

100%

Ο 1 Ζ

(R)   壓縮率

74,23.10606],[120.04608,23.1072],[120.04649,23.10919],[120.04

圖4.7:原始 5000 筆座標 GeoJSON 內容 {'format': 'geojson','size':'','data':'{type:MultiPoint,coordinates:

[[120.03661,23.08909],[0.00027,-0.00002]

,[0.00080,0.01372],

[0.00005,0.00029],[0.00026,-0.02407],[0.00080,-0.00001], [0.00035,0.00106],[0.00010,-0.00123], [0.00000,0.00256], [0.00082,0.02644],[0.00065,-0.02880],[0.00135,-0.00105], [0.00005,0.00355],[0.00001,-0.00248],[0.00002,-0.00084], [0.00081,0.00483],[0.00181,-0.00394], [0.00098,0.02696],

圖4.8:差分編碼後 5000 筆座標 GeoJSON 內容

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

44

{'format': 'geojson', 'size': '', 'data': '{ type: MultiPoint,coordinates:

[[120.03661,23.08909],[5r,A2],[48,5m8],[55,5t],[5q,ACP],[48,A1]

,[5z,51I],[41,A1Z],[00,548],[51k,5GE],[513,z4E],[52b,A1H],[55,55 J],[51,A40],[52,A1m],[51j,57N],[52V,A6m],[51A,5Hu],[5y,51Q],[

5F,53d],[51R,AsU],[5i,AH3],[52C,5TW],[51,5jh],[5D,z1O],[4c,5ln]

,[5M,ASU],[5h,51t],[5D,5QS],[5l,AlI],[5j,A1bh],[59,00],[52t,51iL], [52a,ACL],[511,5tU],[5M,At3],[53,Ah],[5x,42v],[41,5a9],[5s,5lH],[

42,Az],[519,Ae7],[45,AsJ],[5K,APo],[5f,5R],[5e,A2a],[53,5cs],....

圖4.9:差分編碼加浮點式編碼後 5000 筆座標 GeoJSON 內容

2. 不同地理範圍的座標對壓縮成果的影響

第一項實驗針對大量筆數的座標進行差分與浮點式壓縮,由於都是相鄰範 圍的座標,所得到的差分值結果皆為小於1 的浮點數,將座標定義在非相 同地理範圍,所圖4.10 所示,座標值分別為 A:[42.65254,28.38867] 、B:

[85.99024,52.82226]、C:[116.72449,25.29189] 、D:[120.27181,24.4133]。

表8:非同地理範圍之檔案大小及壓縮率(以括號表示)

原始GeoJON 資料 差分編碼 差分編碼+浮點式壓縮

1592 bit 1584 bit (0.5%)

1464 bit (8.0%)

圖4.10:非同地理範圍之座標範例

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

45

從表8 的結果發現,當 GeoJSON 壓縮方法套用在不同的地理範圍座標集時,

因座標值差距過大,即使套用差分編碼,對字串長度改變不大,因此壓縮成果並 不佳,不過在套用浮點式壓縮後,事實上仍有補足差分編碼壓縮後的缺陷。

3. 進制參數對浮點式壓縮資料的影響

在本研究設計的GeoJSON 壓縮技術中,編碼數值需轉換成字串,以符合純 文字的GeoJSON 格式,為避免字串在轉換過程中產生特殊符號的可能性,如「引 號」、「亂碼(無法辨識字元)」等,造成判讀上的錯誤,故需定義字串轉換的進制 參數。常用的進制轉換參數有26、36 及 62 三種(26,將數字轉換為 a-z 共 26 個 字母;36,將數字轉換為 a-z、0-9 共 36 個字母;62,將數字轉換為 a-z、0-9、

A-Z 共 62 個字母,參考第三章表 3 中 62 進制轉換對照表) ,本研究將根據不同 進制參數,進行字串壓縮的實驗,以探討設定不同進制參數的壓縮效果。

以62 進制為例,從 0~61 分別對應 62 個不同的字母,其轉換方式為將量值 除以進制參數所得的餘數,至上表中找出相對應的字串結果,若除後的商大於

以62 進制為例,從 0~61 分別對應 62 個不同的字母,其轉換方式為將量值 除以進制參數所得的餘數,至上表中找出相對應的字串結果,若除後的商大於