地理位置编码方法

文档序号:6629632阅读:1896来源:国知局
地理位置编码方法
【专利摘要】本发明公开了一种地理位置编码方法,包括以下步骤:获取地理位置;将经度编码为n比特的二进制,将经度的符号编码至符号段内,将经度绝对值编码至数据段内,其中,第一数据段表示经度绝对值的整数部分,第二数据段表示经度绝对值的小数部分;将纬度编码为n比特的二进制,将纬度的符号编码至符号段内,将纬度绝对值编码至数据段内;将n比特的二进制经度编码和n比特的二进制纬度编码进行交叉合并,以获取位置编码。本发明实施例的方法通过将n比特的二进制经度编码和n比特的二进制纬度编码进行交叉合并,以获取位置编码,既使得生成的位置编码以类似互联网地址分层的形式展现出来,同时也方便了地理位置数据的分析、存储和映射。
【专利说明】
地理位置编码方法

【技术领域】
[0001]本发明涉及计算机网络【技术领域】,特别涉及一种地理位置编码方法。

【背景技术】
[0002]目前,已经有很多上网装置能够通过附着至网络的装置进行地理定位,以确定其自身的地理位置。然而,处于一个位置的上网装置,仍然很难接接收到针对这一位置的特定信息,也难于和周边的上网装置进行通讯。虽然目前已经有一些应用如微信等能够查询周边的用户,一方面由于地理位置信息局限于某个应用,另一方面由于地理位置信息格式复杂,通常由几个数据表示,导致不便于表示和呈现,以及地理位置信息难于表达一个地理位置范围,不能够对地理位置信息进行聚类,导致位置应用难于设计实现。
[0003]具体地,地理位置通常以经度、纬度的方式呈现,由于有二元甚至更多元数据如高度的存在,导致数据通常不便于存储、呈现,尤其是在互联网使用时,由于数据结构较为复杂,导致数据不便于使用。相关技术中,通常是通过HTTP(HTTP-Hypertext transferprotocol,超文本传输协议)之上用复杂的数据结构来进行包装呈现,例如,Google或者百度所使用的API (Applicat1n Programming Interface,应用程序编程接口)都是采用了较为复杂的数据包装形式。然而,各个应用系统分别使用自己定义的API,地理位置信息割裂在各个应用之中,导致难以建立一个互联网上统一的位置服务借口。


【发明内容】

