商户查找方法、装置、电子设备和存储介质与流程

文档序号:17476810发布日期:2019-04-20 06:10阅读:217来源:国知局
商户查找方法、装置、电子设备和存储介质与流程

本发明涉及电商技术领域,尤其涉及一种商户查找方法、装置、电子设备和存储介质。



背景技术:

随着互联网的发展,网上购物越来越普遍,在餐饮、酒店等行业,用户通过网络便可实现快速下单。例如外卖行业,用户下单过程中,先定位到自己的位置,然后根据点餐需求选择商户进行下单。这个过程包含了基于位置服务(lbs)的空间位置搜索的过程,即根据用户定位的位置搜索到附近可以为用户提供配送服务的商家列表。

目前有关lbs空间搜索的实现方案,相关技术一是利用关系型数据库管理系统(postgresql)的空间查询功能,这种方案在搜索商家时,采用的是对所有商户配送区域逐一比较的方式,适合商户配送区域数量较少的情况,当面对商户配送区域数量上万的情况,显然这种方案不能接受;相关技术二是利用搜索引擎lucene空间查询,将配送区域划分为若干个网格之后,利用网格与用户位置的关系进行索引及查询,其在性能上有一定提升,但是此方案因为增加了空间数据量,当空间数据达到百万、千万级别的情况下,索引太大,会导致查询结果存在误差。



技术实现要素:

本发明实施方式的目的在于提供一种商户查找方法、装置、电子设备和存储介质,采用基于索引树的空间位置搜索方案及外接矩形过滤的思想,将距离相近的商户进行聚合,当用户查找商户时,可快速找到符合搜索条件的商户。

为解决上述技术问题,本发明的实施方式提供了一种商户查找方法,包括:获取用户的地理位置,利用预先建立的索引树查找覆盖地理位置的外接矩形,其中,外接矩形为覆盖商户配送区域的最小外接矩形;确定地理位置被外接矩形对应的配送区域覆盖的目标配送区域;将目标配送区域对应的商户作为地理位置对应的可配送商户;其中,索引树包括依据商户配送区域的外接矩形的左下顶点位置数据建立的第一索引树和依据商户配送区域的外接矩形的右上顶点位置数据建立的第二索引树。

本发明的实施方式还提供了一种商户查找装置,包括:查找模块,用于获取用户的地理位置,利用预先建立的索引树查找覆盖地理位置的外接矩形,其中,外接矩形为覆盖商户配送区域的最小外接矩形;目标配送区域确定模块,用于确定地理位置被外接矩形对应的配送区域覆盖的目标配送区域;可配送商户确定模块,用于将目标配送区域对应的商户作为地理位置对应的可配送商户;其中,索引树包括依据商户配送区域的外接矩形的左下顶点位置数据建立的第一索引树和依据商户配送区域的外接矩形的右上顶点位置数据建立的第二索引树。

本发明的实施方式还提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行以实现:获取用户的地理位置,利用预先建立的索引树查找覆盖地理位置的外接矩形,其中,外接矩形为覆盖商户配送区域的最小外接矩形;确定地理位置被外接矩形对应的配送区域覆盖的目标配送区域;将目标配送区域对应的商户作为地理位置对应的可配送商户;其中,索引树包括依据商户配送区域的外接矩形的左下顶点位置数据建立的第一索引树和依据商户配送区域的外接矩形的右上顶点位置数据建立的第二索引树。

本发明的实施方式还提供了一种非易失性存储介质,用于存储计算机可读程序,计算机可读程序用于供计算机执行如上的商户查找方法。

本发明实施方式相对于现有技术而言,主要区别及其效果在于:采用了基于索引树的空间位置搜索方案,利用商户的外接矩形的左下顶点和右上顶点分别建立索引树。当用户查找商户时,查找数据量只包括每个配送区域的两个顶点的数据,大大降低了运算量,可快速找到符合搜索条件的商户。

另外,用户的地理位置和配送区域用经纬度坐标表示。利用经纬度信息,获取地理位置更准确,更方便。

另外,外接矩形根据如下步骤确定:确定商户配送区域内的经纬度极值,经纬度极值包括最大经度、最小经度、最大纬度、最小纬度;根据经纬度极值确定外接矩形。可以得到包含商户配送区域在内的最小外接矩形,减少查找过程中的计算量。

另外,获取用户的地理位置,利用预先建立的索引树查找覆盖地理位置的外接矩形之前,还包括:获取用户的地理位置,根据地理位置确定用户所属的商圈及商圈对应的索引树。以商圈为单位建立每个商圈的索引树,进而选择与用户位置所在商圈对应的索引树进行查找对应的配送区域,提高查找速度。

另外,获取用户的地理位置,利用预先建立的索引树查找覆盖用户的地理位置的外接矩形,包括:利用第一索引树查找经度值小于用户位置的经度值且纬度值小于用户位置的纬度值的左下顶点集合,得到外接矩形的第一集合;利用第二索引树查找经度值大于用户位置的经度值且纬度值大于用户位置的纬度值的右上顶点集合,得到外接矩形的第二集合;计算第一集合与第二集合的交集,得到覆盖地理位置的外接矩形。根据外接矩形的左下顶点和右上顶点分别建立索引树,用户查找商户时,可利用索引树对商户进行快速筛选,查找数据量只包括每个配送区域的两个顶点的数据,提高了查找的速度。

