一种基于地理位置与空间范围的多用户通讯方法_2

文档序号:8489938阅读:来源:国知局
晓需要加入该群组,从而未加入,导致无法接收到社区的通知或公告。又比如,而处于同一区域范围内的人们由于具有相同的生活或工作环境,可能具有交互的需求,而由于人们不认识或不熟悉,则无法通过添加好友等方式进行交互。
[0060]可见,现有技术的通讯软件,虽然具备一定的地理位置处理功能,但是无法保证一定空间范围内的所有用户均能接收到该空间范围内的用户发送的信息。
[0061]同时,现有技术的通讯软件,也无法对群组之外的用户进行扩展,给群组之外的用户发送信息。从而割裂了位置相邻群体之间的直接联系,使得邻居之间、同一街道多个社区之间、同一办公大楼多个办公室之间或同一园区不同的公司之间无法无障碍的进行群体交互;进而无法扩大用户发送信息的传播距离、扩大信息的影响范围、使更多的用户获知信息。从而无法使得本欲在一个空间范围内传播的信息,在该空间范围内,以及与该空间范围相邻的空间范围内均能够得到传播。
[0062]本实施例提供的技术方案,解决了现有通讯软件在一定空间范围传播信息时,需要进行用户交互,以及无法进行扩展,使相邻空间范围的用户也能接收信息的问题。
[0063]实施例一
[0064]如图1所示,本发明实施例提供了一种基于地理位置与空间范围的多用户通讯方法,包括如下步骤:
[0065]SI,将一个地区所覆盖的范围划分成若干不交叠的区域块;
[0066]S2,获取每个区域块的所有邻居块以及连接权重,所述连接权重为区域块与邻居块之间的距离;
[0067]S3,获取每个区域块内的所有用户;
[0068]S4,确定发送信息的用户所在的区域块和信息传播距离权限;
[0069]S5,比较发送信息的用户所在的区域块的连接权重和信息传播距离权限之间的大小,确定接收信息的邻居块;
[0070]S6,将信息发送至所述接收信息的邻居块和发送信息的用户所在的区域块内的所有用户。
[0071]上述方法中,为了实现特定空间范围以及与之相邻的空间范围内的所有用户之间的通讯,首先将一个地区所覆盖的范围划分成多个区域块,且每个区域块覆盖的范围没有重叠,从而保证信息能够有效的发送至所有的用户;然后,对于每个区域块,都计算其与相邻的区域块,即邻居块之间的距离,该距离为区域块的连接权重,如本领域技术人员可以理解的,在计算连接权重时,需要按照一定的规则,对于每个区域块的连接权重都按照该设定的规则进行计算,从而保证区域块的连接权重有效可用,进而保证后续向区域块以及邻居块内的用户发送消息时有效准确;确定了区域块以及邻居块之后,当需要通讯的用户连接到系统后,系统就可以获取用户的地理位置,从而确定该用户是否在区域块内,以及处于哪个区域块内,按照这种方式对每个连接到系统的用户进行定位,就可以获取到每个区域块内的所有用户。其中,地理位置是用户经常出现的位置,比如居住地、工作地等,可以使用定位工具获取到用户的地理位置,从而将用户加入到相应的区域块内;确定了每个区域块内所有的用户,以及每个区域块的所有相邻的邻居块之后,当处于该地区范围内的一个用户发送信息时,系统就可以确定该用户所在的区域块,以及设定的信息传播距离权限,其中,传播距离权限可以由用户设定,包含在用户发送的信息之中,则用户发送的信息除了包括文本内容之外,还包括该文本内容可传播的距离,则信息发送出去后,处于该传播距离之内的区域块以及邻居块内的所有用户就可以接收到该信息了 ;另外,传播距离权限还可以由服务商设定,设定用户发送的信息在该距离权限内传播,处于该距离权限内的区域块内的用户以及邻居块的用户均能收到该信息。而传播距离权限是针对于邻居块设定的,即与区域块的连接权重相比较的,所以,该传播距离权限只是用于限定邻居块内的用户是否为接受信息的用户,而不用于限定该区域块内的用户接收信息,即与发送信息的用户处于同一区域块内的用户始终是可以接收到信息的。根据连接权重和信息传播距离权限比较的结果,确定了接受信息的邻居块后,本区域块内的用户以及确定的能接收信息的邻居块内的用户均能够接收到该信息。
[0072]可见,利用本实施例提供的多用户通讯方法,可以实现区域范围内的用户之间的通讯,也可以根据设定不同的距离权限值,实现与相邻的区域范围内的用户之间的通讯,从而实现了位置相邻群体之间的直接联系,扩大了信息的传播范围,保证需要接收信息的用户均能有效的接收到信息,比如通知或公告等。同时,系统会根据用户的地理位置自动将用户放在区域范围内的用户组中,无需用户的交互操作,所以,用户的体验会更好。
[0073]实施例二
[0074]如图2和图3所示,本实施例中,SI可以包括如下步骤:
[0075]SlOl,设定划分区域块的起点P,并将起点P的二维坐标置为:x = 0,y = O ;
[0076]S102,以起点P为地区的左上角起点,划分出长度为Height、宽度为Width的区域块;
[0077]S103,比较起点P的X坐标与地区宽度范围值的大小,如果起点P的X坐标大于地区宽度范围值,则执行S104,否则转到S102 ;其中,X坐标为:x = x+ffidth ;
[0078]S104,将起点P的X坐标置为0,比较起点P的y坐标与地区高度范围值的大小,如果起点P的y坐标大于地区高度范围值,则结束,否则转到S102 ;其中,y的坐标为:y =y+Heightο
[0079]其中,区域块的Height和Width根据地区人口稠密度进行取值,人口越稠密取值越低,人口越稀疏取值高,Height的取值为:100-500m,Width的取值为:100_500m。比如,在人口密集的社区、工业园区、商业地区,Height的取值可以为100米,Width的取值可以为100米,在人口稀疏的郊区,Height的取值可以为500米,Width的取值可以为500米。
[0080]本发明的一个优选实施例中,S102中还包括步骤,指定所述区域块的编号属性和位置范围属性,其中,编号属性为生成的UUID编号,位置范围属性包括起点、长度和宽度。
[0081]其中,每一个区域块可以包含以下属性:
[0082]编号:唯一的编号;
[0083]位置范围:记录其所在空间位置、覆盖范围;
[0084]邻居列表:一个记录着相邻区域块的列表,列表的每一个项目格式可以包括邻居编号:某相邻区域块的编号;连接权重:邻居块中心点到本区域块中心点的距离;
[0085]用户列表:所有处于区域块覆盖范围内用户的ID列表。
[0086]如本领域技术人员可以理解的,在将一个地区划分成若干区域块时,还可以采用其他的方法,比如区域块之间不相邻,或者区域块为其他的形状。
[0087]实施例三
[0088]如图4所示,本实施例中,S2可以包括如下步骤:
[0089]S201,建立区域块的邻居列表NeighborList,并初始化邻居列表,邻居列表包含O个表项;
[0090]S202,建立区域块的边列表BorderList,并初始化边列表,边列表的每一个表项存储区域块的一条边,将区域块的所有边均放入边列表中;设置添加数量计数器AddedCount,且置为 O ;
[0091]S203,获取与边列表BorderList中的边相交,且不在邻居列表NeighborList中的所有区域块,并放入到列表TestList之中;
[0092]S204,从列表TestList中取出一个区域块放入变量TempArea中;
[0093]S205,计算变量TempArea的中心点到区域块中心点的距离,如果该距离小于设定的最大邻居阈值MaxDistance,则执行S026,否则执行S207 ;
[0094]S206,构造一个邻居列表的表项,邻居编号为TempArea的编号,连接权重为TempArea中心点到Area中心点的距离,将该表项加入到邻居列表NeighborList中;将TempArea 的所有边加入到 BorderList 之中,AddedCount = AddedCount+Ι ;
[0095]S207,判断TestList中是否还存在区域块,如果有,则转到S204,否则转到S208 ;
[0096]S208,判断AddedCount是否大于0,如果是,则转到S203,否则结束。
[0097]实施例四
[0098]如图5所示,本实施例中,S3可以包括如下步骤:
[0099]S301,获取用户所在的地理位置;
[0100]S302,根据用户所在的地理位置,确定覆盖用户所在的地理位置的区域块;
[0101]S303,将用户ID添加到区域块对应的用户列表中,根据用户列表,获取区域块内的所有用户。
[0102]其中,本实施例中,可以根据本领域的常用技术手段来获取用户的地理位置,比如卫星定位系统或GPS定位系统等。
[0103]本实施例中,S303之后还包括步骤S304:对每个用户列表进行定时轮询和更新。
[0104]优选地,如图6所示,S304可以包括如下步骤:
[0105]S3041,等待轮询时间;
[0106]S3042,从原用户列表中取出一个用户放入变量user之中;
[0107]S3043,判断变量user的地理位置是否在原用户列表对应的区域块所覆盖的范围内,如果否,则转到S3044,否则转到S3046 ;
[0108]S3044,根据变量user的地理位置,确定覆盖变量user的地理位置的区域块,并将变量user的ID添加到该区域块对应的用户列表中
[0109]S3045,在原用户列表中删除放入变量user中的用户;
[0110]S3046,遍历原用户列表中的所有用户,重复执行S30
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1