本發(fā)明屬于通信技術(shù)領(lǐng)域,具體涉及用于傳感器網(wǎng)絡(luò)傳輸過(guò)程中的地理位置信息壓縮編碼方法。
背景技術(shù):
傳感器網(wǎng)絡(luò)的地理位置信息,對(duì)于標(biāo)記數(shù)據(jù)產(chǎn)生和事件發(fā)生的位置是很有必要的,傳感器網(wǎng)絡(luò)中的很多服務(wù)是基于地理位置信息的,比如水污染監(jiān)測(cè)、生態(tài)環(huán)境監(jiān)測(cè)以及災(zāi)害預(yù)警等。參照常用的WGS84:World Geodetic System 1984標(biāo)準(zhǔn),GPS中地理位置信息由<經(jīng)度,緯度,高度>表示。其中經(jīng)度表示方式為23°21′23″E這種格式,其中度的區(qū)間為[0°,180°],分和秒是60進(jìn)位的,E表示的是東經(jīng)。其中也可以用符號(hào)位表示東西經(jīng),+號(hào)表示東經(jīng)、-號(hào)表示西經(jīng),則區(qū)間為[+180°,-180°],表示南北緯時(shí),+號(hào)表示北緯、-號(hào)表示南緯,此時(shí)的區(qū)間為[+90°,-90°],海拔則一般以[-11000,8000]為區(qū)間,本發(fā)明為統(tǒng)一經(jīng)緯度和高度的精度要求,采用[-11000,C-11000]為區(qū)間,其中C為赤道周長(zhǎng)。
地理位置信息編碼,是以二進(jìn)制的方式表示地理位置的三維坐標(biāo),用于傳輸。在WGS84規(guī)定中,GPS的經(jīng)度、緯度和高度都是實(shí)數(shù),分別用32位表示,則單個(gè)位置數(shù)據(jù)需要用12個(gè)字節(jié)表示,這對(duì)于大多數(shù)網(wǎng)絡(luò)應(yīng)用來(lái)說(shuō)并沒(méi)有占整個(gè)傳輸幀的很大比例,但是對(duì)于傳感器網(wǎng)絡(luò)和其他低能耗網(wǎng)絡(luò)來(lái)說(shuō),特別是MTU比較小的情況下,用12個(gè)字節(jié)來(lái)表示位置信息會(huì)占用較大比例的傳輸位,造成傳輸次數(shù)的增多和能耗的增加,所以利用不同的方法對(duì)地理位置信息的進(jìn)行壓縮編碼以減小占用的位數(shù)還是很有必要的。而且大多數(shù)傳感器網(wǎng)絡(luò)的節(jié)點(diǎn)都是電池供電,能耗的增加會(huì)減少該節(jié)點(diǎn)的使用壽命。特別是一些低能耗網(wǎng)絡(luò)技術(shù),對(duì)帶寬消耗非常敏感,如IEEE 802.15.4-2003定義的報(bào)文尺寸只有127字節(jié),刨去鏈路層和安全機(jī)制占用的部分,只有不到81個(gè)字節(jié)可用于信息傳輸。本發(fā)明利用相近區(qū)域位置信息相關(guān)的特點(diǎn),能夠?qū)鬏數(shù)奈恢眯畔⑦M(jìn)行可控精度的壓縮和解碼,從而減少地址位置信息的傳輸開(kāi)銷(xiāo)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是對(duì)傳輸?shù)奈恢眯畔⑦M(jìn)行可控精度的壓縮和解碼,從而減少地理位置信息在通信傳輸過(guò)程中對(duì)帶寬的消耗。
本發(fā)明的技術(shù)方案是:可控精度的地理位置信息壓縮傳輸方法,根據(jù)定義的精度d,在發(fā)送端對(duì)地理位置信息Loc進(jìn)行壓縮編碼,并在接收端對(duì)地理位置信息進(jìn)行解碼操作;包括以下步驟:
S1、根據(jù)精度d確定傳輸節(jié)點(diǎn)地理位置信息編碼的粒度參數(shù)m,通過(guò)下公式計(jì)算滿足精度d的最小位數(shù)m;
其中,C為地球赤道周長(zhǎng),d表示用m位二進(jìn)制對(duì)赤道上的位置坐標(biāo)編碼所能達(dá)到的精度;
所述傳輸節(jié)點(diǎn)包括:發(fā)送端源節(jié)點(diǎn)、中間節(jié)點(diǎn)以及目的節(jié)點(diǎn);
S2、在發(fā)送端對(duì)源節(jié)點(diǎn)地理位置信息Loc編碼;所述發(fā)送端源節(jié)點(diǎn)地理位置信息Loc編碼的k位后綴對(duì)于接收端傳輸節(jié)點(diǎn)是唯一識(shí)別碼;且所述k滿足下式:
其中,C為地球赤道周長(zhǎng),L為接收端與Loc最大距離;
并且通過(guò)公式確定傳輸信息中經(jīng)度、緯度和高度分別所占的位數(shù)K的值;
S3、在接收端對(duì)源節(jié)點(diǎn)地理位置信息Loc解碼。
進(jìn)一步地,當(dāng)傳感器網(wǎng)絡(luò)為端到端結(jié)構(gòu)時(shí),所述步驟S2還包括:根據(jù)第一編碼算法計(jì)算m位表示的位置的二進(jìn)制信息<Bx,By,Bh>,并得到最終位置信息msg。
更進(jìn)一步地,所述第一編碼算法為:根據(jù)下式計(jì)算<Bx,By,Bh>;
由
bx=Bxmod2k
by=Bymod2k
bh=Bhmod2k
計(jì)算得到最終位置信息:msg=<bx,by,bh>。
進(jìn)一步地,當(dāng)傳感器網(wǎng)絡(luò)為逐跳結(jié)構(gòu)時(shí),且各傳輸節(jié)點(diǎn)的地理位置信息精度d相同,所述步驟S2還包括:根據(jù)第二編碼算法計(jì)算m位表示的位置的二進(jìn)制信息<Bx,By,Bh>,并得到最終位置信息msg。
更進(jìn)一步地,所述第二編碼算法為:根據(jù)下式計(jì)算<Bx,By,Bh>;
由
bk=(K/3)mod23
bx=Bxmod2k
by=Bymod2k
bh=Bhmod2k
計(jì)算得到最終位置信息:msg=<bk,bx,by,bh>。
更進(jìn)一步地,當(dāng)傳感器網(wǎng)絡(luò)為逐跳結(jié)構(gòu)時(shí),且傳輸節(jié)點(diǎn)既非發(fā)送端的源節(jié)點(diǎn),也非目的節(jié)點(diǎn)時(shí),在該傳輸節(jié)點(diǎn)處,首先計(jì)算該傳輸節(jié)點(diǎn)處的K值,并對(duì)來(lái)自上一傳輸節(jié)點(diǎn)的編碼信息進(jìn)行解碼,然后根據(jù)第二編碼算法編碼后發(fā)送至下一傳輸節(jié)點(diǎn)。
進(jìn)一步地,當(dāng)傳感器網(wǎng)絡(luò)為逐跳結(jié)構(gòu)時(shí),且各傳輸節(jié)點(diǎn)的地理位置信息精度d不相同,所述步驟S2還包括:根據(jù)第三編碼算法計(jì)算m位表示的位置的二進(jìn)制信息<Bx,By,Bh>,并得到最終位置信息msg。
更進(jìn)一步地,所述第三編碼算法為:根據(jù)下式計(jì)算<Bx,By,Bh>;
由:
bm=m
bk=(K/3)mod23
bx=Bxmod2k
by=Bymod2k
bh=Bhmod2k
計(jì)算得到最終位置信息:msg=<bm,bk,bx,by,bh>。
進(jìn)一步地,當(dāng)傳感器網(wǎng)絡(luò)為端到端結(jié)構(gòu)時(shí),所述步驟S3包括:采用第一解碼算法對(duì)經(jīng)第一編碼算法編碼得到的msg=<bx,by,bh>進(jìn)行解碼,得到源節(jié)點(diǎn)地理位置信息。
更進(jìn)一步地,所述第一解碼算法為:根據(jù)下式計(jì)算目的節(jié)點(diǎn)D的位置信息<Dx,Dy,Dh>:
目的節(jié)點(diǎn)D處的位置編碼信息為<dx,dy,dh>,
其中:
dx=Dxmod2K
dy=Dymod2K
dh=Dhmod2K
通過(guò)比較<bx,by,bh>和<dx,dy,dh>,判斷得到解碼結(jié)果未發(fā)生進(jìn)位或者退位時(shí),則解碼結(jié)果計(jì)算式為:
Bx=Dx-dx+bx
By=Dy-dy+by
Bh=Dh-dh+bh
否則解碼結(jié)果計(jì)算式為:
Bx=Dx-dx+bx+2k×sgn(dx-bx)
By=Dy-dy+by+2k×sgn(dy-by)
Bh=Dh-dh+bh+2k×sgn(dh-bh)
則<Bx,By,Bh>即為源節(jié)點(diǎn)地理位置信息。
進(jìn)一步地,當(dāng)傳感器網(wǎng)絡(luò)為逐跳結(jié)構(gòu)時(shí),且各傳輸節(jié)點(diǎn)的地理位置信息精度相同,所述步驟S3包括:采用第二解碼算法對(duì)經(jīng)第二編碼算法編碼得到的msg=<bk,bx,by,bh>進(jìn)行解碼,得到源節(jié)點(diǎn)地理位置信息。
更進(jìn)一步地,所述第二解碼算法為:根據(jù)下式計(jì)算傳輸節(jié)點(diǎn)R1的位置信息<R1x,R1y,R1h>
根據(jù)下式計(jì)算傳輸節(jié)點(diǎn)R1處的位置編碼信息為<r1x,r1y,r1h>,其中:
r1x=R1xmod2k
r1y=R1ymod2k
r1h=R1hmod2k
通過(guò)比較<bx,by,bh>和<r1x,r1y,r1h>,判斷得到解碼結(jié)果未發(fā)生進(jìn)位或者退位時(shí),則解碼結(jié)果計(jì)算式為:
Bx=R1x-r1x+bx
By=R1y-r1y+by
Bh=R1h-r1h+bh
若是發(fā)生進(jìn)位或者退位,則解碼結(jié)果計(jì)算式為:
Bx=R1x-r1x+bx+2k×sgn(r1x-bx)
By=R1y-r1y+by+2k×sgn(r1y-by)
Bh=R1h-r1h+bh+2k×sgn(r1h-bh)
則<Bx,By,Bh>即為源節(jié)點(diǎn)地理位置信息。
進(jìn)一步地,當(dāng)傳感器網(wǎng)絡(luò)為逐跳結(jié)構(gòu)時(shí),且各傳輸節(jié)點(diǎn)的地理位置信息精度d不相同,所述步驟S3包括:采用第三解碼算法對(duì)經(jīng)第三編碼算法編碼得到的msg=<bm,bk,bx,by,bh進(jìn)行解碼,得到源節(jié)點(diǎn)地理位置信息。
更進(jìn)一步地,所述第三解碼算法為:根據(jù)源節(jié)點(diǎn)的粒度參數(shù)m,計(jì)算傳輸節(jié)點(diǎn)R1的位置信息<R1x,R1y,R1h>:
然后通過(guò)下式計(jì)算傳輸節(jié)點(diǎn)R1處的位置編碼信息<r1x,r1y,r1h>,
其中:
r1x=R1xmod2k
r1y=R1ymod2k
r1h=R1hmod2k
通過(guò)比較<bx,by,bh>和<r1x,r1y,r1h>,判斷得到解碼結(jié)果未發(fā)生進(jìn)位或者退位時(shí),則解碼結(jié)果計(jì)算式為:
Bx=R1x-r1x+bx
By=R1y-r1y+by
Bh=R1h-r1h+bh
若是發(fā)生進(jìn)位或者退位,則解碼結(jié)果表達(dá)式為:
Bx=R1x-r1x+bx+2k×sgn(r1x-bx)
By=R1y-r1y+by+2k×sgn(r1y-by)
Bh=R1h-r1h+bh+2k×sgn(r1h-bh)
則<Bx,By,Bh>即為源節(jié)點(diǎn)地理位置信息。
本發(fā)明的有益效果是:本發(fā)明的可控精度的地理位置信息壓縮傳輸方法,利用相鄰區(qū)域的地理位置信息相關(guān)性,能夠減少地理位置信息的編碼長(zhǎng)度,發(fā)送端通過(guò)估計(jì)接收端的大致范圍即可實(shí)現(xiàn)編碼過(guò)程,接收端則能根據(jù)自身的位置和收到的信息獨(dú)立實(shí)現(xiàn)編碼,通過(guò)減少每個(gè)傳輸幀中位置信息所占的位數(shù),使得每次傳輸?shù)钠渌畔⒌奈粩?shù)增加,從而節(jié)省了有效帶寬。
附圖說(shuō)明
圖1表明沿經(jīng)度方向或者緯度方向的二進(jìn)制編碼的后綴具有周期性。
圖2是一個(gè)確定范圍的傳感器網(wǎng)絡(luò)示意圖,該圖所示的情況可以根據(jù)覆蓋范圍來(lái)統(tǒng)一確定編碼位數(shù)。
圖3是一個(gè)不確定范圍的多跳的傳感網(wǎng)絡(luò)示意圖。
具體實(shí)施方式
為便于本領(lǐng)域技術(shù)人員理解本發(fā)明的技術(shù)內(nèi)容,下面結(jié)合附圖對(duì)本發(fā)明內(nèi)容進(jìn)一步闡釋。
本發(fā)明的技術(shù)方案:可控精度的地理位置信息壓縮傳輸方法,根據(jù)定義的精度d,在發(fā)送端對(duì)地理位置信息Loc進(jìn)行壓縮編碼,并在接收端對(duì)地理位置信息進(jìn)行解碼操作;包括以下步驟:
S1、根據(jù)精度d確定地理位置信息編碼的粒度參數(shù)m,通過(guò)下公式計(jì)算滿足精度d的最小位數(shù)m;
其中,C為地球赤道周長(zhǎng),d表示用m位二進(jìn)制對(duì)赤道上的位置坐標(biāo)編碼所能達(dá)到的精度;
S2、在發(fā)送端對(duì)地理位置信息Loc編碼;所述地理位置信息Loc編碼的k位后綴對(duì)于接收端是唯一識(shí)別碼;且所述k滿足下式:
其中,C為地球赤道周長(zhǎng),L為接收端與Loc最大距離;
并且通過(guò)公式確定傳輸信息中經(jīng)度、緯度和高度分別所占的位數(shù)K的值。
如圖1所示,只取3位后綴時(shí),對(duì)于在1202的節(jié)點(diǎn)來(lái)說(shuō),1199是唯一的,1198是不唯一的,[1199,1205]對(duì)應(yīng)位于1202節(jié)點(diǎn)的GTM range表示對(duì)于接收節(jié)點(diǎn)可以唯一解碼的空間范圍,GTM:地理位置拓?fù)溆成洹?梢栽诮o定K的情況下,用K位表示的二進(jìn)制的地理位置信息壓縮編碼具有唯一性,由于其具有周期性所以可以在解碼時(shí)判斷是否需要進(jìn)位。以K=3為例:假設(shè)某節(jié)點(diǎn)的經(jīng)度編碼為00001000,其覆蓋半徑范圍為3m,唯一性很明顯由于二進(jìn)制編碼是周期性的,則后三位一直以000到111為循環(huán),且是連續(xù)的,所以能唯一確定本節(jié)點(diǎn)周?chē)?jié)點(diǎn)的編碼后綴。本例中,由于節(jié)點(diǎn)的半徑為4m,以本節(jié)點(diǎn)為中心的節(jié)點(diǎn)周?chē)慕?jīng)度編碼則為101、110、111、000、001、010、011。
以本節(jié)點(diǎn)為中心的覆蓋范圍內(nèi)的節(jié)點(diǎn)的與其在經(jīng)度方向上地理位置的差值小于4m,即2K-1m,如果傳輸?shù)膲嚎s編碼差值大于等于4,則說(shuō)明高位上有進(jìn)位。設(shè)其周?chē)墓?jié)點(diǎn)經(jīng)度為000000101、00000110、00000111、00001001、00001010、00001011。
假設(shè)目的節(jié)點(diǎn)經(jīng)度為00000111,則其接收到的3位地理位置信息編碼為bx=000,計(jì)算其本身的dx=111,很明顯如果直接替換后三位的相對(duì)位置信息是有問(wèn)題的。由于|dx-bx|=7>2K-1=4,所以可以判斷有進(jìn)位,在計(jì)算時(shí)加上進(jìn)位或者減除進(jìn)位得到源節(jié)點(diǎn)的正確地理位置信息編碼。
S3、在接收端對(duì)地理位置信息解碼。
具體通過(guò)以下兩個(gè)實(shí)施例來(lái)進(jìn)行闡述本發(fā)明的內(nèi)容:
實(shí)施例一
端到端的地理位置信息編碼解碼。傳感器網(wǎng)絡(luò),節(jié)點(diǎn)相對(duì)靜止的情況下。根據(jù)傳感器網(wǎng)絡(luò)的覆蓋范圍靜態(tài)確定K值,根據(jù)m值和覆蓋范圍根據(jù)公式計(jì)算這個(gè)節(jié)點(diǎn)覆蓋范圍內(nèi)能唯一確定的表示每個(gè)節(jié)點(diǎn)的位置的k;
如圖2所示,假定S要把自身的地理位置信息發(fā)送給D,在S處進(jìn)行壓縮編碼:
假定該傳感器網(wǎng)絡(luò)的范圍直徑為400米。
1.精度要求為精確到1米,根據(jù)步驟一中的公式計(jì)算得出即m=26。
S和D的坐標(biāo)分別是:
S=<118°22′00.69″,0°59′57.76″,95>
D=<118°22′08.09″,0°59′57.27″,91>
S和D的坐標(biāo)轉(zhuǎn)化為度數(shù)表示為:
S=<118.36686°,0.99938°,95>
D=<118.36891°,0.99924°,91>
2.按照步驟S2所述確定能唯一表示在該范圍內(nèi)的某一位置的編碼位數(shù)K。首先根據(jù)公式:計(jì)算k=11,再根據(jù)公式當(dāng)e取值為3時(shí),計(jì)算得出K=12。
根據(jù)第一編碼算法計(jì)算用m位表示的位置的二進(jìn)制信息<Bx,By,Bh>:
最終的位置信息msg為:
msg=<bx,by,bh>
bx=Bxmod2k=000000011101B
by=Bymod2k=011110111001B
bh=Bhmod2k=100010010011B
即msg=000000011101011110111001100010010011B
3.根據(jù)步驟S3所述,在目的節(jié)點(diǎn)D處對(duì)位置信息進(jìn)行解碼。首先計(jì)算K值,因?yàn)榇_定范圍的情況下該范圍內(nèi)的K值是統(tǒng)一的,所以此處省略計(jì)算過(guò)程,得K=12。D節(jié)點(diǎn)首先計(jì)算自己的位置信息<Dx,Dy,Dh>
D節(jié)點(diǎn)處的位置編碼信息為<dx,dy,dh>,其中:
dx=Dxmod2K=000110011100B
dy=Dymod2K=011110011111B
dh=Dhmod2K=100010001100B
通過(guò)比較<bx,by,bh>和<dx,dy,dh>判斷是否需要進(jìn)位或者退位:
2K-1=211=2048
|dx-bx|=|412-29|=383<2048
|dy-by|=|1951-1977|=26<2048
|dh-bh|=|2188-2195|=7<2048
比較結(jié)果表明沒(méi)有發(fā)生進(jìn)位或者退位,則解碼結(jié)果為:
Bx=Dx-dx+bx
=11010100001011000110011100B-000110011100B+000000011101B
=110101000011011000000011101B
By=Dy-dy+by
=1000000101101011110011111B-011110011111B+011110111001B
=1000000101101011110111001B
Bh=Dh-dh+bh
=100100010001100B-100010001100B+100010010011B
=100100010010011B
若是發(fā)生進(jìn)位或者退位,則解碼結(jié)果表達(dá)式為:
Bx=Dx-dx+bx+2k×sgn(dx-bx)
By=Dy-dy+by+2k×sgn(dy-by)
Bh=Dh-dh+bh+2k×sgn(dh-bh)
則<Bx,By,Bh>即為源節(jié)點(diǎn)地理位置信息。
實(shí)施例二
逐跳的地理位置信息編碼解碼。適用于各種傳感器網(wǎng)絡(luò)。根據(jù)源節(jié)點(diǎn)和目的節(jié)點(diǎn)距離動(dòng)態(tài)確定k值,根據(jù)m值以及源節(jié)點(diǎn)和目的節(jié)點(diǎn)的距離ls,d,代入公式計(jì)算能唯一確定源節(jié)點(diǎn)的位置對(duì)應(yīng)的k。
如圖3所示,是一個(gè)不確定邊界的多跳的傳感器網(wǎng)絡(luò),該圖所示情況采用根據(jù)傳輸跳數(shù)及每個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)的覆蓋范圍動(dòng)態(tài)確定編碼位數(shù)。其中根據(jù)轉(zhuǎn)發(fā)節(jié)點(diǎn)與源節(jié)點(diǎn)之間的距離以及轉(zhuǎn)發(fā)節(jié)點(diǎn)的覆蓋范圍動(dòng)態(tài)確定傳輸?shù)奈恢眯畔⒕幋a位數(shù)??紤]編碼解碼過(guò)程在每個(gè)中間節(jié)點(diǎn)的過(guò)程是一致的,本示例中只計(jì)算一個(gè)兩跳地理位置信息的編碼和解碼過(guò)程,實(shí)際的傳感器網(wǎng)絡(luò)的多跳的地理位置信息的編碼解碼過(guò)程參照本示例。
S、R1以及D的坐標(biāo)分別是:
S=<118°22′00.69″,0°59′57.76″,95>
R1=<118°22′08.09″,0°59′57.27″,91>
D=<118°22′12.10″,0°59′53.70″,93>
S和R1距離為229m,R1和D之間的距離為157m,S和D之間的距離為379m,S的覆蓋半徑為250m,R1的覆蓋半徑為200m,坐標(biāo)轉(zhuǎn)化為度數(shù)表示為:
S=<118.36686°,0.99938°,95>
R1=<118.36891°,0.99924°,91>
D=<118.37003°,0.99825°,93>
1.精度要求為精確到1米,根據(jù)步驟一中的公式計(jì)算得出即m=26。
2.按照步驟S2所述,確定能唯一表示在該范圍內(nèi)的某一位置的編碼位數(shù)K。首先根據(jù)公式:
其中,L為S的覆蓋半徑,計(jì)算k=10,再根據(jù)公式計(jì)算得出K=12
根據(jù)第二編碼算法計(jì)算用m位表示的位置的二進(jìn)制信息<Bx,By,Bh>:
最終的位置信息msg為:
msg=<bk,bx,by,bh>
bk=(K/3)mod23=100B
bx=Bxmod2k=000000011101B
by=Bymod2k=011110111001B
bh=Bhmod2k=100010010011B
即msg=100000000011101011110111001100010010011B
3.根據(jù)步驟S3所述,
首先,在節(jié)點(diǎn)R1處對(duì)位置信息進(jìn)行解碼。首先計(jì)算K=bk×3=12。R1節(jié)點(diǎn)首先計(jì)算自己的位置信息<R1x,R1y,R1h
R1節(jié)點(diǎn)處的位置編碼信息為<r1x,r1y,r1h>,其中:
r1x=R1xmod2k=000110011100B
r1y=R1ymod2k=011110011111B
r1h=R1hmod2k=100010001100B
通過(guò)比較<bx,by,bh<和<r1x,r1y,r1h>判斷是否需要進(jìn)位或者退位:
2K-1=211=2048
|r1x-bx|=|412-29|=383<2048
|r1y-by|=|1951-1977|=26<2048
|r1h-bh|=|2188-2195|=7<2048
比較結(jié)果表明沒(méi)有發(fā)生進(jìn)位或者退位,則解碼結(jié)果為:
Bx=R1x-r1x+bx
=11010100001011000110011100B-000110011100B+000000011101B
=110101000011011000000011101B
By=R1y-r1y+by
=1000000101101011110011111B-011110011111B+011110111001B
=1000000101101011110111001B
Bh=R1h-r1h+bh
=100100010001100B-100010001100B+100010010011B
=100100010010011B
若是發(fā)生進(jìn)位或者退位,則解碼結(jié)果表達(dá)式為:
Bx=R1x-r1x+bx+2k×sgn(r1x-bx)
By=R1y-r1y+by+2k×sgn(r1y-by)
Bh=R1h-r1h+bh+2k×sgn(r1h-bh)
則<Bx,By,Bh>即為源節(jié)點(diǎn)地理位置信息。
然后,由于R1不是目的節(jié)點(diǎn),所以R1要將S節(jié)點(diǎn)的位置信息進(jìn)行二次壓縮,轉(zhuǎn)發(fā)給下個(gè)節(jié)點(diǎn)D。但是由于S和D之間相對(duì)位置與S和R1之間的相對(duì)位置不一樣所以要重新計(jì)算K值,計(jì)算k值的公式為
其中,L為S與R1之間的距離(由坐標(biāo)差計(jì)算得出)與R1的覆蓋半徑之和。計(jì)算得k=11。根據(jù)公式計(jì)算得出K=12。求得轉(zhuǎn)發(fā)的地理位置編碼信息為:
msg=<bk,bx,by,bh>
bk=(K/3)mod23=100B
bx=Bxmod2k=000000011101B
by=Bymod2k=011110111001B
bh=Bhmod2k=100010010011B
即msg=100000000011101011110111001100010010011B
再將該地理位置信息轉(zhuǎn)發(fā)給本示例中的目的節(jié)點(diǎn)D。
最后,在目的節(jié)點(diǎn)D處對(duì)位置信息進(jìn)行解碼。首先計(jì)算K=bk×3=12。D節(jié)點(diǎn)首先計(jì)算自己的位置信息<Dx,Dy,Dh
D節(jié)點(diǎn)處的位置編碼信息為<dx,dy,dh>,其中:
dx=Dxmod2K=001001101100B
dy=Dymod2K=011011100111B
dh=Dhmod2K=100010001111B
通過(guò)比較<bx,by,bh>和<dx,dy,dh>判斷是否需要進(jìn)位或者退位:
2K-1=211=2048
|dx-bx|=|620-29|=591<2048
|dy-by|=|1767-1977|=210<2048
|dh-bh|=|2191-2195|=4<2048
比較結(jié)果表明沒(méi)有發(fā)生進(jìn)位或者退位,
則解碼結(jié)果為:
Bx=Dx-dx+bx
=11010100001011001001101100B-001001101100B+000000011101B
=11010100001011000000011101B
By=Dy-dy+by
=1000000101101011011100111B-011011100111B+011110111001B
=1000000101101011110111001B
Bh=Dh-dh+bh
=100100010001111B-100010001111B+100010010011B
=100100010010011B
若是發(fā)生進(jìn)位或者退位,則解碼結(jié)果表達(dá)式為:
Bx=Dx-dx+bx+2k×sgn(dx-bx)
By=Dy-dy+by+2k×sgn(dy-by)
Bh=Dh-dh+bh+2k×sgn(dh-bh)
則<Bx,By,Bh>即為源節(jié)點(diǎn)地理位置信息。
實(shí)施例三
如圖3所示,是一個(gè)不確定邊界的多跳的傳感器網(wǎng)絡(luò),逐跳的地理位置信息編碼解碼。適用于各種傳感器網(wǎng)絡(luò),而且此時(shí)每個(gè)傳輸節(jié)點(diǎn)的地理位置信息精度要求不一樣。根據(jù)源節(jié)點(diǎn)和目的節(jié)點(diǎn)距離動(dòng)態(tài)確定k值,根據(jù)傳輸節(jié)點(diǎn)傳輸?shù)牡乩砦恢眯畔⒅械谋硎揪鹊膍值以及源節(jié)點(diǎn)和目的節(jié)點(diǎn)的距離ls,d,代入公式計(jì)算能唯一確定源節(jié)點(diǎn)的位置對(duì)應(yīng)的k。
具體編碼解碼過(guò)程如下:
S、R1以及D的坐標(biāo)分別是:
S=<118°22′00.69″,0°59′57.76″,95>
R1=<118°22′08.09″,0°59′57.27″,91>
D=<118°22′12.10″,0°59′53.70″,93>
S和R1距離為229m,R1和D之間的距離為157m,S和D之間的距離為379m,S的覆蓋半徑為250m,R1的覆蓋半徑為200m,坐標(biāo)轉(zhuǎn)化為度數(shù)表示為:
S=<118.36686°,0.99938°,95>
R1=<118.36891°,0.99924°,91>
D=<118.37003°,0.99825°,93>
1.S節(jié)點(diǎn)計(jì)算的地理位置信息精確到1米(每個(gè)節(jié)點(diǎn)的精度要求可能不一致,所以要源節(jié)點(diǎn)傳輸),根據(jù)步驟一中的公式計(jì)算得出即m=26。
2.按照步驟S2所述,確定能唯一表示在該范圍內(nèi)的某一位置的編碼位數(shù)K。首先根據(jù)公式:
其中L為S的覆蓋半徑,計(jì)算k=10,再根據(jù)公式計(jì)算得出K=12。根據(jù)第三編碼算法方法計(jì)算用m位表示的位置的二進(jìn)制信息<Bx,By,Bh>:
最終的位置信息msg為:
msg=<bk,bx,by,bh>
bm=m=11010B
bk=(K/3)mod23=100B
bx=Bxmod2k=000000011101B
by=Bymod2k=011110111001B
bh=Bhmod2k=100010010011B
即msg=11010100000000011101011110111001100010010011B
3.根據(jù)步驟S3所述,在節(jié)點(diǎn)R1處對(duì)位置信息進(jìn)行解碼。首先計(jì)算K=bk×3=12,再得出S節(jié)點(diǎn)的精度信息m=26。R1節(jié)點(diǎn)首先根據(jù)S節(jié)點(diǎn)的精度信息m計(jì)算對(duì)應(yīng)該精度的自己的位置信息<R1x,R1y,R1h>,以確保地理位置信息二進(jìn)制編碼前綴的一致性:
R1節(jié)點(diǎn)處的m=26時(shí)的位置編碼信息為<r1x,r1y,r1h>,其中:
r1x=R1xmod2k=000110011100B
r1y=R1ymod2k=011110011111B
r1h=R1hmod2k=100010001100B
通過(guò)比較<bx,by,bh>和<r1x,r1y,r1h>判斷是否需要進(jìn)位或者退位:
2K-1=211=2048
|r1x-bx|=|412-29|=383<2048
|r1y-by|=|1951-1977|=26<2048
|r1h-bh|=|2188-2195|=7<2048
比較結(jié)果表明沒(méi)有發(fā)生進(jìn)位或者退位,則解碼結(jié)果為:
Bx=R1x-r1x+bx
=11010100001011000110011100B-000110011100B+000000011101B
=110101000011011000000011101B
By=R1y-r1y+by
=1000000101101011110011111B-011110011111B+011110111001B
=1000000101101011110111001B
Bh=R1h-r1h+bh
=100100010001100B-100010001100B+100010010011B
=100100010010011B
若是發(fā)生進(jìn)位或者退位,則解碼結(jié)果表達(dá)式為:
Bx=R1x-r1x+bx+2k×sgn(r1x-bx)
By=R1y-r1y+by+2k×sgn(r1y-by)
Bh=R1h-r1h+bh+2k×sgn(r1h-bh)
則<Bx,By,Bh>即為源節(jié)點(diǎn)地理位置信息。
4.由于R1不是目的節(jié)點(diǎn),所以R1要將S節(jié)點(diǎn)的位置信息進(jìn)行二次壓縮,轉(zhuǎn)發(fā)給下個(gè)節(jié)點(diǎn)D。但是由于S和D之間相對(duì)位置與S和R1之間的相對(duì)位置不一樣所以要重新計(jì)算K值,計(jì)算k值的公式為
其中,L為S與R1之間的距離(由坐標(biāo)差計(jì)算得出)與R1的覆蓋半徑之和。計(jì)算得k=11。根據(jù)公式計(jì)算得出K=12。求得轉(zhuǎn)發(fā)的地理位置編碼信息為:
msg=<bk,bx,by,bh>
bm=m=11010B
bk=(K/3)mod23=100B
bx=Bxmod2k=000000011101B
by=Bymod2k=011110111001B
bh=Bhmod2k=100010010011B
即msg=11010100000000011101011110111001100010010011B
再將該地理位置信息轉(zhuǎn)發(fā)給本示例中的目的節(jié)點(diǎn)D。
5.根據(jù)步驟S3所述,在目的節(jié)點(diǎn)D處對(duì)位置信息進(jìn)行解碼。
首先從轉(zhuǎn)發(fā)的信息中獲取m=26,再計(jì)算K=bk×3=12。D節(jié)點(diǎn)首先根據(jù)m值計(jì)算自己的位置信息<Dx,Dy,Dh>:
D節(jié)點(diǎn)處的m=26時(shí)的位置編碼信息為<dx,dy,dh>,其中:
dx=Dxmod2K=001001101100B
dy=Dymod2K=011011100111B
dh=Dhmod2K=100010001111B
通過(guò)比較<bx,by,bh>和<dx,dy,dh>判斷是否需要進(jìn)位或者退位:
2K-1=211=2048
|dx-bx|=|620-29|=591<2048
|dy-by|=|1767-1977|=210<2048
|dh-bh|=|2191-2195|=4<2048
比較結(jié)果表明沒(méi)有發(fā)生進(jìn)位或者退位,則解碼結(jié)果為:
Bx=Dx-dx+bx
=11010100001011001001101100B-001001101100B+000000011101B
=11010100001011000000011101B
By=Dy-dy+by
=1000000101101011011100111B-011011100111B+011110111001B
=1000000101101011110111001B
Bh=Dh-dh+bh
=100100010001111B-100010001111B+100010010011B
=100100010010011B
若是發(fā)生進(jìn)位或者退位,則解碼結(jié)果表達(dá)式為:
Bx=Dx-dx+bx+2k×sgn(dx-bx)
By=Dy-dy+by+2k×sgn(dy-by)
Bh=Dh-dh+bh+2k×sgn(dh-bh)
則<Bx,By,Bh>即為源節(jié)點(diǎn)地理位置信息。
本領(lǐng)域的普通技術(shù)人員將會(huì)意識(shí)到,這里所述的實(shí)施例是為了幫助讀者理解本發(fā)明的原理,應(yīng)被理解為本發(fā)明的保護(hù)范圍并不局限于這樣的特別陳述和實(shí)施例。對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。