另外,当覆盖地理位置的外接矩形为至少两个时,确定地理位置被外接矩形对应的配送区域覆盖的目标配送区域,包括:采用并行计算方式,同时判断地理位置是否被覆盖地理位置的每个外接矩形对应的配送区域覆盖,若是,则确定外接矩形对应的配送区域为目标配送区域。同时判断地理位置是否被覆盖地理位置的每个外接矩形对应的配送区域覆盖。提高用户获取查找结果的速度。

另外,在将目标配送区域对应的商户作为地理位置对应的可配送商户之后,还包括:发送可配送商户的信息到用户的终端设备,由终端设备显示可配送商户的信息。便于用户查看和选择,提升用户体验。

另外,第一索引树或第二索引树的切分点采用外接矩形的顶点。采用外接矩形的顶点作为切分点,充分利用数据,有利于减少树深度,进而提高查找效率。

附图说明

图1是根据本发明第一实施方式提供的商户查找方法流程图;

图2是根据本发明第一实施方式中的确定商圈内配送区域的外接矩形的流程图;

图3是根据本发明第一实施方式中的商圈内配送区域的外接矩形的示意图;

图4(a)是根据本发明第二实施方式中的构建第一索引树的示意图;

图4(b)是根据本发明第二实施方式中的第一索引树与用户位置关系的示意图;

图5(a)是根据本发明第二实施方式中的构建第二索引树的示意图;

图5(b)是根据本发明第二实施方式中的第二索引树与用户位置关系的示意图;

图6(a)和图6(b)是根据本发明第二实施方式中的第一索引树和第二索引树的示意图;

图7是根据本发明第三实施方式提供的商户查找装置示意图;

图8是根据本发明第四实施方式提供的电子设备示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

本发明的第一实施方式涉及一种商户查找方法,本实施方式可以应用在终端侧,如应用在手机,平板电脑等终端设备中,也可以应用在网络侧的服务器中。

餐饮领域中,一个商圈例如是一个城市、一个区等。商圈内包含若干个商户,每个商户有固定服务的配送区域,即商户只为位于自己配送区域范围内的用户提供下单及配送服务。用户通过网络下单时,会先搜索到自己所在位置所属配送区域对应的商户列表,然后选择商户进行下单。

图1是根据本发明第一实施方式提供的商户查找方法流程图,该方法包括:

s101、获取用户的地理位置,利用预先构建的索引树查找覆盖用户的地理位置的外接矩形。

本实施方式中,索引树具体为kd索引树,即k-dimensiontree(k维空间索引树),是用于做空间数据存储的树状数据结构,其利用k维空间中的点对空间数据进行分割,每次分割时分割点取中值,将数据分成两半,通过多次划分,不断递归,直到分割点两侧没有数据。kd索引树通过对空间数据的折半划分,提高对空间数据的查找效率。

具体地,外接矩形为覆盖一个商户的配送区域的最小外接矩形。商户的配送区域对应一定的地理范围,配送区域的形状可能是规则的矩形,也可能是不规则形状。

进一步地,用户的地理位置和商户的配送区域的地理位置信息为经纬度。根据本发明第一实施方式中的确定商户配送区域的外接矩形的流程如图2所示,根据商户配送区域的经纬度极值确定外接矩形,经纬度极值包括最大经度、最小经度、最大纬度和最小纬度。具体包括:

s1011、提取商户配送区域边界上的经纬度信息。

经纬度信息包括商户配送区域边界上所有点的经度值和纬度值。

s1012、从经纬度信息中提取经纬度极值,即最大经度、最小经度、最大纬度和最小纬度。

具体地,在提取到的配送区域边界上的所有经度值中,找到最大经度和最小经度;在提取到的配送区域边界上的所有纬度值中,找到最大纬度和最小纬度。最大经度和最小经度例如分别为wmax和wmin,最大纬度和最小纬度例如分别为nmax和nmin。

s1013、根据最小经度和最小纬度确定外接矩形的左下顶点,根据最大经度和最大纬度确定外接矩形的右上顶点。

例如,根据最小经度wmin和最小纬度确定的外接矩形的左下顶点坐标为pa(wmin,nmin),根据最大经度wmax和最大纬度nmax确定的外接矩形的右上顶点坐标为pb(wmax,nmax)。

s1014、根据左下顶点和右上顶点确定外接矩形。

本实施方式中,以左下顶点pa(wmin,nmin)和右上顶点pb(wmax,nmax)之间的连线作为外接矩形的对角线,确定出配送区域对应的外接矩形。具体地,根据如上步骤s1011-s1014,确定出商圈内所有商户的配送区域的外接矩形如图3所示。例如商圈内共有6个商户及其对应的配送区域,对应的外接矩形分别为p1、p2、p3、p4、p5、p6。

本实施方式中,以商圈为单位建立kd索引树,即针对每一个商圈中包含的商户数量及每个商户的配送区域,建立起对应该商圈的kd索引树。进一步地,kd索引树是依据商圈内商户的配送区域的外接矩形预先构建的。具体地说,预先构建的kd索引树包括依据外接矩形的左下顶点位置数据构建的第一kd索引树和依据外接矩形的右上顶点位置数据构建的第二kd索引树。第一kd索引树或第二kd索引树的第一层切分线可选择纵向切分线,例如纬线,也可以选择横向切分线,例如经线。第一kd索引树和第二kd索引树每一层切分线的的切分点可以选择外接矩形的顶点,也可以选择不属于外接矩形的顶点的坐标点。

