郭 琛,胡慶武
(武漢大學遙感信息工程學院,湖北 武漢 430079)
?
基于微信二維碼的地圖編碼服務方法
郭琛,胡慶武
(武漢大學遙感信息工程學院,湖北 武漢 430079)
針對當前微信二維碼定位、導航和地圖服務需要網絡在線的問題,本文提出了基于微信二維碼的地圖編碼服務方法,該方法直接將局部地圖通過特征抽取和QR編碼轉換成微信二維碼,實現了離線二維碼地圖服務。試驗結果表明,該方法技術可行,地圖編碼效率能夠滿足大型樓宇、地下空間及交通樞紐等離線二維碼地圖應用服務,具有很好的應用前景。
微信;二維碼;特征抽?。籕R編碼;地圖服務
微信是近年來迅速普及的新媒體通信社交平臺,截至2015年第一季度,微信已經覆蓋中國90% 以上的智能手機,月活躍用戶達到5.49億[1]。微信除具備基本聊天功能外,還能為用戶提供二維碼掃描、微信支付、語音記事等多項服務,極大地方便了用戶的日常生活。微信二維碼由騰訊公司開發,用于配合微信使用,實現添加好友和微信支付功能,含有特定的內容格式。能夠被微信正確識別的二維碼目前作為微信的互聯網入口得到了迅速的普及和推廣,主要應用在微信添加好友、微信支付、二維碼票務、二維碼簽到、二維碼下單購物等方面,具有廣闊的發展和應用前景[2]。
基于微信二維碼的定位和地圖服務是一種新興技術,利用微信和微信二維碼的普及性,在二維碼中存儲特定鏈接或定位點編號,用戶掃描二維碼后,服務器作出響應,將對應的地圖鏈接或數據發送到用戶終端上[3]。該方式為在線地圖服務,對服務器系統的存儲能力和響應速度有一定要求,且用戶獲取定位和地圖信息的速度很大程度上受限于移動網絡或當前WiFi環境的信息傳遞能力[4]。
本文針對當前微信二維碼定位、導航和地圖服務需要網絡在線的問題,提出了基于微信二維碼的地圖編碼方法。該方法直接將局部地圖通過特征抽取和QR編碼轉換成微信二維碼,以通用的微信二維碼方式離線存儲地圖數據,實現在無網絡環境下的二維碼地圖服務。試驗結果表明,本文方法技術可行,地圖編碼效率能夠滿足大型樓宇、地下空間及交通樞紐等離線二維碼地圖應用服務,在室內地圖的典型應用如室內定位、室內外一體化導航和O2O電子商務等方面[5]具有很好的應用前景。
與現有的二維碼定位技術中將地圖的鏈接或編號存入二維碼中不同,本文提出的基于微信二維碼的地圖服務方法的基本原理為:將地圖壓縮編碼技術與微信二維碼相結合,直接將地圖數據壓縮編碼存入二維碼中,生成利用二維碼存儲和表達的地圖。二維碼地圖中含有原地圖的大小、名稱,以及各要素幾何和屬性信息等完備內容,通過掃描解碼和地圖顯示技術能夠由二維碼地圖包含的數據繪制出原地圖,地圖的精度損失僅在單位像素內。通過開發能夠掃描該二維碼生成顯示原地圖的移動端應用,在離線狀態下通過掃描二維碼實現地圖瀏覽應用。二維碼地圖可以放置于墻面、廣告牌、指示牌等任意離線物理載體上,以路標或指示的方式出現,從而實現與網絡無關的隨時隨地的地圖服務。本文基于微信二維碼編碼的離線地圖服務的技術框架如圖1所示。
如圖1所示,基于微信二維碼編碼的離線地圖服務包括地圖編碼、離線二維碼地圖生成和二維碼地圖移動端應用3部分。地圖編碼先通過特征抽取提取出地圖中的典型要素,并對要素數據進行壓縮編碼,得到壓縮后的字符串形式的地圖編碼數據,使得壓縮后的地圖數據滿足二維碼的容量要求;進一步通過QR編碼將地圖壓縮編碼數據轉換成微信二維碼,該二維碼可以多種形式在物理載體上存在,智能終端可方便地通過微信二維碼掃描將其轉化成移動端地圖,該過程無需通過網絡訪問或流量傳輸。

圖1 微信二維碼離線地圖服務技術框架
1. 特征抽取
特征抽取是制作二維碼地圖的關鍵步驟,在保證地圖精度的前提下需要將地圖數據壓縮成小于一定長度的字符串數據,以確保二維碼能正確地生成和被解碼,其具體流程如圖2所示。

