第三章 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 個不同的字母,其轉換方式為將量值 除以進制參數所得的餘數,至上表中找出相對應的字串結果,若除後的商大於