[0004]本发明旨在至少在一定程度上解决上述相关技术中的技术问题之一。
[0005]为此,本发明的目的在于提出一种方便数据分析、存储和映射的地理位置编码方法。
[0006]为达到上述目的,本发明实施例提出了一种地理位置编码方法,包括以下步骤:获取地理位置,其中,所述地理位置包括经度和纬度;将所述经度编码为η比特的二进制,其中,所述η比特的二进制包括符号段和数据段,所述数据段包括第一数据段和第二数据段,将所述经度的符号编码至所述符号段内,将所述经度绝对值编码至所述数据段内,其中,所述第一数据段表示所述经度绝对值的整数部分,所述第二数据段表示所述经度绝对值的小数部分,η为大于9的正整数;将所述纬度编码为所述η比特的二进制,将所述纬度的符号编码至所述符号段内,将所述纬度绝对值编码至所述数据段内;以及将所述经度编码的η比特的二进制和所述纬度编码的η比特的二进制进行交叉合并,以获取所述位置编码。
[0007]根据本发明实施例提出的地理位置编码方法,通过分别将经度和纬度的符号编码至η比特的二进制的符号段内,并将经度和纬度的绝对值编码至η比特的二进制的数据段内,从而将经度编码的η比特的二进制和纬度编码的η比特的二进制进行交叉合并,以获取位置编码,既使得生成的位置编码以类似互联网地址分层的形式展现出来,同时也方便了地理位置数据的分析、存储和映射。
[0008]另外,根据本发明上述实施例的地理位置编码方法还可以具有如下附加的技术特征:
[0009]进一步地,在本发明的一个实施例中,所述将所述经度编码为η比特的二进制与所述将所述纬度编码为η比特的二进制,具体包括:通过将I个比特表示符号和8个比特表示小数点左侧的数据,并且将余下的η-9比特表示小数点右侧的数据,以将所述经度编码为η比特的二进制;通过将I个比特表示符号和7个比特表示小数点左侧的数据,并且将余下的η-8比特表示小数点右侧的数据,以将所述纬度编码为η比特的二进制。
[0010]进一步地,在本发明的一个实施例中,所述将所述经度编码的η比特的二进制和所述纬度编码的η比特的二进制进行交叉合并,以获取所述位置编码,具体包括:将等长的所述经度编码的η比特的二进制和所述纬度编码的η比特的二进制进行交叉合并,奇数位放所述经度编码的η比特的二进制,偶数位放所述纬度编码的η比特的二进制,或者,奇数位放所述纬度编码的η比特的二进制,偶数位放所述经度编码的η比特的二进制,以获取所述位置编码。
[0011]进一步地,在本发明的一个实施例中,上述方法还包括:通过所述位置编码和k所表示的位置掩码描述地理位置范围,其中,所述位置掩码为k表示所有编码的前2k比特与所述位置编码的前2k比特相同的所有位置组成的区域,其中,k为大于2小于等于η的正整数。
[0012]进一步地,在本发明的一个实施例中,上述方法还包括:通过第一经度和第二经度所描述的经度范围以及第一纬度和第二纬度所描述的纬度范围得到覆盖这一地块的位置编码、掩码系列,其中,所述第二经度大于所述第一经度,所述第二纬度大于所述第一纬度,具体包括以下步骤:
[0013]I)计算所述第一经度和所述第一纬度所生成的编码a和所述第二经度和所述第二纬度生成的编码b ;
[0014]2)设置变量X为a,变量k为I ;
[0015]3)让X和4k_l的二进制表示求按位比特与,判断所得结果是否为0,如果为O则进入步骤4,否则进入步骤5 ;
[0016]4)判断x+4k是否大于b,如果大于则进入步骤5,否则让k = k+Ι后重复步骤3 ;
[0017]5)输出 x,k_l;
[0018]6)设置X = X+4H,判断X是否大于b,如果大于b,则退出,否则设置k = I重复步骤3。
[0019]进一步地,在本发明的一个实施例中,上述方法还包括:将所述位置编码和所述位置掩码映射到组播地址的第24比特到第95比特中,其中,所述组播地址为128位的IPv6地址;根据所述组播地址加入相应的组播组中,以通过所述组播组进行通信。
[0020]优选地,在本发明的一个实施例中,组播为任意源组播或特定源组播。
[0021]进一步地,在本发明的一个实施例中,上述方法还包括:随着地理位置的改变,重新获得的地理位置和预先设置的位置掩码,生成所述组播地址,并自动退出原位置所在的组播组,加入到新位置所在的组播组中。
[0022]进一步地,在本发明的一个实施例中,上述方法还包括:修改所述预先设置的位置掩码,以便加入到更大的地理范围所形成的组播组,或者进入到更细致的地理范围所形成的组播组;同时加入不同的位置编码及掩码映射成的组播组中,以同时接收来自于多个位置范围的信息。
[0023]本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

【专利附图】

【附图说明】
[0024]本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
[0025]图1为根据本发明一个实施例的地理位置编码方法的流程图;
[0026]图2为根据本发明一个实施例的十进制实数的小数点右侧部分转换为二进制编码的方法流程图;
[0027]图3为根据本发明一个实施例的位置编码的生成方法流程图;
[0028]图4为根据本发明一个实施例的位置掩码的使用方法流程图;
[0029]图5为根据本发明一个实施例的不同长度位置编码所对应的地理范围精度示意图;
[0030]图6为根据本发明一个实施例的通过一个经度、纬度范围得到一系列位置编码和位置掩码的方法流程图;
[0031]图7为根据本发明一个实施例的组播机制,数据包可以同时转给多个接收方的示意图;
[0032]图8为根据本发明一个实施例的组播地址的规范示意图;以及
[0033]图9为根据本发明一个实施例的将位置编码和位置掩码映射入组播地址的方法流程图。