本实施方式中,当需要查找与用户位置匹配的商户时,首先根据用户的地理位置确定用户所属的商圈以及该商圈对应的索引树,例如第一kd索引树和第二kd索引树。再利用第一kd索引树和第二kd索引树进行搜索,可得到覆盖该用户地理位置的外接矩形。

s102、确定用户地理位置被外接矩形对应的配送区域覆盖的目标配送区域。

本实施方式中,根据步骤s101中查找到的覆盖用户位置的外接矩形,进而可以得到对应的商户。因为商户的外接矩形覆盖的地理范围并不同于商户的配送区域覆盖的地理范围,因此该商户的外接矩形包含用户位置,并不代表该商户的配送区域覆盖的地理范围也包含用户位置。因此进一步地,将用户位置的经纬度信息与覆盖用户位置的外接矩形对应的配送区域的覆盖范围进行比较,判断用户位置是否在外接矩形对应的配送区域的覆盖范围内,从而确定覆盖用户位置的目标配送区域。

若用户位置的经纬度信息在该外接矩形对应的配送区域的覆盖范围内,说明该外接矩形对应的商户可为该用户提供配送服务,确定该外接矩形对应的配送区域为目标配送区域。

若用户位置的经纬度信息不在该外接矩形对应的配送区域的覆盖范围内,说明该外接矩形对应的商户不能为该用户提供配送服务。

进一步地,当覆盖用户位置的外接矩形数量有多个时,本步骤中判断该多个商户的配送区域是否覆盖用户位置时,可采用串行计算方式对多个配送区域依次进行判断,或者采用并行计算方式对多个配送区域同时进行判断。其中,串行计算方式是指对该多个商户的配送区域,逐个依次计算并判断每个商户的配送区域是否覆盖用户位置;并行计算方式是指对该多个商户的配送区域,同时计算并判断每个商户的配送区域是否覆盖用户位置。

s103、将目标配送区域对应的商户作为用户地理位置对应的可配送商户。

本实施方式中,目标配送区域覆盖用户的地理位置,也就是说目标配送区域对应的商户能够为该用户提供配送服务,将该商户确定为该用户的可配送商户,也即该用户的地理位置对应的可配送商户。

本实施方式中,当确定了用户的可配送商户之后,发送可配送商户的信息到用户的终端设备,由该终端设备显示可配送商户的信息。例如发送可配送商户列表到用户的手机上,并在手机等移动终端屏幕上显示可配送商户列表中商户的信息,显示内容可包括商户的id、商户名称、商户到用户的距离、配送费、起送价等。

本实施方式中,商户、商户的配送区域、配送区域的外接矩形通过商户的特征参数建立联系,商户的特征参数例如为商户的id。

本发明实施方式采用了基于索引树的空间位置搜索方案,利用商户的外接矩形的左下顶点和右上顶点分别建立索引树。当用户查找商户时,查找数据量只包括每个配送区域的两个顶点的数据,大大降低了运算量,可快速找到符合搜索条件的商户。另外根据配送区域边界上的最大经纬度和最小经纬度确定外接矩形,可以得到包含商户配送区域在内的最小外接矩形,减少查找过程中的计算量。

本发明的第二实施方式涉及一种商户查找方法,本实施方式可以应用在终端侧,如应用在手机,平板电脑等终端设备中,也可以应用在网络侧的服务器中。本发明实施方式的商户查找方法包括:

s101、获取用户的地理位置,利用预先构建的索引树查找覆盖用户的地理位置的外接矩形。

本实施方式中,外接矩形为覆盖一个商户的配送区域的最小外接矩形。外接矩形的确定方法如第一实施方式中的步骤s1011-1014,示意图如图3所示,例如商圈内共有6个商户及其对应的配送区域,对应的外接矩形分别为p1、p2、p3、p4、p5、p6。其中,p1的左下顶点为pa1,右上顶点为pb1,对角线为pa1-pb1;p2的左下顶点为pa2,右上顶点为pb2,对角线为pa2-pb2;p3的左下顶点为pa3,右上顶点为pb3,对角线为pa3-pb3;p4的左下顶点为pa4,右上顶点为pb4,对角线为pa4-pb4;p5的左下顶点为pa5,右上顶点为pb5,对角线为pa5-pb5;p6的左下顶点为pa6,右上顶点为pb6,对角线为pa6-pb6。某一用户a的地理位置位于外接矩形p4中,同时还位于外接矩形p5中。

本实施方式中,以商圈为单位建立kd索引树,即针对每一个商圈中包含的商户数量及每个商户的配送区域,建立起对应该商圈的kd索引树。进一步地,kd索引树是依据商圈内商户的配送区域的外接矩形预先构建的。具体地说,预先构建的kd索引树包括依据外接矩形的左下顶点位置数据构建的第一kd索引树和依据外接矩形的右上顶点位置数据构建的第二kd索引树。第一kd索引树或第二kd索引树的第一层切分线可选择纵向切分线,例如纬线,也可以选择横向切分线,例如经线。第一kd索引树和第二kd索引树每一层切分线的切分点可以选择外接矩形的顶点,也可以选择不属于外接矩形的顶点的坐标点。例如,当某一层待切分的顶点数为奇数时,选择待切分的顶点中,具有中间地理位置的顶点作为切分点;当某一层待切分的顶点数为偶数时,选择待切分的顶点中,居于中间位置的两个顶点中的其中一个作为切分点,或者选择居于该两个顶点之间的某一坐标点作为切分点。

