基于位置的业务实现方法和装置
技术领域
本申请涉及通信技术领域,尤其涉及一种基于位置的业务实现方法和装置。
背景技术
随着互联网技术的快速发展,越来越多的服务提供商向用户提供基于地理位置的服务,比如:基于当前位置查询周边餐馆、停车场等服务。
相关技术中,在提供基于地理位置的服务时,通常先基于GeoHash算法确定请求位置所属的区域,然后再基于确定的区域为用户查找所需的服务。然而,GeoHash算法是对经纬度采用进行二分查找方式进行编码,对不同纬度进行编码后的区域大小不同,由于低纬度地区的区域面积大于高纬度地区的区域面积,在处理来自低纬度地区的业务时,会浪费服务器大量的处理资源。
发明内容
有鉴于此,本申请提供一种基于位置的业务实现方法和装置。
具体地,本申请是通过如下技术方案实现的:
一种基于位置的业务实现方法,所述方法包括:
根据业务请求的请求位置确定所述业务请求所属的一级区域;
根据预设的精度将所述一级区域划分为多个二级区域;
根据所述请求位置确定所述业务请求所属的二级区域;
根据所述业务请求所属的二级区域及其相邻二级区域中的各业务对象的位置信息响应所述业务请求。
可选的,所述根据预设的精度将所述一级区域划分为多个二级区域,包括:
在所述一级区域中确定基准位置;
基于所述基准位置向预设方向偏移所述精度后到达偏移位置,并获取所述偏移位置的偏移坐标信息;
计算所述基准位置的基准坐标信息与所述偏移坐标信息的变化量;
根据所述变化量确定二级区域的尺寸;
根据所述二级区域的尺寸将所述业务请求所属的一级区域划分为多个二级区域。
可选的,所述在所述一级区域中确定基准位置,包括:
当所述一级区域位于北半球时,将所述一级区域的东北角或者西北角确定为基准位置;
当所述以及区域位于南半球时,将所述一级区域的东南角或者西南角确定为基准位置。
可选的,所述基于所述基准位置向预设方向偏移所述精度后到达偏移位置,包括:
当所述基准位置为所述一级区域的东北角时,基于所述东北角,向西、向南各偏移所述精度后到达偏移位置;
当所述基准位置为所述一级区域的西北角时,基于所述西北角,向东、向南各偏移所述精度后到达偏移位置;
当所述基准位置为所述一级区域的东南角时,基于所述东南角,向西、向北各偏移所述精度后到达偏移位置;
当所述基准位置为所述一级区域的西南角时,基于所述西南角,向东、向北各偏移所述精度后到达偏移位置。
可选的,所述根据所述业务请求所属的二级区域及其相邻二级区域中的各业务对象的位置信息响应所述业务请求,包括:
获取所述业务请求所属的二级区域及其相邻二级区域中各业务对象的位置信息;
根据所述业务对象的位置信息计算所述业务对象与所述请求位置之间的距离;
将距离满足预设条件的业务对象作为对所述业务请求的响应进行推送。
一种基于位置的业务实现装置,所述装置包括:
第一确定单元,根据业务请求的请求位置确定所述业务请求所属的一级区域;
二级划分单元,根据预设的精度将所述一级区域划分为多个二级区域;
第二确定单元,根据所述请求位置确定所述业务请求所属的二级区域;
业务响应单元,根据所述业务请求所属的二级区域及其相邻二级区域中的各业务对象的位置信息响应所述业务请求。
可选的,所述二级划分单元包括:
基准确定子单元,在所述一级区域中确定基准位置;
精度偏移子单元,基于所述基准位置向预设方向偏移所述精度后到达偏移位置,并获取所述偏移位置的偏移坐标信息;
变化计算子单元,计算所述基准位置的基准坐标信息与所述偏移坐标信息的变化量;
尺寸确定子单元,根据所述变化量确定二级区域的尺寸;
区域划分子单元,根据所述二级区域的尺寸将所述业务请求所属的一级区域划分为多个二级区域。
可选的,所述基准确定子单元,当所述一级区域位于北半球时,将所述一级区域的东北角或者西北角确定为基准位置;当所述以及区域位于南半球时,将所述一级区域的东南角或者西南角确定为基准位置。
可选的,所述精度偏移子单元,当所述基准位置为所述一级区域的东北角时,基于所述东北角,向西、向南各偏移所述精度后到达偏移位置;当所述基准位置为所述一级区域的西北角时,基于所述西北角,向东、向南各偏移所述精度后到达偏移位置;当所述基准位置为所述一级区域的东南角时,基于所述东南角,向西、向北各偏移所述精度后到达偏移位置;当所述基准位置为所述一级区域的西南角时,基于所述西南角,向东、向北各偏移所述精度后到达偏移位置。
可选的,所述业务响应单元,获取所述业务请求所属的二级区域及其相邻二级区域中各业务对象的位置信息,根据所述业务对象的位置信息计算所述业务对象与所述请求位置之间的距离,将距离满足预设条件的业务对象作为对所述业务请求的响应进行推送。
由以上描述可以看出,本申请在实现基于位置的业务时,可以根据请求位置确定业务请求所属的一级区域,然后根据预设的精度将所述一级区域划分为多个二级区域,并根据业务请求所属的二级区域及其相邻二级区域中业务对象的位置信息响应所述业务请求,由于各二级区域的面积相同,在处理低纬度地区的业务时,可以节省服务器的处理资源,提升服务器的性能。
附图说明
图1是本申请一示例性实施例示出的一种基于位置的业务实现方法的流程图。
图2是本申请一示例性实施例示出的一种一级区域示意图。
图3是本申请一示例性实施例示出的一种将一级区域划分为多个二级区域的流程图。
图4是本申请一示例性实施例示出的一种位置偏移的示意图。
图5是本申请一示例性实施例示出的一种响应业务请求的流程图。
图6是本申请一示例性实施例示出的一种与业务请求所属二级区域相邻的二级区域的示意图。
图7是本申请一示例性实施例示出的一种用于基于位置的业务实现装置的一结构示意图。
图8是本申请一示例性实施例示出的一种基于位置的业务实现装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
图1是本申请一示例性实施例示出的一种基于位置的业务实现方法的流程图。
请参考图1,所述基于位置的业务实现方法可以应用在服务端,包括有以下步骤:
步骤101,根据业务请求的请求位置确定所述业务请求所属的一级区域。
在本实施例中,所述业务请求是一种基于位置获取业务对象的请求,所述业务对象包括有服务提供商以及服务提供商提供的服务等。所述业务请求通常由用户发起,比如:查询当前位置附近餐馆、停车场等请求。
在本实施例中,所述一级区域通常由开发人员预先进行划分,比如:开发人员可以按照预设的尺寸将地球上的大陆地区划分为多个一级区域。以中国大陆地区为例,开发人员可以按照经纬度0.5×0.5的大小将中国大陆区域划分为多个一级区域。
在本实施例中,在接收到业务请求后,可以获取所述业务请求中携带的请求位置,并根据所述请求位置确定所述业务请求所属的一级区域。其中,所述请求位置通常以经纬度坐标的形式展现。举例来说,假设将中国大陆地区按照经纬度0.5×0.5的大小划分为多个一级区域,所述请求位置为东经110.1度,北纬28.2度,则在本步骤中,请参考图2,可以确定所述业务请求属于西南坐标为东经110度,北纬坐标为28度,东北方坐标为东经110.5度,北纬28.5度的一级区域中。
步骤102,根据预设的精度将所述一级区域划分为多个二级区域。
在本实施例中,所述预设的精度可以由开发人员进行设置,比如:开发人员可以根据实际应用中对业务精度的需求设置所述预设的精度,比如:50米、100米等,本申请对此不作特殊限制。
基于前述步骤101,在确定所述业务请求所属的一级区域后,可以根据所述预设的精度将所述一级区域划分为多个二级区域,请参考图3,将所述一级区域划分为多个二级区域可以包括以下步骤:
步骤1021,在一级区域中确定基准位置。
在本实施例中,由于不同纬度映射到实际地理区域的大小不同,比如:高纬度地区纬度每变化1度,映射到的实际地理区域的大小要小于低纬度地区纬度变化1度映射到的实际地理区域的大小。因此,在本步骤中,可以根据所述业务请求所属一级区域纬度高低情况确定所述基准位置。
在一个例子中,当所述一级区域位于北半球时,可以将所述一级区域中纬度较高的位置确定为所述基准位置,比如:可以将所述一级区域的东北角或者西北角确定为所述基准位置。在另一个例子中,当所述一级区域位于南半球时,同样可以将所述一级区域中纬度较高的位置确定为所述基准位置,比如:可以将所述一级区域的东南角或者西南角确定为所述基准位置。
步骤1022,基于所述基准位置向预设方向偏移预设的精度后到达偏移位置,并获取所述偏移位置的偏移坐标信息。
在本实施例中,可以基于所述基准位置向低纬度方向进行偏移。举例来说,请参考图4,当所述基准位置为所述一级区域的东北角时,可以基于所述东北角,分别向西、向南各偏移所述精度,并将偏移后到达的位置称为偏移位置。同样,当所述基准位置为所述一级区域的西北角时,可以基于所述西北角,分别向东、向南各偏移所述精度后到达偏移位置。当所述基准位置为所述一级区域的东南角时,可以基于所述东南角,分别向西、向北各偏移所述精度后到达偏移位置。当所述基准位置为所述一级区域的西南角时,可以基于所述西南角,分别向东、向北各偏移所述精度后到达偏移位置。
在本步骤中,在到达偏移位置后,可以获取所述偏移位置的坐标信息,为便于区分,可以将所述偏移位置的坐标信息称为偏移坐标信息,所述偏移坐标信息通常也可以以经纬度坐标的形式展现。
步骤1023,计算所述基准位置的基准坐标信息与所述偏移坐标信息的变化量。
基于前述步骤1022,在获取所述偏移位置的偏移坐标信息后,可以计算所述基准坐标信息与所述偏移坐标信息的变化量,比如:计算所述基准位置与所述偏移位置的经纬度坐标值的差值。
步骤1024,根据所述变化量确定二级区域的尺寸。
在本实施例中,假设所述基准位置与所述偏移位置的经度差值为x,纬度差值为y,则可以将x和y确定为二级区域的长和宽。
步骤1025,根据所述二级区域的尺寸将所述业务请求所属的一级区域划分为多个二级区域。
基于前述步骤1024,在确定所述二级区域的尺寸之后,可以根据所述尺寸将所述业务请求所属的一级区域划分为多个二级区域。举例来说,可以从所述一级区域的东北角出发,沿着所述一级区域的边界将所述一级区域划分为多个二级区域。
值得注意的是,在划分二级区域的过程中,可以从所述一级区域的任意角出发,比如:东南角、西北角、西南角等,本申请对此不作特殊限制。此外,在将所述一级区域划分为多个二级区域的过程中,要确保所述一级区域被划分后的多个二级区域完全覆盖,也就是说划分后的多个二级区域的面积之和通常会大于等于所述一级区域的面积。当划分后的多个二级区域的面积之和等于所述一级区域的面积时,表示可以已将所述一级区域划分为多个面积相同的二级区域。
步骤103,根据所述请求位置确定所述业务请求所属的二级区域。
基于前述步骤102,在将所述业务请求所属的一级区域划分为多个二级区域后,可以根据所述请求位置确定所述业务请求所属的二级区域。
步骤104,根据所述业务请求所属的二级区域及其相邻二级区域中的各业务对象的位置信息响应所述业务请求。
基于前述步骤103,在确定所述业务请求所属的二级区域后,请参考图5,可以基于以下步骤响应所述业务请求:
步骤1041,获取业务请求所属的二级区域及其相邻二级区域中各业务对象的位置信息。
在本实施例中,在确定所述业务请求所属的二级区域后,可以确定与所述二级区域相邻的八个二级区域。请参考图6,假设中间的矩形区域为所述业务请求所属的二级区域,则该二级区域周围编号为1至8的八个二级区域为与该二级区域相邻的二级区域。在本步骤中,可以获取所述业务请求所属二级区域以及与其相邻的八个二级区域中所有业务对象的位置信息。
举例来说,假设所述业务请求为查询当前位置附近餐馆的业务请求,则可以获取所述业务请求所属二级区域以及与其相邻的八个二级区域中所有餐馆的位置信息。
步骤1042,根据所述业务对象的位置信息计算所述业务对象与所述请求位置之间的距离。
基于前述步骤1041,在获取所述业务对象的位置信息后,可以根据所述位置信息计算所述业务对象与所述请求位置之间的距离。仍以查询当前位置附近餐馆的业务请求为例,可以分别根据获取到的餐馆的位置信息计算每个餐馆与所述请求位置之间的距离。
步骤1043,将距离满足预设条件的业务对象作为对所述业务请求的响应进行推送。
基于前述步骤1042,在计算得到各业务对象与请求位置之间的距离后,可以将距离满足预设条件的业务对象作为对所述业务请求的响应推送给所述业务请求的发起用户。
在本实施例中,所述预设条件通常为距离条件,可以由开发人员进行设置,也可以由所述业务请求的发起用户进行自定义设置。假设,所述业务请求为查询附近餐馆的请求,则用户可以自定义查询餐馆的距离范围,比如:200米、500米等,则所述预设条件为距离小于200米或500米。如果用户没有自定义所述距离范围,则可以采用开发人员设置的默认的距离范围,比如:300米等。
由以上描述可以看出,本申请在实现基于位置的业务时,可以根据请求位置确定业务请求所属的一级区域,然后根据预设的精度将所述一级区域划分为多个二级区域,并根据业务请求所属的二级区域及其相邻二级区域中业务对象的位置信息响应所述业务请求,由于各二级区域的面积相同,在处理低纬度地区的业务时,可以节省服务器的处理资源,提升服务器的性能。
与前述基于位置的业务实现方法的实施例相对应,本申请还提供了基于位置的业务实现装置的实施例。
本申请基于位置的业务实现装置的实施例可以应用在服务端上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在服务端的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为本申请基于位置的业务实现装置所在服务端的一种硬件结构图,除了图7所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的服务端通常根据该服务端的实际功能,还可以包括其他硬件,对此不再赘述。
图8是本申请一示例性实施例示出的一种基于位置的业务实现装置的结构示意图。
请参考图8,所述基于位置的业务实现装置700可以应用在前述图7所示的服务端中,包括有:第一确定单元701、二级划分单元702、第二确定单元703以及业务响应单元704。其中,所述二级划分单元702可以包括:基准确定子单元7021、精度偏移子单元7022、变化计算子单元7023、尺寸确定子单元7024以及区域划分子单元7025。
所述第一确定单元701,根据业务请求的请求位置确定所述业务请求所属的一级区域;
所述二级划分单元702,根据预设的精度将所述一级区域划分为多个二级区域;
所述第二确定单元703,根据所述请求位置确定所述业务请求所属的二级区域;
所述业务响应单元704,根据所述业务请求所属的二级区域及其相邻二级区域中的各业务对象的位置信息响应所述业务请求。
所述基准确定子单元7021,在所述一级区域中确定基准位置;
所述精度偏移子单元7022,基于所述基准位置向预设方向偏移所述精度后到达偏移位置,并获取所述偏移位置的偏移坐标信息;
所述变化计算子单元7023,计算所述基准位置的基准坐标信息与所述偏移坐标信息的变化量;
所述尺寸确定子单元7024,根据所述变化量确定二级区域的尺寸;
所述区域划分子单元7025,根据所述二级区域的尺寸将所述业务请求所属的一级区域划分为多个二级区域。
可选的,所述基准确定子单元7021,当所述一级区域位于北半球时,将所述一级区域的东北角或者西北角确定为基准位置;当所述以及区域位于南半球时,将所述一级区域的东南角或者西南角确定为基准位置。
可选的,所述精度偏移子单元7022,当所述基准位置为所述一级区域的东北角时,基于所述东北角,向西、向南各偏移所述精度后到达偏移位置;当所述基准位置为所述一级区域的西北角时,基于所述西北角,向东、向南各偏移所述精度后到达偏移位置;当所述基准位置为所述一级区域的东南角时,基于所述东南角,向西、向北各偏移所述精度后到达偏移位置;当所述基准位置为所述一级区域的西南角时,基于所述西南角,向东、向北各偏移所述精度后到达偏移位置。
可选的,所述业务响应单元704,获取所述业务请求所属的二级区域及其相邻二级区域中各业务对象的位置信息,根据所述业务对象的位置信息计算所述业务对象与所述请求位置之间的距离,将距离满足预设条件的业务对象作为对所述业务请求的响应进行推送。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。