【具体实施方式】
[0034]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
[0035]此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0036]在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
[0037]在本发明中,除非另有明确的规定和限定,第一特征在第二特征之“上”或之“下”可以包括第一和第二特征直接接触,也可以包括第一和第二特征不是直接接触而是通过它们之间的另外的特征接触。而且,第一特征在第二特征“之上”、“上方”和“上面”包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度小于第二特征。
[0038]下面参照附图描述根据本发明实施例提出的地理位置编码方法。参照图1所示,该方法包括以下步骤:
[0039]S101,获取地理位置,其中,地理位置包括经度和纟韦度。
[0040]地理位置通常用经度和纬度进行描述。经度是地球上一个地点离一根被称为本初子午线的南北方向走线以东或以西的度数。其中,本初子午线的经度是0°,地球上其它地点的经度是向东到180°或向西到180°,不像纬度有赤道作为自然的起点,经度没有自然的起点,英国的制图学家使用经过伦敦格林尼治天文台的子午线作为起点,过去其它国家或人也使用过其它的子午线做起点,比如罗马、哥本哈根、耶路撒冷、圣彼德堡、比萨、巴黎和费城等。在1884年的国际本初子午线大会上格林尼治的子午线被正式定为经度的起点。东经180°即西经180°,约等同于国际换日线,国际换日线的两边,日期相差一日。具体地,经度是指通过某地的经线面与本初子午面所成的二面角。在本初子午线以东的经度叫东经,在本初子午线以西的叫西经。东经用“E”表示,西经用“W”表示。经度的每一度被分为60角分,每一分被分为60秒。一个经度因此一般看上去是这样的:东经23° 27' 30〃或西经23° 27' 30〃。更精确的经度位置中秒被表示为分的小数,比如:东经23° 27.500'。
[0041]一个经度和一个纬度一起确定地球上一个地点的精确位置。纬度是指某点与地球球心的连线和地球赤道面所成的线面角,其数值在O至90度之间。位于赤道以北的点的纬度叫北纬,记为N ;位于赤道以南的点的纬度称南纬,记为S,纬度的每个度大约相当于Illkm0
[0042]经纬度有多种表示方法,如ddd.ddddd度是经度或纬度的十进制实数表示,例如:31.12035° ;而ddd.mm._则是度.分,其中分为十进制实数如31° 10.335’ ;或者ddd.mm.ss,度.分.秒,例如 31。12’ 42"。
[0043]在本发明的一个实施例中,本发明实施例所使用的是经度或纬度的实数表示方式,把经纟韦度转换成十进制实数的方法很简单,按照如下公式即可Decimal Degrees=Degrees+minutes/60+seconds/3600,如:57 ° 55’56.6〃 = 57+55/60+56.6/3600 =57.9323888888888。经度在-180°到180。之间,东经正数,西经为负数,而纬度则在-90°到90°之间,北纬为正数,南纬为负数。
[0044]S102,将经度编码为η比特的二进制,其中,η比特的二进制包括符号段和数据段,数据段包括第一数据段和第二数据段,将经度的符号编码至符号段内,将经度绝对值编码至数据段内,其中,第一数据段表示经度绝对值的整数部分,第二数据段表示经度的小数部分,η为大于9的正整数。
[0045]S103,将纬度编码为η比特的二进制,将纬度的符号编码至符号段内,将纬度绝对值编码至数据段内。
[0046]进一步地,在本发明的一个实施例中,本发明实施例将经度或纬度编码成二进制表示。对于十进制转为二进制的实数,ΙΕΕΕ754标准中的方案提出数字系统中的浮点数是对数学中的实数(小数)的近似,同时该标准规定表达浮点数的O、I序列被分为三部分(三个域):以32位单精度浮点数为例,其具体的转换规则是:首先把二进制小数用二进制科学计数法表示,符号位sign表示数的正负(O为正,I为负),故此处填O。本发明实施例并没有采用这一标准,主要原因在于,指数位的存在使得形成的编码结构较为复杂,此外,经度和纬度都具有固定范围,不必要留出额外的指数位。
[0047]在本发明的一个实施例中,将经度编码为η比特的二进制与将纬度编码为η比特的二进制,具体包括:通过将I个比特表示符号和8个比特表示小数点左侧的数据,并且将余下的η-9比特表示小数点右侧的数据,以将经度编码为η比特的二进制;通过将I个比特表示符号和7个比特表示小数点左侧的数据,并且将余下的η-8比特表示小数点右侧的数据,以将纬度编码为η比特的二进制。
[0048]具体地,对于经度而言,小数点左侧的部分用9比特来表示,其中第一比特即符号段为符号位;对于纬度而言,小数点左侧的部分用8比特来表示,其中第一比特即符号段为符号位。符号位可以用任何一种约定来表示正负,例如,第一比特为I表示为负。对于不足I度的部分,转换成二进制小数采用乘2取整,顺序排列法。参照图2所示,具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零或者达到所要求的精度为止,然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
[0049]S104,将经度编码的η比特的二进制和纬度编码的η比特的二进制进行交叉合并,以获取位置编码。
[0050]具体地,在本发明的一个实施例中,将经度编码的η比特的二进制和纬度编码的η比特的二进制进行交叉合并,以获取位置编码,具体包括:将等长的经度编码的η比特的二进制和纬度编码的η比特的二进制进行交叉合并,奇数位放经度编码的η比特的二进制,偶数位放纬度编码的η比特的二进制,或者,奇数位放纬度编码的η比特的二进制,偶数位放经度编码的η比特的二进制,以获取位置编码。
[0051]进一步地,本发明实施例设定的编码长度为2η,也就是说经度和纬度所使用的比特数均为η,η>9。将按照以上方法转换来的经纬度按照这一比特数截断,注意为了保持精度的统一,纬度小数后部分比经度多I比特。为了让所转成的位置标识便于聚类,本发明实施例使用了经纬度的交叉表示,参照图3所示,例如将二进制编码为a1&2…an_ian的经度和二进制编码为的纟韦度交织编码成,其中,数据段的第一数据段即图中标示小数点前部分,数据段的第二数据段即图中标示小数点后部分。在实际使用中,既可以采用奇数为经度,偶数为纬度的表示方式,也可以采用偶数为经度,奇数位纬度的表
,」、O
[0052]在本发明的一个具体实施例中,对于经度而言,第一比特为符号位,小数点左侧直接转为8比特二进制编码,小数点右侧则根据以下步骤生成:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到达到η-9比特为止。然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。符号位、整数位的二进制表示和小数位的二进制表示相连就形成了经度的编码。对于纬度而言,第一比特为符号位,小数点左侧直接转为7比特二进制编码,小数点右侧则根据以下步骤生成:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到达到η-8比特为止。然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。符号位、整数位的二进制表示和小数位的二进制表示相连就形成了纬度的编码,等长的经纬度的二进制表示进行交叉合并,奇数位放经度的编码,偶数位放纬度的编码,或者偶数位放经度的编码,奇数位放纬度的编码均可,形成最后的2η比特位置编码。
[0053]其中,在本发明的一个实施例中,对于较短比特的位置编码,则使用如下的算法更为便捷。对于经度而言,第一比特为符号位,经度的绝对值乘以2η_9后取整,符号位与这一整数的二进制表示相连就形成了经度的编码。对于纬度而言,经度的绝对值乘以2η_8后取整,符号位与这一整数的二进制表示相连就形成了纬度的编码。等长的经纬度的二进制表示进行交叉合并,奇数位放经度的编码,偶数位放纬度的编码,或者偶数位放经度的编码,奇数位放纬度的编码均可,形成最后2η比特的位置编码。
[0054]进一步地,在本发明的一个实施例中,上述方法还包括:通过位置编码和k所表示的位置掩码描述地理位置范围,其中,位置掩码为k表示所有编码的前2k比特与位置编码的前2k比特相同的所有位置组成的区域,其中,k为大于2小于等于η的正整数。
[0055]其中,在本发明的实施例中,如上所述的2η比特的位置编码L可以和一个小于η整数k所表示的位置掩码共同使用,来描述一个位置范围。地址掩码为k表示所有编码的前2k比特与L的前2k比特相同的所有位置组成的区域。由于在进行指定地理位置的信息发布或者通信时,一个上网设备例如移动终端如手机等不仅对一个小区域的信息感兴趣,也同时对更大范围内的指定信息感兴趣,本发明实施例使得生成地理位置编码以类似互联网地址分级的形式展现出来,从而便于进行多尺度的地理位置信息发布。
[0056]具体地,在进行位置编码之后,本发明实施例使用位置掩码k来标识这个位置的范围,其中2〈k〈 = n,如上所述的2n比特的位置编码L可以和一个小于等于η的整数k所表示的位置掩码共同使用,来描述一个位置范围。地址掩码为k表示所有编码后前2k比特与位置编码L的前2k比特相同的所有位置组成的区域,参照图4所示,图4给出了判断一个位置编码是否在该范围的方法流程图。位置掩码与网络中网络掩码的概念相类似,可以用来表示一个范围。举例而言,设η = 24,也就是说,位置编码的长度为48比特,则经纬度为(116.3156326940,39.9953253066)位置的转化为24比特后为(001110100010100001100110,001001111111111011001101) 16 进制描述则为(3a2866,27fecd),相对应的位置编码则是 000011101001110101011101110101000111100001111001 (用16进制表示则为0e9d5dd47879)。如果位置掩码为22,则说明这个区域涵盖了所有位置编码的前 44 比特为 00001110100111010101110111010100011110000111 (用 16进制表示为0e9d5dd4787)的位置,具体而言,这个区域覆盖了经度从116.315551758到116.315673828,纬度从 39.995300293 到 39.9953613281 的所有位置。
[0057]本发明实施例的编码方法将经度和纬度交叉编码成一个位置编码,既使得所生成的位置编码以类似互联网地址分层的形式展现出来,同时也方便了位置数据的分析、存储和映射。此外,通过引入位置掩码,可以容易的指定不同地理区域的大小,具有更短位置掩码的地理区域可以包含多个具有相同前缀的但掩码更长的位置编码所描述的区域,实现编码与互联网IP地址具有类似的特性,从而便于与互联网进行结合。
[0058]进一步地,在本发明的另一个实施例中,位置编码转变为经度、纬度的步骤为:将编码的奇数比特作为经度的转换值,将编码的偶数比特作为纬度的转换值,对于经度而言,第一比特为符号位,第2到9比特的8个比特为经度的整数部分,之后为经度的小数部分;对于纬度而言,第一比特为符号位,第2到8比特为纬度的整数部分,之后为纬度的小数部分。编码长度与所覆盖的位置精度的近似关系参照图5所示,由于经度每一度的长度随着纬度的不同而不同,因此,所列出的范围是最大可能范围。对于位置掩码而言,不同的位置掩码长度所覆盖的位置范围和位置精度相同。
[0059]进一步地,面向指定位置信息发布者,可以根据所要发布的位置,以及所需要覆盖的范围来确定所覆盖的位置编码。根据经纬度范围的块来计算所需要发布的组播地址范围可以有多种策略可以选择,既可以选择能够覆盖这一范围的单一范围,也可以采用多个范围置加而进行。
[0060]在本发明的一个实施例中,上述方法还包括:通过第一经度和第二经度所描述的经度范围以及第一纬度和第二纬度所描述的纬度范围得到覆盖这一地块的位置编码、掩码系列,其中,第二经度大于第一经度,第二纬度大于第一纬度,具体包括以下步骤:
[0061]I)计算第一经度和第一纬度所生成的编码a和第二经度和第二纬度生成的编码b ;
[0062]2)设置变量X为a,变量k为I ;
[0063]3)让X和4k_l的二进制表示求按位比特与,判断所得结果是否为0,如果为O则进入步骤4,否则进入步骤5 ;
[0064]4)判断x+4k是否大于b,如果大于则进入步骤5,否则让k = k+Ι后重复步骤3 ;
[0065]5)输出 X, k-Ι ;
[0066]6)设置X = X+4H,判断X是否大于b,如果大于b,则退出,否则设置k = I重复步骤3。
[0067]具体地,由上所得,在本发明的另一个实施例中,本发明实施例可以根据地理位置范围得到覆盖这一地理位置范围的位置编码和位置掩码,即言本发明实施例能够使得在给出一个经度范围和纬度范围后,能够得到覆盖这一地块的位置编码、掩码所构成的系列。参照图6所示,通过第一经度即较小经度和第二经度即较大经度所描述的经度范围以及第一纬度即较小纬度和第二纬度即较大纬度所描述的纬度范围,得到覆盖这一地块的位置编码、掩码系列的步骤为:
[0068]I)计算较小的经度和较小的纬度所生成的编码a和较大经度和较大纬度生成的编码b ;
[0069]2)设置 X = a, k = I ;
[0070]3)让X和4k_l的二进制表示求按位比特与,所得结果是否为0,如果为O则进入步骤4,否则进入步骤5;
[0071]4)判断x+4k是否大于b,如果大于则步骤5,否则让k = k+Ι后重复步骤3,否则步骤5 ;
[0072]5)输出 X,k-Ι ;
[0073]6)设置X = X+4H,判断X是否大于b,如果大于b,则退出,否则设置k = I重复步骤3。
[0074]进一步地,在本发明的一个实施例中,上述方法还包括:将位置编码和位置掩码映射到组播地址的第24比特到第95比特中,其中,组播地址为128位的IPv6地址;根据组播地址加入相应的组播组中,以通过组播组进行通信。其中,本发明实施例利用位置编码和位置掩码生成IPv6组播地址,在IPv6协议中,组播地址为128位的IPv6地址,本发明实施例可以将位置掩码和位置编码映射到IPv6组播地址的第24比特到第95比特中,通过这样构成的组播地址,从而方便了各种在同一位置或邻近位置的上网设备进行通信。
[0075]在本发明的实施例中,位置编码和位置掩码可以映射到IPv6组播地址中,以进行针对指定范围的地理位置信息发布。组播技术是IP网络数据传输三种方式之一,在传统的单播(Unicast)传输中,在发送者和每一接收者之间实现点对点网络连接。如果一台发送者同时给多个的接收者传输相同的数据,也必须相应的复制多份的相同数据包。如果有大量主机希望获得数据包的同一份拷贝时,将导致发送者负担沉重、延迟长、网络拥塞;为保证一定的服务质量需增加硬件和带宽。广播(Broadcast)传输是指在IP子网内广播数据包,所有在子网内部的主机都将收到这些数据包。广播意味着网络向子网每一个主机都投递一份数据包,不论这些主机是否乐于接收该数据包。所以广播的使用范围非常小,只在本地子网内有效,通过路由器和网络设备控制广播传输。组播解决了单播和广播方式效率低的问题。参照图7所示,当网络中的某些用户需求特定信息时,组播源(即组播信息发送者)仅发送一次信息,组播路由器借助组播路由协议为组播数据包建立树型路由,被传递的信息在尽可能远的分叉路口才开始复制和分发。
[0076]在IPv6中,组播技术得到了更广泛的应用。IPv6是下一代IP寻址方案,其将IP地址长度从IPv4中采用的32位提高到128位。将IPv6表示为八个具有十六进制格式的十六位整数(例如,X:X:X:X:X:X:X:X,其中,每一个X表示一个16位整数)。通常将IPv6地址划分为网络ID (Identity,身份标识号)段和主机ID段。例如,对IPv6地址N:N:N:N:H:H:H:H而言,N:N:N:N整数(64位)代表网络ID,而H:H:H:H整数(64位)则代表主机ID。同IPv4组播一样,在IPv6中,使用组播地址来确定一个组播组,如果用户希望接收某个IPv6组播时,必须要知道 IPv6 的组播组地址,通过 MLD (Multicast Listener Discovery Protocol,组播侦听者发现协议))协议的管理,接收者才能够获取IPv6的组播流。MLD用于IPv6路由器在其直连网段上发现组播侦听者。组播侦听者(Multicast Listener)是那些希望接收组播数据的主机节点。路由器通过MLD协议,可以了解自己的直连网段上是否有IPv6组播组的侦听者,并在数据库里做相应记录。同时,路由器还维护与这些IPv6组播地址相关的定时器信息。
[0077]参照图8所示,图8为IPv6的组播组地址格式示意图,其中,最高的8个比特为OxFF,标识此地址为组播地址。接着的4个比特为Flag位,Flag位的最高位为O ;R比特表示是否是内嵌RP的组播地址;P比特表示组播地址是否是基于单播前缀生成的;T比特表示组播地址是永久分配的还是临时分配的。可以看出,Flag根据一个组播地址的功能、生成方式等属性进行了标识,之后的4个比特为表示组播的范围,常见的范围有节点本地、链路本地、站点本地、机构本地等。其余的比特为Group ID,用于在组播地址中用来标识一个组播组。进一步的,在基于单播前缀的组播地址规范中,规定第16比特之后的8比特为保留位,必须为0,而最后的32比特则规定为32比特的组播ID,用于直接映射为组播的MAC (MediaAccess Control, MAC地址、硬件地址)地址。
[0078]具体地,位置编码、位置掩码可以一起编入到IPv6的组播地址中,IPv6的组播地址可以容纳112比特的Group ID,因此,本发明实施例可以任意采用这112比特中的部分来表示编码。需要说明的是,具体选择哪些位置取决于地址的可用性以及其他因素。IPv6组播地址中高8比特为FF固定值,之后的4比特为标志位,之后的4比特用于限制范围,而在基于单播前缀的组播地址规范中,之后的8比特规定为保留位,必须为O,而最后的32比特规定为32比特的组播ID,用于直接映射为组播的MAC地址。因此,为了与这些规范相兼容,本发明实施例将第16比特到23比特设置为非O的值以和基于单播前缀生成的组播地址相区分,而第24到95比特这72比特用于放置生成的位置编码。对于η比特而言,位置编码需要int(log2(n-l))+2n+l比特,则最多允许η = 33的位置编码。如果设置η = 24,则需要53比特,转化的方式可以是直接将位置掩码k放在第24到31位,而将位置编码和((l?2k)-l)?(2n-2k)的按位与设置在32到79比特,80到95比特设置为0,参照图9所示,则经纬度为(116.3156326940,39.9953253066),掩码为22的区域所对应的组播地址就是FF3X:Y16:0e9d:5dd4:7870::Z(X为组播限制的范围,Y为8比特非O的值,用于和单播前缀的组播地址相区分,Z为32比特的用于映射为MAC地址的组ID)。需要说明的是,实际使用时也可能采用更复杂的编码方案如格雷码等进行编码。
[0079]进一步地,在本发明的一个实施例中,上网设备首先获得自己的位置信息,通过这一信息得到与此位置相关的组播地址,通过这一组播地址和预先指定的范围,上网设备可以互相知晓并且接收到该位置上的信息。
[0080]在本发明的实施例中,通过加入由地理位置信息编码得到的组播IPv6地址,上网装置可以容易地接受指定位置的特定信息。上网装置在某一个地理位置时,通过定位设施得到自己的经纬度,根据这一经纬度信息,以及预先设置的范围值,生成与该位置关联的IPv6组播地址。通过加入到这一组,能够与同在这一位置范围的其他上网装置进行互相通信。处在这一位置的上网装置可能分散于不同的运营商网络中,甚至可能并没有接入到互联网,只是在局域网络中,只要网络中的交换机和路由器支持组播并向有需求者复制并转发其所需数据,主机就可以与这一位置相关的信息。
[0081]在本发明的一个实施例中,上述方法还包括:随着地理位置的改变,重新获得的地理位置和预先设置的位置掩码,生成组播地址,并自动退出原位置所在的组播组,加入到新位置所在的组播组中。
[0082]在本发明的一个实施例中,上述方法还包括:修改预先设置的位置掩码,以便加入到更大的地理范围所形成的组播组,或者进入到更细致的地理范围所形成的组播组;同时加入不同的位置编码及掩码映射成的组播组中,以同时接收来自于多个位置范围的信息。
[0083]进一步地,在本发明的一个实施例中,例如上网设备通过定位模块获得该设备所在的地理位置,然后根据该地理位置获得相应的组播地址,然后加入该组播地址所指定的组中。随着地理位置的切换,该上网设备自动生成新的组播地址,并自动退出原位置所在的组,加入到新地理位置所在的组中。而且,如果用户对地理范围的修改(包括希望进入到更大的地理范围,或者进入到更细致的地理范围),上网设备可以加入不同的组播组中。该上网设备也可以同时加入到多个不同范围所针对的组播组中,以同时接收来自于多个位置范围的信息。
[0084]在本发明的实施例中,随着地理位置的切换,上网设备自动生成新的组播地址,并自动退出原位置所在的组,加入到新地理位置所在的组中。而且,如果用户对地理范围的修改(包括希望进入到更大的地理范围,或者进入到更细致的地理范围),上网设备可以加入不同的组播组中。该上网设备也可以同时加入到多个不同范围所针对的组播组中,以同时接收来自于多个位置范围的信息。
[0085]在本发明的一个实施例中,组播可以为任意源组播或特定源组播。其中,如上所述的上网设备在加入到特定地理位置所对应的组播组后,若这一组播组是ASM(Any-SourceMulticast,任意源组播),则还可以彼此之间进行通信,实现同一位置的上网设备互相通信,通过采用任意源组播ASM方式,如上所述的上网设备在加入到特定地理位置所指定的组播后,还可以彼此之间进行通信。在ASM中,加入组播组的上网设备都可以向该组播组发布信息而让其他用户知晓,这样就构成了一个基于组播的特定位置的交流群体。
[0086]在本发明的实施例中,根据接收者对组播源处理方式的不同,组播可以分为ASM和SSM(Source-Specific Multicast,特定源组播)两种。在ASM中,任意一个发送者都可以做发布者,众多接收者通过加入由该组播组地址标识的组播组以获得发往该组播组的组播信息。而SSM则有所不同,在SSM中,用户可能只对某些组播源发送的组播信息感兴趣直接建立由(S,G)标识的一个组播最短路径树,其中(G)表示一个特定的IP组播组地址,而
(S)表示发向组播组G的特定源的IP地址时。
[0087]本发明实施例的方法通过将自己的地理位置进行编码,使得位置编码不仅可以定位某个位置,还可以覆盖一个区域,根据这一位置编码,可以生成特定的组播地址,并利用组播接收与自己所在的指定位置相关的信息,能够让在同一个位置或者指定位置区域的上网设备互相知晓,相互通信,以及得到与特定位置相关的信息,使指定位置的信息发布和通信变得更为容易,实现与同在这一位置的其他上网设备进行通讯。
[0088]根据本发明实施例提出的地理位置编码方法,通过分别将经度和纬度的符号编码至η比特的二进制的符号段内,并将经度和纬度的绝对值编码至η比特的二进制的数据段内,从而将经度编码的η比特的二进制和纬度编码的η比特的二进制进行交叉合并,以获取位置编码,既使得生成的位置编码以类似互联网地址分层的形式展现出来,同时也方便了地理位置数据的分析、存储和映射。
[0089]流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属【技术领域】的技术人员所理解。
[0090]在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPR0M或闪速存储器),光纤装置,以及便携式光盘只读存储器(⑶ROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0091]应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0092]本【技术领域】的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0093]此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0094]上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0095]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0096]尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
【权利要求】
1.一种地理位置编码方法,其特征在于,包括以下步骤: 获取地理位置,其中,所述地理位置包括经度和纬度; 将所述经度编码为η比特的二进制,其中,所述η比特的二进制包括符号段和数据段,所述数据段包括第一数据段和第二数据段,将所述经度的符号编码至所述符号段内,将所述经度绝对值编码至所述数据段内,其中,所述第一数据段表示所述经度绝对值的整数部分,所述第二数据段表示所述经度绝对值的小数部分,η为大于9的正整数; 将所述纬度编码为所述η比特的二进制,将所述纬度的符号编码至所述符号段内,将所述纬度绝对值编码至所述数据段内;以及 将所述经度编码的η比特的二进制和所述纬度编码的η比特的二进制进行交叉合并,以获取所述位置编码。
2.根据权利要求1所述的地理位置编码方法,其特征在于,所述将所述经度编码为η比特的二进制与所述将所述纬度编码为η比特的二进制,具体包括: 通过将I个比特表示符号和8个比特表示小数点左侧的数据,并且将余下的η-9比特表示小数点右侧的数据,以将所述经度编码为η比特的二进制; 通过将I个比特表示符号和7个比特表示小数点左侧的数据,并且将余下的η-8比特表示小数点右侧的数据,以将所述纬度编码为η比特的二进制。
3.根据权利要求1所述的地理位置编码方法,其特征在于,所述将所述经度编码的η比特的二进制和所述纬度编码的η比特的二进制进行交叉合并,以获取所述位置编码,具体包括: 将等长的所述经度编码的η比特的二进制和所述纬度编码的η比特的二进制进行交叉合并,奇数位放所述经度编码的η比特的二进制,偶数位放所述纬度编码的η比特的二进制,或者,奇数位放所述纬度编码的η比特的二进制,偶数位放所述经度编码的η比特的二进制,以获取所述位置编码。
4.根据权利要求1所述的地理位置的编码方法,其特征在于,还包括: 通过所述位置编码和k所表示的位置掩码描述地理位置范围,其中,所述位置掩码为k表示所有编码的前2k比特与所述位置编码的前2k比特相同的所有位置组成的区域,其中,k为大于2小于等于η的正整数。
5.根据权利要求4所述的地理位置编码方法,其特征在于,还包括: 通过第一经度和第二经度所描述的经度范围以及第一纬度和第二纬度所描述的纬度范围得到覆盖这一地块的位置编码、掩码系列,其中,所述第二经度大于所述第一经度,所述第二纬度大于所述第一纬度,具体包括以下步骤: 1)计算所述第一经度和所述第一纬度所生成的编码a和所述第二经度和所述第二纬度生成的编码b ; 2)设置变量X为a,变量k为I; 3)让X和4k_l的二进制表示求按位比特与,判断所得结果是否为O,如果为O则进入步骤4,否则进入步骤5 ; 4)判断x+4k是否大于b,如果大于则进入步骤5,否则让k= k+Ι后重复步骤3 ;
5)输出X, k-Ι ; 6)设置X= X+415-1,判断X是否大于b,如果大于b,则退出,否则设置k = I重复步骤
30
6.根据权利要求4所述的地理位置的编码方法,其特征在于,还包括: 将所述位置编码和所述位置掩码映射到组播地址的第24比特到第95比特中,其中,所述组播地址为128位的IPv6地址; 根据所述组播地址加入相应的组播组中,以通过所述组播组进行通信。
7.根据权利要求6所述的地理位置的编码方法,其特征在于,组播为任意源组播或特定源组播。
8.根据权利要求6所述的地理位置的编码方法,其特征在于,还包括: 随着地理位置的改变,重新获得的地理位置和预先设置的位置掩码,生成所述组播地址,并自动退出原位置所在的组播组,加入到新位置所在的组播组中。
9.根据权利要求7所述的地理位置的编码方法,其特征在于,还包括: 修改所述预先设置的位置掩码,以便加入到更大的地理范围所形成的组播组,或者进入到更细致的地理范围所形成的组播组; 同时加入不同的位置编码及掩码映射成的组播组中,以同时接收来自于多个位置范围的信息。
【文档编号】G06F17/30GK104298740SQ201410528170
【公开日】2015年1月21日 申请日期:2014年10月9日 优先权日:2014年10月9日
【发明者】张千里, 王继龙, 李星 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1