在本发明的一个具体实施方式中,结合图3所示,商圈内共有6个商户及其对应的配送区域,对应的外接矩形分别为p1、p2、p3、p4、p5、p6。6个外接矩形左下顶点的经纬度坐标分别为pa1(120,29.3),pa2(120.5,31.5),pa3(121.5,31.3),pa4(122.8,30.6),pa5(122.2,29.5),pa6(124.5,31.2);6个外接矩形右上顶点的经纬度坐标分别为pb1(121.5,30.5),pb2(122.5,34.8),pb3(125,33),pb4(124.3,31.6),pb5(125.4,31),pb6(125.8,32.2)。依据以上6个外接矩形的左下顶点和右上顶点构建第一kd索引树和第二kd索引树的步骤如下:

s1015、依据外接矩形的左下顶点构建第一kd索引树。

进一步地,图4(a)是根据本发明第二实施方式中的构建第一kd索引树的示意图,图4(b)是根据本发明第二实施方式中的第一kd索引树与用户位置关系的示意图。具体地,如图4(a),构建第一kd索引树的过程如下:

(1)、选择经线l0作为第一kd索引树第一层的切分线。

切分线l0对应的经度值为122。l0将6个左下顶点划分为两部分,第一部分包含3个左下顶点为pa1、pa2、pa3,第二部分包含3个左下顶点为pa4、pa5、pa6。

(2)、选择纬线l3和纬线l4作为第一kd索引树第二层的切分线。

切分线l3经过左下顶点pa3(121.5,31.3),即对应的纬度值为31.3。l3将3个左下顶点pa1、pa2、pa3划分为两部分,设定位于切分线l3上的左下顶点,即pa3(121.5,31.3),既属于第一部分,又属于第二部分。因此,第一部分包含2个左下顶点为pa1、pa3,第二部分包含2个左下顶点为pa2、pa3。

切分线l4经过左下顶点pa4(122.8,30.6),即对应的纬度值为30.6。l4将3个左下顶点pa4、pa5、pa6划分为两部分,其中,左下顶点pa4既属于第一部分,又属于第二部分。因此,第一部分包含2个左下顶点为pa4、pa5,第二部分包含2个左下顶点为pa4、pa6。

(3)、选择经线l1、l2、l5、l6作为第一kd索引树第三层的切分线。

切分线l1经过左下顶点pa1(120,29.3),即对应的经度值为120。l1将2个左下顶点pa1、pa3划分为两部分,其中,左下顶点pa1既属于第一部分,又属于第二部分。因此,第一部分包含1个左下顶点为pa1,第二部分包含2个左下顶点为pa1、pa3。

切分线l2经过左下顶点pa2(120.5,31.5),即对应的经度值为120.5。l2将2个左下顶点pa2、pa3划分为两部分,其中,左下顶点pa2既属于第一部分,又属于第二部分。因此,第一部分包含1个左下顶点为pa2,第二部分包含2个左下顶点为pa2、pa3。

切分线l5经过左下顶点pa5(122.2,29.5),即对应的经度值为122.2。l5将2个左下顶点pa4、pa5划分为两部分,其中,左下顶点pa5既属于第一部分,又属于第二部分。因此,第一部分包含1个左下顶点为pa5,第二部分包含2个左下顶点为pa4、pa5。

切分线l6经过左下顶点pa6(124.5,31.2),即对应的经度值为124.5。l6将2个左下顶点pa4、pa6划分为两部分,其中,左下顶点pa6既属于第一部分,又属于第二部分。因此,第一部分包含1个左下顶点为pa6,第二部分包含2个左下顶点为pa4、pa6。

此时,所有的左下顶点都作为切分点位于各层切分线上,即第三层切分线两侧已没有左下顶点数据,第一kd索引树构建完成。当利用第一kd索引树查找覆盖用户位置的外接矩形时,如图4(b)所示,a用户的经纬度坐标为a(124,31)。覆盖a用户位置的外接矩形的左下顶点应当位于如图4(b)中所示的阴影区域中。

s1016、依据外接矩形的右上顶点构建第二kd索引树。

进一步地,图5(a)是根据本发明第二实施方式中的构建第二kd索引树的示意图,图5(b)是根据本发明第二实施方式中的第二kd索引树与用户位置关系的示意图。具体地,如图5(a),构建第二kd索引树的过程如下:

(1)、选择经线l0作为第二kd索引树第一层的切分线。

切分线l0对应的经度值为124.5。l0将6个右上顶点划分为两部分,第一部分包含3个右上顶点为pb1、pb2、pb4,第二部分包含3个右上顶点为pb3、pb5、pb6。

(2)、选择纬线l4和纬线l6作为第二kd索引树第二层的切分线。

切分线l4经过右上顶点pb4(124.3,31.6),即对应的纬度值为31.6。l4将3个右上顶点pb1、pb2、pb4划分为两部分,设定位于切分线l4上的右上顶点即pb4(124.3,31.6)对应的右上顶点,既属于第一部分,又属于第二部分。因此,第一部分包含2个右上顶点为pb1、pb4,第二部分包含2个右上顶点为pb2、pb4。