圖2 地圖特征抽取流程
如圖2所示,地圖特征抽取包括要素提取、要素編碼和整合編碼3個步驟,各步驟詳細處理如下:
1) 要素提?。焊鶕覂葘Ш降貓D服務需求,從地圖中提取的要素包括點狀要素POI和注記,面狀要素如多邊形、矩形、邊界含有曲線的區域。其中,對于較為復雜的邊界含有曲線的區域,參考SVG矢量圖形標準中path對象格式[6],通過命令和點坐標組合的方式進行描述記錄。如M288,260.5V308H42V-29.5C0,0-15-6-16.5-18H288z記錄了一塊邊界含有曲線的區域,其中M表示moveto,V表示verticallineto,H表示horizontallineto,C表示curveto,z表示closepath。
2) 要素編碼:對提取的地圖要素進行壓縮,并按一定的規則排列,生成滿足二維碼容量的字符串序列,包括幾何要素壓縮處理和屬性信息編碼處理[7]。
a. 幾何要素處理:對于獲得的要素幾何信息,即各類要素的坐標信息和矩形區域的長寬信息,使用int型代替double型進行記錄,盡管精度上有所損失,但相對于整個地圖幅面,一個單位內的偏移不會對地圖的精度和可讀性產生影響,并且通過舍去小數點后的數據,可以顯著減少數據量。
對于多邊形區域,由于多邊形上相鄰點坐標值較接近,因而除第一點坐標外,后續點坐標都可記錄為與其前一點坐標的差值,經此處理可顯著減少數據量。此外,對同一類型的一組多邊形,將其按第一點x坐標值排序,每一多邊形第一點x坐標記錄為與其前一多邊形第一點x坐標差值,也可在一定程度減少數據量。針對同一類型矩形區域在空間分布上一般較為均勻、長寬較為接近的特點,將同一類型矩形的坐標和長寬分別計算平均值,矩形編碼中記錄相對于平均值的差值。
b. 屬性信息編碼處理:由于要素的屬性信息會有很多重復的記錄,對于屬性相同的要素,采用按屬性歸類的方式進行編碼。其中,注記中重復率最高的一般是字號信息,因此將注記按字號歸類進行編碼。如針對注記在一幅地圖上的分布一般較為均勻的特點,計算出所有注記坐標的平均值,注記的編碼中記錄相對于平均值的坐標。此外,針對注記內容有較多重復的特點,采用添加索引的方式,注記內容中只記錄單個字符,在后續二維碼數據中添加單個字符和注記內容的對應關系。將橫排和豎排注記分別記為一行,可省去注記中的是否豎排標識。
3) 整合編碼:在不同類型要素編碼間添加代表要素類型的標識符,在編碼開頭加入該地圖的相關信息,最終形成二維碼內存儲的字符串數據。
圖3給出了示例地圖數據經特征抽取后的地圖編碼數據過程。

圖3 地圖特征抽取過程
2. QR編碼
得到壓縮的地圖數據后,還需通過QR編碼的關鍵步驟將地圖數據轉換成二維碼。QR編碼是目前應用最為廣泛的一種二維碼編碼方式,也是微信二維碼所采用的編碼方式。QR編碼的基本流程如圖4所示[8]。

圖4 QR碼編碼流程
1) 數據分析:分析編碼數據的字符類型,在示例地圖中為字符、數字和漢字,依此選擇UTF-8碼進行編碼;然后選定糾錯等級;根據數據的總長度,選擇QR碼符號版本為40,以使數據串長度不超過二維碼容量。
2) 數據編碼:將數據字符轉換為位流,對該位流進行劃分,每8位作為一個碼字;不足8位處加入填充字符以填滿數據碼字;然后在數據碼字后加入終止符標記數據流的結束。
3) 糾錯編碼:將數據碼字分塊,在每一塊內生成相應的糾錯碼字,添加到數據碼字后面。
4) 構造最終信息:在矩陣每一塊中加入數據碼字和糾錯碼字,必要時加入填充數據。
5) 在矩陣中布置模塊:將位置探測圖形、分割符和定位圖形等放入矩陣。
6) 掩膜:為增加該QR碼閱讀的可靠性,將掩模圖形作用于二維碼的編碼區域,從結果中選擇深淺兩色比率較優、并且不希望出現的圖形數量較少的掩膜圖形。
7) 加入二維碼的格式與版本信息。
為驗證本文方法的有效性和壓縮效率,分別選取武漢市群光廣場一樓、北京首都機場T1公共區和杭州火車站地圖3個典型室內地圖進行試驗,數據格式為PNG圖片,如圖5所示。

