郭 琛,胡慶武
(武漢大學(xué)遙感信息工程學(xué)院,湖北 武漢 430079)
?
基于微信二維碼的地圖編碼服務(wù)方法
郭琛,胡慶武
(武漢大學(xué)遙感信息工程學(xué)院,湖北 武漢 430079)
針對當(dāng)前微信二維碼定位、導(dǎo)航和地圖服務(wù)需要網(wǎng)絡(luò)在線的問題,本文提出了基于微信二維碼的地圖編碼服務(wù)方法,該方法直接將局部地圖通過特征抽取和QR編碼轉(zhuǎn)換成微信二維碼,實(shí)現(xiàn)了離線二維碼地圖服務(wù)。試驗(yàn)結(jié)果表明,該方法技術(shù)可行,地圖編碼效率能夠滿足大型樓宇、地下空間及交通樞紐等離線二維碼地圖應(yīng)用服務(wù),具有很好的應(yīng)用前景。
微信;二維碼;特征抽?。籕R編碼;地圖服務(wù)
微信是近年來迅速普及的新媒體通信社交平臺,截至2015年第一季度,微信已經(jīng)覆蓋中國90% 以上的智能手機(jī),月活躍用戶達(dá)到5.49億[1]。微信除具備基本聊天功能外,還能為用戶提供二維碼掃描、微信支付、語音記事等多項(xiàng)服務(wù),極大地方便了用戶的日常生活。微信二維碼由騰訊公司開發(fā),用于配合微信使用,實(shí)現(xiàn)添加好友和微信支付功能,含有特定的內(nèi)容格式。能夠被微信正確識別的二維碼目前作為微信的互聯(lián)網(wǎng)入口得到了迅速的普及和推廣,主要應(yīng)用在微信添加好友、微信支付、二維碼票務(wù)、二維碼簽到、二維碼下單購物等方面,具有廣闊的發(fā)展和應(yīng)用前景[2]。
基于微信二維碼的定位和地圖服務(wù)是一種新興技術(shù),利用微信和微信二維碼的普及性,在二維碼中存儲特定鏈接或定位點(diǎn)編號,用戶掃描二維碼后,服務(wù)器作出響應(yīng),將對應(yīng)的地圖鏈接或數(shù)據(jù)發(fā)送到用戶終端上[3]。該方式為在線地圖服務(wù),對服務(wù)器系統(tǒng)的存儲能力和響應(yīng)速度有一定要求,且用戶獲取定位和地圖信息的速度很大程度上受限于移動網(wǎng)絡(luò)或當(dāng)前WiFi環(huán)境的信息傳遞能力[4]。
本文針對當(dāng)前微信二維碼定位、導(dǎo)航和地圖服務(wù)需要網(wǎng)絡(luò)在線的問題,提出了基于微信二維碼的地圖編碼方法。該方法直接將局部地圖通過特征抽取和QR編碼轉(zhuǎn)換成微信二維碼,以通用的微信二維碼方式離線存儲地圖數(shù)據(jù),實(shí)現(xiàn)在無網(wǎng)絡(luò)環(huán)境下的二維碼地圖服務(wù)。試驗(yàn)結(jié)果表明,本文方法技術(shù)可行,地圖編碼效率能夠滿足大型樓宇、地下空間及交通樞紐等離線二維碼地圖應(yīng)用服務(wù),在室內(nèi)地圖的典型應(yīng)用如室內(nèi)定位、室內(nèi)外一體化導(dǎo)航和O2O電子商務(wù)等方面[5]具有很好的應(yīng)用前景。
與現(xiàn)有的二維碼定位技術(shù)中將地圖的鏈接或編號存入二維碼中不同,本文提出的基于微信二維碼的地圖服務(wù)方法的基本原理為:將地圖壓縮編碼技術(shù)與微信二維碼相結(jié)合,直接將地圖數(shù)據(jù)壓縮編碼存入二維碼中,生成利用二維碼存儲和表達(dá)的地圖。二維碼地圖中含有原地圖的大小、名稱,以及各要素幾何和屬性信息等完備內(nèi)容,通過掃描解碼和地圖顯示技術(shù)能夠由二維碼地圖包含的數(shù)據(jù)繪制出原地圖,地圖的精度損失僅在單位像素內(nèi)。通過開發(fā)能夠掃描該二維碼生成顯示原地圖的移動端應(yīng)用,在離線狀態(tài)下通過掃描二維碼實(shí)現(xiàn)地圖瀏覽應(yīng)用。二維碼地圖可以放置于墻面、廣告牌、指示牌等任意離線物理載體上,以路標(biāo)或指示的方式出現(xiàn),從而實(shí)現(xiàn)與網(wǎng)絡(luò)無關(guān)的隨時隨地的地圖服務(wù)。本文基于微信二維碼編碼的離線地圖服務(wù)的技術(shù)框架如圖1所示。
如圖1所示,基于微信二維碼編碼的離線地圖服務(wù)包括地圖編碼、離線二維碼地圖生成和二維碼地圖移動端應(yīng)用3部分。地圖編碼先通過特征抽取提取出地圖中的典型要素,并對要素數(shù)據(jù)進(jìn)行壓縮編碼,得到壓縮后的字符串形式的地圖編碼數(shù)據(jù),使得壓縮后的地圖數(shù)據(jù)滿足二維碼的容量要求;進(jìn)一步通過QR編碼將地圖壓縮編碼數(shù)據(jù)轉(zhuǎn)換成微信二維碼,該二維碼可以多種形式在物理載體上存在,智能終端可方便地通過微信二維碼掃描將其轉(zhuǎn)化成移動端地圖,該過程無需通過網(wǎng)絡(luò)訪問或流量傳輸。
圖1 微信二維碼離線地圖服務(wù)技術(shù)框架
1. 特征抽取
特征抽取是制作二維碼地圖的關(guān)鍵步驟,在保證地圖精度的前提下需要將地圖數(shù)據(jù)壓縮成小于一定長度的字符串?dāng)?shù)據(jù),以確保二維碼能正確地生成和被解碼,其具體流程如圖2所示。
圖2 地圖特征抽取流程
如圖2所示,地圖特征抽取包括要素提取、要素編碼和整合編碼3個步驟,各步驟詳細(xì)處理如下:
1) 要素提?。焊鶕?jù)室內(nèi)導(dǎo)航地圖服務(wù)需求,從地圖中提取的要素包括點(diǎn)狀要素POI和注記,面狀要素如多邊形、矩形、邊界含有曲線的區(qū)域。其中,對于較為復(fù)雜的邊界含有曲線的區(qū)域,參考SVG矢量圖形標(biāo)準(zhǔn)中path對象格式[6],通過命令和點(diǎn)坐標(biāo)組合的方式進(jìn)行描述記錄。如M288,260.5V308H42V-29.5C0,0-15-6-16.5-18H288z記錄了一塊邊界含有曲線的區(qū)域,其中M表示moveto,V表示verticallineto,H表示horizontallineto,C表示curveto,z表示closepath。
2) 要素編碼:對提取的地圖要素進(jìn)行壓縮,并按一定的規(guī)則排列,生成滿足二維碼容量的字符串序列,包括幾何要素壓縮處理和屬性信息編碼處理[7]。
a. 幾何要素處理:對于獲得的要素幾何信息,即各類要素的坐標(biāo)信息和矩形區(qū)域的長寬信息,使用int型代替double型進(jìn)行記錄,盡管精度上有所損失,但相對于整個地圖幅面,一個單位內(nèi)的偏移不會對地圖的精度和可讀性產(chǎn)生影響,并且通過舍去小數(shù)點(diǎn)后的數(shù)據(jù),可以顯著減少數(shù)據(jù)量。
對于多邊形區(qū)域,由于多邊形上相鄰點(diǎn)坐標(biāo)值較接近,因而除第一點(diǎn)坐標(biāo)外,后續(xù)點(diǎn)坐標(biāo)都可記錄為與其前一點(diǎn)坐標(biāo)的差值,經(jīng)此處理可顯著減少數(shù)據(jù)量。此外,對同一類型的一組多邊形,將其按第一點(diǎn)x坐標(biāo)值排序,每一多邊形第一點(diǎn)x坐標(biāo)記錄為與其前一多邊形第一點(diǎn)x坐標(biāo)差值,也可在一定程度減少數(shù)據(jù)量。針對同一類型矩形區(qū)域在空間分布上一般較為均勻、長寬較為接近的特點(diǎn),將同一類型矩形的坐標(biāo)和長寬分別計算平均值,矩形編碼中記錄相對于平均值的差值。
b. 屬性信息編碼處理:由于要素的屬性信息會有很多重復(fù)的記錄,對于屬性相同的要素,采用按屬性歸類的方式進(jìn)行編碼。其中,注記中重復(fù)率最高的一般是字號信息,因此將注記按字號歸類進(jìn)行編碼。如針對注記在一幅地圖上的分布一般較為均勻的特點(diǎn),計算出所有注記坐標(biāo)的平均值,注記的編碼中記錄相對于平均值的坐標(biāo)。此外,針對注記內(nèi)容有較多重復(fù)的特點(diǎn),采用添加索引的方式,注記內(nèi)容中只記錄單個字符,在后續(xù)二維碼數(shù)據(jù)中添加單個字符和注記內(nèi)容的對應(yīng)關(guān)系。將橫排和豎排注記分別記為一行,可省去注記中的是否豎排標(biāo)識。
3) 整合編碼:在不同類型要素編碼間添加代表要素類型的標(biāo)識符,在編碼開頭加入該地圖的相關(guān)信息,最終形成二維碼內(nèi)存儲的字符串?dāng)?shù)據(jù)。
圖3給出了示例地圖數(shù)據(jù)經(jīng)特征抽取后的地圖編碼數(shù)據(jù)過程。
圖3 地圖特征抽取過程
2. QR編碼
得到壓縮的地圖數(shù)據(jù)后,還需通過QR編碼的關(guān)鍵步驟將地圖數(shù)據(jù)轉(zhuǎn)換成二維碼。QR編碼是目前應(yīng)用最為廣泛的一種二維碼編碼方式,也是微信二維碼所采用的編碼方式。QR編碼的基本流程如圖4所示[8]。
圖4 QR碼編碼流程
1) 數(shù)據(jù)分析:分析編碼數(shù)據(jù)的字符類型,在示例地圖中為字符、數(shù)字和漢字,依此選擇UTF-8碼進(jìn)行編碼;然后選定糾錯等級;根據(jù)數(shù)據(jù)的總長度,選擇QR碼符號版本為40,以使數(shù)據(jù)串長度不超過二維碼容量。
2) 數(shù)據(jù)編碼:將數(shù)據(jù)字符轉(zhuǎn)換為位流,對該位流進(jìn)行劃分,每8位作為一個碼字;不足8位處加入填充字符以填滿數(shù)據(jù)碼字;然后在數(shù)據(jù)碼字后加入終止符標(biāo)記數(shù)據(jù)流的結(jié)束。
3) 糾錯編碼:將數(shù)據(jù)碼字分塊,在每一塊內(nèi)生成相應(yīng)的糾錯碼字,添加到數(shù)據(jù)碼字后面。
4) 構(gòu)造最終信息:在矩陣每一塊中加入數(shù)據(jù)碼字和糾錯碼字,必要時加入填充數(shù)據(jù)。
5) 在矩陣中布置模塊:將位置探測圖形、分割符和定位圖形等放入矩陣。
6) 掩膜:為增加該QR碼閱讀的可靠性,將掩模圖形作用于二維碼的編碼區(qū)域,從結(jié)果中選擇深淺兩色比率較優(yōu)、并且不希望出現(xiàn)的圖形數(shù)量較少的掩膜圖形。
7) 加入二維碼的格式與版本信息。
為驗(yàn)證本文方法的有效性和壓縮效率,分別選取武漢市群光廣場一樓、北京首都機(jī)場T1公共區(qū)和杭州火車站地圖3個典型室內(nèi)地圖進(jìn)行試驗(yàn),數(shù)據(jù)格式為PNG圖片,如圖5所示。
圖5 試驗(yàn)地圖數(shù)據(jù)
1) 地圖壓縮編碼效率試驗(yàn):對試驗(yàn)數(shù)據(jù)進(jìn)行矢量化、提取和壓縮后,得到壓縮后的文本格式數(shù)據(jù),也即二維碼中存儲的數(shù)據(jù)。對比原PNG圖片大小和經(jīng)壓縮編碼后的數(shù)據(jù),得到試驗(yàn)數(shù)據(jù)壓縮率,并與通用壓縮格式rar的壓縮效率進(jìn)行比較,結(jié)果見表1。
由表1數(shù)據(jù)可知,利用本文壓縮流程對室內(nèi)地圖進(jìn)行壓縮編碼比直接利用rar壓縮在壓縮率上有明顯的優(yōu)勢,壓縮后的數(shù)據(jù)大小一般能限制在幾千字節(jié)以內(nèi),滿足存入微信二維碼中的條件。
2) 微信二維碼地圖服務(wù)試驗(yàn):通過QR編碼將上述壓縮后的數(shù)據(jù)轉(zhuǎn)換為二維碼,由3幅試驗(yàn)地圖得到的二維碼如圖6所示。
利用移動端應(yīng)用[9-10]掃描三幅二維碼生成顯示的地圖如圖7所示。
對比圖5、圖7可知,由微信二維碼解碼生成的移動端地圖很好地還原了原地圖的整體輪廓和局部細(xì)節(jié),其中地圖的顏色不同是由于顏色方案的差異,不影響地圖的識讀。
表1 壓縮編碼算法壓縮率分析試驗(yàn)結(jié)果
進(jìn)一步對移動端二維碼地圖應(yīng)用掃描顯示效率統(tǒng)計,見表2,其中移動端應(yīng)用終端為SONYLT29i手機(jī)。
由表2可知,隨著二維碼中存儲的地圖數(shù)據(jù)大小的增加,應(yīng)用耗時也顯著增加,但響應(yīng)時間始終保持在5s內(nèi),解碼顯示效率較高,滿足六秒法則[11-12],能夠滿足較好的用戶體驗(yàn)。
針對當(dāng)前基于微信二維碼的地圖服務(wù)技術(shù)對網(wǎng)絡(luò)的依賴性的缺陷,本文提出了一種將地圖數(shù)據(jù)經(jīng)過特征抽取和QR編碼直接轉(zhuǎn)換成二維碼的思路,闡述了基于微信二維碼的地圖壓縮編碼方法的基本原理和整體流程,并結(jié)合具體試驗(yàn)驗(yàn)證了算法的可行性。在對3組典型的局部地圖壓縮效率的分析中發(fā)現(xiàn)本文提出的算法具有較好的壓縮效率,在實(shí)際應(yīng)用中能夠滿足大型樓宇、地下空間及交通樞紐等離線二維碼地圖應(yīng)用服務(wù),具有良好的應(yīng)用前景。
[1]百度百科. 微信[EB/OL]. 2015-09-16[2015-10-04].http:∥baike.baidu.com/subview/5117297/15145056.htm.
[2]張馨元. 基于移動微信平臺的二維碼產(chǎn)品防偽認(rèn)證系統(tǒng)[J]. 網(wǎng)絡(luò)安全技術(shù)與應(yīng)用, 2014(11): 321-324.
[3]任豪毅. 基于二維碼的智能手機(jī)室內(nèi)定位方法[D]. 杭州: 浙江大學(xué), 2013.
[4]林澤斐. 基于微信公眾平臺的圖書館二維碼定位系統(tǒng)構(gòu)建[J]. 圖書情報工作, 2014(16): 138-142.
[5]許華燕, 李志輝, 王金月. 室內(nèi)地圖應(yīng)用現(xiàn)狀及展望[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]胡艷. 矢量地圖數(shù)據(jù)無損壓縮算法的研究[D]. 鄭州:信息工程大學(xué), 2007.
[8]曾子劍. 基于QR二維碼編解碼技術(shù)的研究與實(shí)現(xiàn)[D]. 成都:電子科技大學(xué), 2010.
[9]周文生, 胡鵬, 賈永紅.Web環(huán)境下SVG地圖瀏覽器的設(shè)計與實(shí)現(xiàn)[J]. 測繪學(xué)院學(xué)報, 2003(2): 135-138.
[10]王剛, 韓振鏢. 面向Android智能移動終端的GIS設(shè)計與實(shí)現(xiàn)[J]. 測繪通報, 2013(8): 77-80.
[11]竇天芳, 張成昱, 張蓓, 等. 移動互聯(lián)網(wǎng)與傳統(tǒng)互聯(lián)網(wǎng)的服務(wù)融合——以清華大學(xué)圖書館WAP網(wǎng)站建設(shè)為例[J]. 圖書情報工作, 2011, 55(9): 67-84.
[12]趙國鋒, 賴雯靜, 徐川, 等. 移動互聯(lián)網(wǎng)的業(yè)務(wù)訪問特性[J]. 計算機(jī)學(xué)報, 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—),男,碩士生,主要從事室內(nèi)導(dǎo)航研究。E-mail:huqw@whu.edu.cn
P289
B
0494-0911(2016)08-0057-05
引文格式:郭琛,胡慶武.基于微信二維碼的地圖編碼服務(wù)方法[J].測繪通報,2016(8):57-61.DOI:10.13474/j.cnki.11-2246.2016.0256.