切分线l6经过右上顶点pb6(125.8,32.2),即对应的纬度值为32.2。l6将3个右上顶点pb3、pb5、pb6划分为两部分,其中,右上顶点pb6既属于第一部分,又属于第二部分。因此,第一部分包含2个右上顶点为pb3、pb6,第二部分包含2个右上顶点为pb5、pb6。

(3)、选择经线l1、l2、l3、l5作为第二kd索引树第三层的切分线。

切分线l1经过右上顶点pb1(121.5,30.5),即对应的经度值为121.5。l1将2个右上顶点pb1、pb4划分为两部分,其中,右上顶点pb1既属于第一部分,又属于第二部分。因此,第一部分包含1个右上顶点为pb1,第二部分包含2个右上顶点为pb1、pb4。

切分线l2经过右上顶点pb2(122.5,34.8),即对应的经度值为122.5。l2将2个右上顶点pb2、pb4划分为两部分,其中,右上顶点pb2既属于第一部分,又属于第二部分。因此,第一部分包含1个右上顶点为pb2,第二部分包含2个右上顶点为pb2、pb4。

切分线l3经过右上顶点pb3(125,33),即对应的经度值为125。l3将2个右上顶点pb3、pb6划分为两部分,其中,右上顶点pb3既属于第一部分,又属于第二部分。因此,第一部分包含1个右上顶点为pb3,第二部分包含2个右上顶点为pb3、pb6。

切分线l5经过右上顶点pb5(125.4,31),即对应的经度值为125.4。l5将2个右上顶点pb5、pb6划分为两部分,其中,右上顶点pb5既属于第一部分,又属于第二部分。因此,第一部分包含1个右上顶点为pb5,第二部分包含2个右上顶点为pb5、pb6。

此时,所有的右上顶点都作为切分点位于各层切分线上,即第三层切分线两侧已没有右上顶点数据,第二kd索引树构建完成。当利用第二kd索引树查找覆盖用户位置的外接矩形时,如图5(b)所示,a用户的位置对应的经纬度坐标为a(124,31)。覆盖a用户位置的外接矩形的右上顶点应当位于如图5(b)中所示的阴影区域中。

综上,第一kd索引树和第二kd索引树构建完成,如图6(a)和图6(b)是根据本发明第二实施方式中的第一kd索引树和第二kd索引树的示意图。

本实施方式中,当需要查找与用户位置匹配的商户时,首先根据用户的地理位置确定用户所属的商圈以及该商圈对应的索引树,例如第一kd索引树和第二kd索引树。再利用第一kd索引树和第二kd索引树进行搜索,可得到覆盖该用户地理位置的外接矩形。具体地,查找过程包括:

s1017、利用第一kd索引树查找经度值小于用户位置的经度值且纬度值小于用户位置的纬度值的左下顶点集合,得到外接矩形的第一集合。

一并参见图4(b)和图6(a),获取到a用户的经纬度坐标为a(124,31),即经度为124,纬度为31。根据图4(b),覆盖a用户位置的外接矩形应当满足:左下顶点位于图中的阴影区域中,即该左下顶点的经度值小于或等于124,纬度值小于或等于31。从图4(b)容易知道,符合条件的外接矩形的左下顶点包括:pa3(121.5,31.3),pa4(122.8,30.6),pa5(122.2,29.5)。要找到pa3、pa4、pa5,利用图6(a)所示的第一kd索引树进行查找时,从根节点开始向下逐层查找,第一查找条件为:左下顶点的经度值小于或等于124,纬度值小于或等于31。具体地如:

(1)、查找第一kd索引树的第一层。

根节点为经度122,位于根节点左侧的集合中的左下顶点的经度值都小于或等于122,符合第一查找条件中的经度条件,经度条件即经度值小于或等于124;位于根节点右侧的集合中的左下顶点的经度值均大于或等于122,与经度条件有交集。即下一步分别在根节点的左侧集合与右侧集合中继续查找。

(2)、查找第一kd索引树的第二层。

要查找的两个子节点分别为纬度31.3和纬度30.6,对于子节点:纬度31.3,其左侧集合中的左下顶点的纬度值都小于或等于31.3,与第一查找条件中的纬度条件有交集,纬度条件即纬度值小于或等于31;其右侧集合中的左下顶点的纬度值都大于或等于31.3,不符合纬度条件。

对于子节点:纬度30.6,其左侧集合中的左下顶点的纬度值都小于或等于30.6,符合纬度条件;其右侧集合中的左下顶点的纬度值都大于或等于30.6,与纬度条件有交集。此时说明位于该切分线上的左下顶点必然同时符合第一查找条件中的经度条件和纬度条件。本步骤中得到一个符合第一查找条件的左下顶点为pa4(122.8,30.6)。

如上,下一步分别在子节点纬度31.3的左侧集合、子节点纬度30.6的左侧集合与右侧集合中继续查找。

(3)、查找第一kd索引树的第三层。