圖5 試驗地圖數據
1) 地圖壓縮編碼效率試驗:對試驗數據進行矢量化、提取和壓縮后,得到壓縮后的文本格式數據,也即二維碼中存儲的數據。對比原PNG圖片大小和經壓縮編碼后的數據,得到試驗數據壓縮率,并與通用壓縮格式rar的壓縮效率進行比較,結果見表1。
由表1數據可知,利用本文壓縮流程對室內地圖進行壓縮編碼比直接利用rar壓縮在壓縮率上有明顯的優勢,壓縮后的數據大小一般能限制在幾千字節以內,滿足存入微信二維碼中的條件。
2) 微信二維碼地圖服務試驗:通過QR編碼將上述壓縮后的數據轉換為二維碼,由3幅試驗地圖得到的二維碼如圖6所示。
利用移動端應用[9-10]掃描三幅二維碼生成顯示的地圖如圖7所示。
對比圖5、圖7可知,由微信二維碼解碼生成的移動端地圖很好地還原了原地圖的整體輪廓和局部細節,其中地圖的顏色不同是由于顏色方案的差異,不影響地圖的識讀。

表1 壓縮編碼算法壓縮率分析試驗結果
進一步對移動端二維碼地圖應用掃描顯示效率統計,見表2,其中移動端應用終端為SONYLT29i手機。
由表2可知,隨著二維碼中存儲的地圖數據大小的增加,應用耗時也顯著增加,但響應時間始終保持在5s內,解碼顯示效率較高,滿足六秒法則[11-12],能夠滿足較好的用戶體驗。
針對當前基于微信二維碼的地圖服務技術對網絡的依賴性的缺陷,本文提出了一種將地圖數據經過特征抽取和QR編碼直接轉換成二維碼的思路,闡述了基于微信二維碼的地圖壓縮編碼方法的基本原理和整體流程,并結合具體試驗驗證了算法的可行性。在對3組典型的局部地圖壓縮效率的分析中發現本文提出的算法具有較好的壓縮效率,在實際應用中能夠滿足大型樓宇、地下空間及交通樞紐等離線二維碼地圖應用服務,具有良好的應用前景。
[1]百度百科. 微信[EB/OL]. 2015-09-16[2015-10-04].http:∥baike.baidu.com/subview/5117297/15145056.htm.
[2]張馨元. 基于移動微信平臺的二維碼產品防偽認證系統[J]. 網絡安全技術與應用, 2014(11): 321-324.
[3]任豪毅. 基于二維碼的智能手機室內定位方法[D]. 杭州: 浙江大學, 2013.
[4]林澤斐. 基于微信公眾平臺的圖書館二維碼定位系統構建[J]. 圖書情報工作, 2014(16): 138-142.
[5]許華燕, 李志輝, 王金月. 室內地圖應用現狀及展望[J]. 測繪通報, 2014(9): 119-121.
[6]W3C.SVG教程[EB/OL]. 2015-10-04[2015-10-04].http:∥www.w3school.com.cn/svg/index.asp.
[7]胡艷. 矢量地圖數據無損壓縮算法的研究[D]. 鄭州:信息工程大學, 2007.
[8]曾子劍. 基于QR二維碼編解碼技術的研究與實現[D]. 成都:電子科技大學, 2010.
[9]周文生, 胡鵬, 賈永紅.Web環境下SVG地圖瀏覽器的設計與實現[J]. 測繪學院學報, 2003(2): 135-138.
[10]王剛, 韓振鏢. 面向Android智能移動終端的GIS設計與實現[J]. 測繪通報, 2013(8): 77-80.
[11]竇天芳, 張成昱, 張蓓, 等. 移動互聯網與傳統互聯網的服務融合——以清華大學圖書館WAP網站建設為例[J]. 圖書情報工作, 2011, 55(9): 67-84.
[12]趙國鋒, 賴雯靜, 徐川, 等. 移動互聯網的業務訪問特性[J]. 計算機學報, 2013, 36(7): 1388-1398.
A Map Coding Service Approach Using WeChat Two Dimensional Code
GUO Chen,HU Qingwu
2015-10-16;
2015-11-27
郭琛(1994—),男,碩士生,主要從事室內導航研究。E-mail:huqw@whu.edu.cn
P289
B
0494-0911(2016)08-0057-05
引文格式:郭琛,胡慶武.基于微信二維碼的地圖編碼服務方法[J].測繪通報,2016(8):57-61.DOI:10.13474/j.cnki.11-2246.2016.0256.