第三层为叶子节点,要查找的三个叶子节点分别为经度120、经度122.2、经度124.5的三条经线,分别判断这三条经线的经度值是否符合第一查找条件中的经度条件。对于经线120,符合经度条件;对于经线122.2,符合经度条件;对于经线124.5,不符合经度条件。则进一步得到,位于经线120和经线122.2上的左下顶点必然同时符合第一查找条件中的经度条件和纬度条件。因此本步骤中得到两个符合第一查找条件的左下顶点为pa1(120,29.3)和pa5(122.2,29.5)。

根据以上步骤(1)-(3),得到符合第一查找条件的三个左下顶点为:pa1(120,29.3)、pa4(122.8,30.6)、pa5(122.2,29.5)。根据查找到的三个左下顶点,得到对应的第一外接矩形的第一集合为s1={p1、p4、p5}。

s1018、利用第二kd索引树查找经度值大于用户位置的经度值且纬度值小于用户位置的纬度值的右上顶点集合,得到外接矩形的第二集合。

一并参见图5(b)和图6(b),获取到a用户的经纬度坐标为a(124,31),即经度为124,纬度为31。根据图5(b),覆盖a用户位置的外接矩形应当满足:右上顶点位于图中的阴影区域中,即该右上顶点的经度值大于或等于124,纬度值大于或等于31。从图5(b)容易知道,符合条件的外接矩形的右上顶点包括:pb3(125,33),pb4(124.3,31.6),pb5(125.4,31),pb6(125.8,32.2)。要找到pb3,pb4,pb5,pb6,利用图6(b)所示的第二kd索引树进行查找时,从根节点开始向下逐层查找,第二查找条件为:右上顶点的经度值大于或等于124,纬度值大于或等于31。具体地如:

(1)、查找第二kd索引树的第一层。

根节点为经度124.5,位于根节点左侧的集合中的右上顶点的经度值都小于或等于124.5,与第二查找条件中的经度条件有交集,经度条件即经度值大于或等于124;位于根节点右侧的集合中的右上顶点的经度值均大于或等于124.5,符合经度条件。即下一步分别在根节点的左侧集合与右侧集合中继续查找。

(2)、查找第二kd索引树的第二层。

要查找的两个子节点分别为纬度31.6和纬度32.2,对于子节点:纬度31.6,其左侧集合中的右上顶点的纬度值都小于或等于31.6,与第二查找条件中的纬度条件有交集,纬度条件即纬度值大于或等于31;其右侧集合中的右上顶点的纬度值都大于或等于31.3,符合纬度条件。此时说明位于该切分线上的右上顶点必然同时符合第二查找条件中的经度条件和纬度条件。本步骤中得到一个符合第二查找条件的右上顶点为pb4(124.3,31.6)。

对于子节点:纬度32.2,其左侧集合中的右上顶点的纬度值都小于或等于32.2,与纬度条件有交集;其右侧集合中的右上顶点的纬度值都大于或等于32.2,符合纬度条件。此时说明位于该切分线上的右上顶点必然同时符合第二查找条件中的经度条件和纬度条件。本步骤中得到一个符合第二查找条件的右上顶点为pb6(125.8,32.2)。

如上,下一步分别在子节点纬度31.6的左侧集合与右侧集合、子节点纬度32.2的左侧集合与右侧集合中继续查找。

(3)、查找第二kd索引树的第三层。

第三层为叶子节点,要查找的四个叶子节点分别为经度121.5、经度122.5、经度125.4、经度125的四条经线,分别判断这四条经线的经度值是否符合第二查找条件中的经度条件。对于经线121.5,不符合经度条件;对于经线122.5,不符合经度条件;对于经线125.4,符合经度条件;对于经线125,符合经度条件。则进一步得到,位于经线125.4和经线125上的右上顶点必然同时符合第二查找条件中的经度条件和纬度条件。因此本步骤中得到两个符合第二查找条件的右上顶点为pb3(125,33)和pb5(125.4,31)。

根据以上步骤(1)-(3),得到符合第二查找条件的四个右上顶点为:pb3(125,33)、pb4(124.3,31.6)、pb5(125.4,31)、pb6(125.8,32.2)。根据查找到的四个右上顶点,得到对应的外接矩形的第二集合为s2={p3、p4、p5、p6}。

s1019、计算第一集合与第二集合的交集,得到覆盖用户地理位置的外接矩形。

根据步骤s1017得到的外接矩形的第一集合s1和步骤s1018得到的外接矩形的第二集合s2,计算两个集合的交集,即

s=s1∩s2={p4、p5}

因此,得到覆盖用户地理位置的外接矩形包括p4和p5。

s102、确定用户地理位置被外接矩形对应的配送区域覆盖的目标配送区域。

本实施方式中,目标配送区域的确定方法如第一实施方式中的步骤s102。

s103、将目标配送区域对应的商户作为用户地理位置对应的可配送商户。

本实施方式中,目标配送区域覆盖用户的地理位置,也就是说目标配送区域对应的商户能够为该用户提供配送服务,将该商户确定为该用户的可配送商户,也即该用户的地理位置对应的可配送商户。

本发明实施方式采用了基于索引树的空间位置搜索方案,利用商户的外接矩形的左下顶点和右上顶点分别建立索引树。当用户查找商户时,查找数据量只包括每个配送区域的两个顶点的数据,大大降低了运算量,可快速找到符合搜索条件的商户。另外建立索引树时,以外接矩形的左下顶点或右上顶点作为切分点,有利于减小树的深度,进一步提高了查找的速度。

本发明的第三实施方式涉及一种商户查找装置,图7是根据本发明第三实施方式提供的商户查找装置示意图,该商户查找装置700包括:

查找模块701,用于获取用户的地理位置,利用预先建立的索引树查找覆盖地理位置的外接矩形,其中,外接矩形为覆盖商户配送区域的最小外接矩形;用户的地理位置和配送区域用经纬度信息表示。

目标配送区域确定模块702,用于确定地理位置被外接矩形对应的配送区域覆盖的目标配送区域。

可配送商户确定模块703,用于将目标配送区域对应的商户作为地理位置对应的可配送商户。

其中,索引树包括依据商圈内商户配送区域的外接矩形的左下顶点位置数据建立的第一索引树和依据商户配送区域的外接矩形的右上顶点位置数据建立的第二索引树。

进一步地,查找模块701在获取用户的地理位置,利用预先建立的索引树查找覆盖所述地理位置的外接矩形之前,获取用户的地理位置,根据所述地理位置确定所述用户所属的商圈及所述商圈对应的所述索引树。

本发明实施方式中,查找模块701包括第一查找模块7011、第二查找模块7012、目标外接矩形确定模块7013。其中,第一查找模块7011用于利用第一索引树查找经度值小于用户位置的经度值且纬度值小于用户位置的纬度值的左下顶点集合,得到外接矩形的第一集合;第二查找模块7012用于利用第二索引树查找经度值大于用户位置的经度值且纬度值大于用户位置的纬度值的右上顶点集合,得到外接矩形的第二集合;目标外接矩形确定模块7013用于计算第一集合与第二集合的交集,得到覆盖用户地理位置的外接矩形。

进一步地,当覆盖用户的地理位置的外接矩形为至少两个时,可配送商户确定模块703采用并行计算方式,同时判断用户的地理位置是否被覆盖用户的地理位置的每个外接矩形对应的配送区域覆盖,若是,则确定外接矩形对应的配送区域为目标配送区域。

本发明实施方式中,该商户查找装置700还包括索引树创建模块704,用于根据商圈内商户的配送区域创建索引树。具体地,索引树创建模块704包括外接矩形确定模块7041、第一索引树创建模块7042和第二索引树创建模块7043。

具体地,外接矩形确定模块7041用于根据商圈内商户的配送区域确定外接矩形,具体为:确定商户配送区域内的经纬度极值,经纬度极值包括最大经度、最小经度、最大纬度和最小纬度;根据经纬度极值确定外接矩形。

更为具体地,第一索引树创建模块7042用于依据商户配送区域的外接矩形的左下顶点位置数据建立第一索引树。

更为具体地,第二索引树创建模块7043用于依据商户配送区域的外接矩形的右上顶点位置数据建立第二索引树。

进一步地,第一索引树或第二索引树的切分点采用外接矩形的顶点。

本发明第四实施方式涉及一种电子设备,图8是根据本发明第四实施方式提供的电子设备示意图,该电子设备包括:至少一个处理器801;以及,与至少一个处理器801通信连接的存储器802;以及,分别与处理器801和存储器802均为通信连接的通信组件803,通信组件803在处理器801的控制下接收和发送数据;其中,存储器802存储有可被至少一个处理器801执行的指令,指令被至少一个处理器801执行以实现:

获取用户的地理位置,利用预先建立的索引树查找覆盖地理位置的外接矩形,其中,外接矩形为覆盖商户配送区域的最小外接矩形;确定地理位置被外接矩形对应的配送区域覆盖的目标配送区域;将目标配送区域对应的商户作为地理位置对应的可配送商户;其中,索引树包括依据商户配送区域的外接矩形的左下顶点位置数据建立的第一索引树和依据所商户配送区域的外接矩形的右上顶点位置数据建立的第二索引树。

该电子设备包括:一个或多个处理器801以及存储器802,图6中以一个处理器801为例。处理器801、存储器802可以通过总线或者其他方式连接,图6中以通过总线连接为例。存储器802作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器801通过运行存储在存储器802中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述商户查找方法。

存储器802可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储商户的id、商户的配送区域的经纬度信息等。此外,存储器802可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器802可选包括相对于处理器801远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

一个或者多个模块存储在存储器802中,当被一个或者多个处理器801执行时,执行上述任意方法实施方式中的商户查找方法。

上述产品可执行本申请实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本申请实施方式所提供的方法。

本发明的第五实施方式涉及一种非易失性存储介质,用于存储计算机可读程序,计算机可读程序用于供计算机执行上述部分或全部的方法实施例。

即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

本申请实施例公开了a1.一种商户查找方法,包括:

获取用户的地理位置,利用预先建立的索引树查找覆盖所述地理位置的外接矩形,其中,所述外接矩形为覆盖商户配送区域的最小外接矩形;

确定所述地理位置被所述外接矩形对应的配送区域覆盖的目标配送区域;

将所述目标配送区域对应的商户作为所述地理位置对应的可配送商户;

其中,所述索引树包括依据商户配送区域的外接矩形的左下顶点位置数据建立的第一索引树和依据所述商户配送区域的外接矩形的右上顶点位置数据建立的第二索引树。

a2.如a1所述的商户查找方法,所述用户的地理位置和所述配送区域用经纬度坐标表示。

a3.如a2所述的商户查找方法,所述外接矩形根据如下步骤确定:

确定商户配送区域内的经纬度极值,所述经纬度极值包括最大经度、最小经度、最大纬度、最小纬度;

根据所述经纬度极值确定所述外接矩形。

a4.如a1所述的商户查找方法,所述获取用户的地理位置,利用预先建立的索引树查找覆盖所述地理位置的外接矩形之前,还包括:

获取用户的地理位置,根据所述地理位置确定所述用户所属的商圈及所述商圈对应的所述索引树。

a5.如a2-a4中任一项所述的商户查找方法,所述获取用户的地理位置,利用预先建立的索引树查找覆盖所述用户的地理位置的外接矩形,包括:

利用第一索引树查找经度值小于所述用户位置的经度值且纬度值小于所述用户位置的纬度值的左下顶点集合,得到外接矩形的第一集合;

利用第二索引树查找经度值大于所述用户位置的经度值且纬度值大于所述用户位置的纬度值的右上顶点集合,得到外接矩形的第二集合;

计算所述第一集合与所述第二集合的交集,得到覆盖所述地理位置的外接矩形。

a6.如a5所述的商户查找方法,当覆盖所述地理位置的外接矩形为至少两个时,所述确定所述地理位置被所述外接矩形对应的配送区域覆盖的目标配送区域,包括:

采用并行计算方式,同时判断所述地理位置是否被覆盖所述地理位置的每个所述外接矩形对应的配送区域覆盖,若是,则确定所述外接矩形对应的配送区域为目标配送区域。

a7.如a1所述的商户查找方法,在所述将所述目标配送区域对应的商户作为所述地理位置对应的可配送商户之后,还包括:

发送所述可配送商户的信息到所述用户的终端设备,由所述终端设备显示所述可配送商户的信息。

a8.如a1所述的商户查找方法,所述第一索引树或所述第二索引树的切分点采用所述外接矩形的顶点。

本申请实施例公开了b1.一种商户查找装置,包括:

查找模块,用于获取用户的地理位置,利用预先建立的索引树查找覆盖所述地理位置的外接矩形,其中,所述外接矩形为覆盖商户配送区域的最小外接矩形;

目标配送区域确定模块,用于确定所述地理位置被所述外接矩形对应的配送区域覆盖的目标配送区域;

可配送商户确定模块,用于将所述目标配送区域对应的商户作为所述地理位置对应的可配送商户;

其中,所述索引树包括依据商户配送区域的外接矩形的左下顶点位置数据建立的第一索引树和依据所述商户配送区域的外接矩形的右上顶点位置数据建立的第二索引树。

本申请实施例公开了c1.一种电子设备,包括:至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;

其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行以实现:获取用户的地理位置,利用预先建立的索引树查找覆盖所述地理位置的外接矩形,其中,所述外接矩形为覆盖商户配送区域的最小外接矩形;确定所述地理位置被所述外接矩形对应的配送区域覆盖的目标配送区域;将所述目标配送区域对应的商户作为所述地理位置对应的可配送商户;其中,所述索引树包括依据商户配送区域的外接矩形的左下顶点位置数据建立的第一索引树和依据所述商户配送区域的外接矩形的右上顶点位置数据建立的第二索引树。

c2.如c1所述的电子设备,所述用户的地理位置和所述配送区域用经纬度坐标表示。

c3.如c2所述的电子设备,所述外接矩形根据如下步骤确定:

确定商户配送区域内的经纬度极值,所述经纬度极值包括最大经度、最小经度、最大纬度、最小纬度;

根据所述经纬度极值确定所述外接矩形。

c4.如c1所述的电子设备,所述获取用户的地理位置,利用预先建立的索引树查找覆盖所述地理位置的外接矩形之前,还包括:

获取用户的地理位置,根据所述地理位置确定所述用户所属的商圈及所述商圈对应的所述索引树。

c5.如c2-c4中任一项所述的电子设备,所述获取用户的地理位置,利用预先建立的索引树查找覆盖所述用户的地理位置的外接矩形,包括:

利用第一索引树查找经度值小于所述用户位置的经度值且纬度值小于所述用户位置的纬度值的左下顶点集合,得到外接矩形的第一集合;

利用第二索引树查找经度值大于所述用户位置的经度值且纬度值大于所述用户位置的纬度值的右上顶点集合,得到外接矩形的第二集合;

计算所述第一集合与所述第二集合的交集,得到覆盖所述地理位置的外接矩形。

c6.如c5所述的电子设备,当覆盖所述地理位置的外接矩形为至少两个时,所述确定所述地理位置被所述外接矩形对应的配送区域覆盖的目标配送区域,包括:

采用并行计算方式,同时判断所述地理位置是否被覆盖所述地理位置的每个所述外接矩形对应的配送区域覆盖,若是,则确定所述外接矩形对应的配送区域为目标配送区域。

c7.如c1所述的电子设备,在所述将所述目标配送区域对应的商户作为所述地理位置对应的可配送商户之后,还包括:

发送所述可配送商户的信息到所述用户的终端设备,由所述终端设备显示所述可配送商户的信息。

c8.如c1所述的电子设备,所述第一索引树或所述第二索引树的切分点采用所述外接矩形的顶点。

本申请实施例公开了d1.一种非易失性存储介质,用于存储计算机可读程序,其特征在于,所述计算机可读程序用于供计算机执行如权利要求1至8中任一项所述的商户查找方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1