【发明内容】
基于此,有必要提供一种能方便用户区分搜索结果的地理位置搜索方法。
一种地理位置搜索方法,包括以下步骤:
获取地址输入栏中的关键字;
根据所述关键字获取自动补全的候选地址集合;
判断所述候选地址集合中的候选地址是否需要用多个子地图进行展示,若是,对所述候选地址进行聚类分割,将所述聚类分割后的候选地址在多个子地图上展示,若否,则将所述候选地址在单地图上展示。
优选地,在根据所述关键字获取自动补全的候选地址集合的步骤之后还包括:
设置延时预定时间,并开始计时;
判断在所述延时预定时间内地址输入栏中关键字是否变化,若是,则关闭计时,并返回根据所述变化后的关键字获取自动补全的候选地址集合的步骤,若否,则进入判断所述候选地址集合中的候选地址是否需要用多个子地图进行展示的步骤。
优选地,所述判断所述候选地址集合中的候选地址是否需要用多个子地图进行展示的步骤具体为:
获取候选地址集合中候选地址的经纬度坐标;
根据候选地址集合中最大经纬度和最小经纬度进行计算,得出容纳所有候选地址的最小矩形区域的宽度和长度;
计算所述最小矩形区域的面积及最小矩形区域中候选地址的离散度;
判断是否同时满足所述最小矩形区域的面积大于预设的面积阈值且所述最小矩形区域中候选地址的离散度小于预设的离散度阈值,若是,则所述候选地址集合中的候选地址需要用多个子地图进行展示,若否,则所述候选地址集合中的候选地址不需要用多个子地图进行展示。
优选地,所述对所述候选地址进行聚类分割,将所述聚类分割后的候选地址在所述多个子地图上展示的步骤具体为:
将所述候选地址集合中的候选地址按预设的聚类数的个数进行聚类,得到所述预设的聚类数的个数的子类;
分别计算每个子类中能容纳该子类中所有候选地址的最小矩形区域的面积和该子类的最小矩形区域中所有候选地址的离散度;
判断每个子类是否同时满足所述最小矩形区域的面积大于预设的面积阈值且所述最小矩形区域中的所有候选地址的离散度小于预设的离散度阈值的条件,若是,将满足条件的所述子类进行下一次聚类分割,若否,则建立子地图,将不满足条件的所述子类中的所有候选地址在所述建立的子地图上展示。
优选地,所述对所述候选地址聚类分割,将所述聚类分割后的候选地址在所述多子地图上展示的步骤具体还包括:
初始化子类集和子类离散度集为空集;
所述将满足条件的所述子类进行下一次聚类分割的具体步骤为:
将满足条件的所述子类记录在所述子类集中以及将所述子类的最小矩形区域中的所有候选地址的离散度记录在所述子类离散度集中;
判断所述子类集是否为空集,若是,则结束,若否,则对所述子类离散度集中的子类进行排序,从排序结果中选取离散度最低的子类,并将所述选取的离散度最低的子类进行聚类分割。
此外,还有必要提供一种能方便用户区分搜索结果的地理位置搜索系统。
一种地理位置搜索系统,包括:
输入模块,用于获取地址输入栏中的关键字;
补全模块,用于根据所述关键字获取自动补全的候选地址集合;
判断模块,用于判断所述候选地址集合中的候选地址是否需要用多个子地图进行展示;
处理模块,用于在所述判断模块判断出所述候选地址集合中的候选地址需要用多个子地图进行展示时,对所述候选地址进行聚类分割;
展示模块,用于将所述聚类分割后的候选地址在多个子地图上展示,还用于在所述判断模块判断出所述候选地址集合中的候选地址不需要用多个子地图进行展示时,将所述候选地址在单地图上展示。
优选地,还包括设置模块和计时模块,所述设置模块用于设置延时预定时间,所述计时模块用于开始计时;
所述输入模块还用于判断在所述延时预定时间内地址输入栏中关键字是否变化,若是,则所述计时模块关闭计时,所述补全模块还用于根据所述变化后的关键字获取自动补全的候选地址集合,若否,则所述判断模块进入判断所述候选地址集合中的候选地址是否需要用多个子地图进行展示。
优选地,所述判断模块包括:
坐标获取单元,用于获取候选地址集合中候选地址的经纬度坐标;
区域划定单元,用于根据候选地址集合中最大经纬度和最小经纬度进行计算,得出容纳所有候选地址的最小矩形区域的宽度和长度;
第一计算单元,用于计算所述最小矩形区域的面积及最小矩形区域中候选地址的离散度;
第一判断单元,用于判断是否同时满足所述最小矩形区域的面积大于预设的面积阈值且所述最小矩形区域中候选地址的离散度小于预设的离散度阈值,若是,则所述候选地址集合中的候选地址需要用多个子地图进行展示,若否,则所述候选地址集合中的候选地址不需要用多个子地图进行展示。
优选地,所述处理模块包括分割单元、第二计算单元、第二判断单元和创建单元,
所述分割单元用于将所述候选地址集合中的候选地址按预设的聚类数的个数进行聚类,得到所述预设的聚类数的个数的子类;
所述第二计算单元用于分别计算每个子类中能容纳该子类中所有候选地址的最小矩形区域的面积和该子类的最小矩形区域中所有候选地址的离散度;
所述第二判断单元用于判断每个子类是否同时满足所述最小矩形区域的面积大于预设的面积阈值且所述最小矩形区域中的所有候选地址的离散度小于预设的离散度阈值的条件,若是,所述分割单元将满足条件的所述子类进行下一次聚类分割,若否,则所述创建单元建立子地图,所述展示模块还用于将不满足条件的所述子类中的所有候选地址在所述建立的子地图上展示。
优选地,所述对所述处理模块还包括初始化单元、划归单元和选取单元,
所述初始化单元用于初始化子类集和子类离散度集为空集;
所述划归单元用于将满足条件的所述子类记录在所述子类集中以及将所述子类的最小矩形区域中的所有候选地址的离散度记录在所述子类离散度集中;
当所述第二判断单元判断出所述子类集不为空集时,所述选取单元用于对所述子类离散度集中的子类进行排序,并从排序结果中选取离散度最低的子类,所述分割单元还用于将所述选取的离散度最低的子类进行聚类分割。
上述地理位置搜索方法及系统,采用地址输入栏中的关键字获取自动补全的候选地址集合,进行判断得出当候选地址集合中候选地址需采用多个子地图进行展示,则采用多个子地图展示候选地址,使得候选地址分布的比较合理,易方便用户区别搜索结果中各候选地址。
【具体实施方式】
下面结合具体的实施例及附图对地理位置搜索方法及系统的技术方案进行详细的描述,以使其更加清楚。
如图1所示,在一个实施例中,一种地理位置搜索方法,包括以下步骤:
步骤S110,获取地址输入栏中的关键字。
具体地,用户通过键盘、按键等在地址输入栏中输入搜索地理位置的关键字,获取到该关键字。地址输入栏中输入的关键字发生变化,是指输入的关键字相对于前一次输入的关键字发生变化,当其发生变化时,则触发搜索功能。其中,从空白到存在关键字也算发生变化。
步骤S120,根据该关键字获取自动补全的候选地址集合。
具体地,根据关键字进行搜索,查询到与该关键字部分匹配或完全匹配的所有候选地址,并将所有候选地址加入候选地址集合中。
在步骤S120之后,还包括步骤:删除该候选地址集合中的错误地址;在地址输入栏下拉框中显示候选地址。将候选地址集合中与输入内容匹配差别大的错误地址删除,如可采用词句对比,比较候选地址与关键字相似匹配程度,设定匹配阈值,低于该匹配阈值,则剔除该候选地址。然后在地址输入栏下拉框中显示候选地址,以供用户选择。
步骤S130,判断该候选地址集合中的候选地址是否需要用多个子地图进行展示,若是,执行步骤S140,若否,则执行步骤S150。
具体地,可根据候选地址中的地理位置信息来判断是否需要用多个子地图进行展示,如可通过候选地址的经纬度进行判断。其中,子地图是相对于单地图而定义,单地图是指能容纳所有候选地址的一张显示候选地址的地理位置的地图,子地图是指将该单地图所显示的地理位置分成多个区域,每个区域在一张地图上显示,该地图为子地图。
在一个实施例中,如图2所示,步骤S130具体包括:
步骤S131,获取候选地址集合中候选地址的经纬度坐标。
具体地,获取到候选地址集合中所有候选地址的经纬度坐标。
步骤S132,根据候选地址集合中最大经纬度和最小经纬度进行计算,得出容纳所有候选地址的最小矩形区域的宽度和长度。
具体地,根据所有候选地址的经纬度坐标中最大经纬度和最小经纬度,确定出容纳所有候选地址的最小矩形区域R的宽度Width和长度Height,如图3所示,图中圆圈表示候选地址。
步骤S133,计算该最小矩形区域的面积及最小矩形区域中候选地址的离散度。
在一个实施例中,采用如下公式计算出该最小矩形区域R的面积S:
S=Width*Height (1)
在一个实施例中,采用如下公式计算出最小矩形区域中候选地址的离散度:
其中,H(X)表示候选地址的离散度,当H(X)越低时表示离散度越低,反之则越高;N表示候选地址的数量;D表示样本空间的维度,本实施例中,D为2;||xn-xn′||2表示两个地址间欧式距离(若需要更高的精度,可以采用计算球面距离)的平方。
步骤S134,判断是否同时满足该最小矩形区域的面积大于预设的面积阈值且该最小矩形区域中候选地址的离散度小于预设的离散度阈值,若是,执行步骤S135,若否,执行步骤S136。
具体的,判断该最小矩形区域R的面积S是否大于预设的面积阈值Sthreshold,即S>Sthreshold,若是,则该候选地址的分布范围过大。图4为候选地址的分布范围过大示意图,图4中突出的点为候选地址,如花都区新雅大桥、黄埔立交桥、黄埔大桥等,从图中可看出候选地址分布在广州的花都区、天河区、海珠区、番禹区等,分布范围跨越几个区,分布范围较大。
在判断出候选该最小矩形区域R的面积S大于预设的面积阈值Sthreshold后,可进一步判断该最小矩形区域R中候选地址的离散度H(X)是否小于预设的离散度阈值Hthreshold,即H(X)<Hthreshold,若是,则候选地址的分布离散度过低。图5为候选地址的分布离散度过低的示意图,图5中突出的点表示候选地址,如天河区中的①,从图中可看出多个突出的点聚集在一起,候选地址的分布离散度较低。
同时满足上述两个条件,即该最小矩形区域的面积大于预设的面积阈值且该最小矩形区域中候选地址的离散度小于预设的离散度阈值时,表示候选地址分布范围过大且候选地址的分布离散度过低,需对候选地址用多个子地图进行展示,若不能同时满足上述两个条件,则不需要对候选地址用多个子地图进行展示。
步骤S135,该候选地址集合中的候选地址需要用多个子地图进行展示。
步骤S136,该候选地址集合中的候选地址不需要用多个子地图进行展示。
步骤S140,对该候选地址聚类分割,将该聚类分割后的候选地址在多个子地图上展示。
具体的,可采用K-mean聚类法对候选地址聚类分割。其中,K-mean聚类法的基本处理流程如下:
输入:聚类个数k,以及包含n个数据样本的数据集合。
输出:满足方差最小标准的k个聚类。
处理流程:
(1)从n个数据样本中随机选取k个样本作为聚类中心;
(2)根据每个聚类中所有样本的均值(聚类中心),计算每个样本与这些聚类中心的距离,并根据最小距离重新对相应对象进行划分;
(3)重新计算每个发生变化聚类的聚类中心。
(4)聚类中心是否发生变化,是则跳到(2),否则结束。
图6为将候选地址分布离散度过低在多子地图上展示的示意图,图中突出圆点即为候选地址,如华景新城酒和家、华景新城等。
另外,对候选地址聚类分割也可采用其他聚类法进行分割。
步骤S150,将该候选地址在单地图上展示。
具体地,当候选地址不需用多个子地图进行展示时,将其所有候选地址在单地图上展示,即在一张地图上展示。
进一步的,在一个实施例中,如图7所示,对候选地址聚类分割,将该聚类分割后的候选地址在多个子地图上展示的具体步骤包括:
步骤S210,将该候选地址集合中的候选地址按预设的聚类数的个数进行聚类,得到该预设的聚类数的个数的子类。
具体地,将候选地址集合U按预设的聚类数的个数进行聚类,如以聚类数为2进行K-mean聚类,得到两个子类U1和U2。
步骤S220,分别计算每个子类中能容纳该子类中所有候选地址的最小矩形区域的面积和该子类的最小矩形区域中所有候选地址的离散度。
具体的,计算子类U1和U2各自的最小矩形区域的面积S1和S2,以及对应子类的最小矩形区域中所有候选地址的离散度L1和L2。
步骤S230,判断每个子类是否同时满足该最小矩形区域的面积大于预设的面积阈值且该最小矩形区域中的所有候选地址的离散度小于预设的离散度阈值的条件,若是,执行步骤S240,若否,执行步骤S250。
在一个实施例中,若判断得出子类U1的最小矩形区域的面积S1大于预设的面积阈值Sthreshold,且子类U1的最小矩形区域中所有候选地址的离散度小于预设的离散度阈值Hthreshold,则表示子类U1中候选地址分布范围过大且候选地址的分布离散度过低,需对子类U1的候选地址用多个子地图进行展示;若判断出子类U1不同时满足上述两个条件,则建立一个新的子地图,将子类U1中的所有候选地址显示在该新的子地图上。
对于子类U2采用同子类U1的处理方法。
步骤S240,将满足条件的该子类进行下一次聚类分割。
步骤S250,建立子地图,将不满足条件的该子类中的所有候选地址在该建立的子地图上展示。
进一步的,在一个实施例中,如图8所示,将该聚类分割后的候选地址在多个子地图上展示的具体步骤包括:
步骤S301,初始化子类集和子类离散度集为空集。
另外,在一个实施例中,可设置子地图数,限制子地图的数量。步骤S302,将该候选地址集合中的候选地址按预设的聚类数的个数进行聚类,得到该预设的聚类数的个数的子类。
将候选地址集合U按预设的聚类数的个数进行聚类,如以聚类数为2进行K-mean聚类,得到两个子类U1和U2。
步骤S303,分别计算每个子类中能容纳该子类中所有候选地址的最小矩形区域的面积和该子类的最小矩形区域中所有候选地址的离散度。
具体的,计算子类U1和U2各自的最小矩形区域的面积S1和S2,以及对应子类的最小矩形区域中所有候选地址的离散度L1和L2。
步骤S304,判断每个子类是否同时满足该最小矩形区域的面积大于预设的面积阈值且该最小矩形区域中的所有候选地址的离散度小于预设的离散度阈值的条件,若是,执行步骤S305,若否,执行步骤S306。
在一个实施例中,若判断得出子类U1的最小矩形区域的面积S1大于预设的面积阈值Sthreshold,且子类U1的最小矩形区域中所有候选地址的离散度小于预设的离散度阈值Hthreshold,则表示子类U1中候选地址分布范围过大且候选地址的分布离散度过低,需对候选地址用多个子地图进行展示,将子类U1记录在子类集中,将子类U1的最小矩形区域中所有候选地址的离散度L1记录在子类离散度集中;若判断出子类U1不同时满足上述两个条件,则建立一个新的子地图,将子类U1中的所有候选地址显示在该新的子地图上。此外,若设置了子地图数,则将子地图数减1。
对于子类U2采用同子类U1的处理方法。
步骤S305,将满足条件的该子类记录在该子类集中以及将该子类的最小矩形区域中的所有候选地址的离散度记录在该子类离散度集中。
步骤S306,建立子地图,将不满足条件的该子类中的所有候选地址在该建立的子地图上展示。
步骤S307,判断该子类集是否为空集,若是,则结束,若否,执行步骤S308。
该子类集为空集,则表示没有需要继续进行聚类处理的子类。
步骤S308,对该子类离散度集合进行排序,从排序结果中选取离散度最低的子类,返回步骤S302。
将子类离散度集合中的各子类离散度进行排序,然后从排序结果中选取离散度最低的子类,再将该子类重新进行聚类分割,即将该子类按照预设的聚类数的个数进行聚类,得到预设个数的子类,再重复步骤S303到步骤S308。
另外,步骤S305至S308为将满足条件的该子类进行下一次聚类分割的具体步骤。
在一个实施例中,在步骤S307之后,还包括步骤:
判断子地图数是否等于1,若是,建立子地图,并将剩余的候选地址在该建立的子地图上进行展示,并结束,若否,执行步骤S308。
具体地,设置子地图数,则建立一个子地图后,子地图数自动减1。若子地图数为1,则表示仅可建立一个新的子地图,剩余的候选地址需全部显示在该最后一个新的子地图上。若子地图数不为1,表示还可建立多个子地图。
进一步的,在一个实施例中,如图9所示,一种地理位置搜索方法,包括:
步骤S410,获取地址输入栏中的关键字。
具体地,用户通过键盘、按键等在地址输入栏中输入搜索地理位置的关键字,客户端获取到该关键字。地址输入栏中输入的关键字发生变化,是指输入的关键字相对于前一次输入的关键字发生变化,当其发生变化时,则触发搜索功能。其中,从空白到存在关键字也算发生变化。
步骤S420,根据该关键字获取自动补全的候选地址集合。
具体地,根据关键字进行搜索,查询到与该关键字部分匹配或完全匹配的所有候选地址,并将所有候选地址加入候选地址集合中。
步骤S430,设置延时预定时间,并开始计时。
因用户在输入地址时,一般会连续地输入信息,若当检测到地址输入栏中关键字相比于前次输入的关键字发生变化时就进行地图展示,会造成不断地调用地理信息服务的应用接口去获取新的候选地址的经纬度和地图频繁刷新,会给用户带来不便,且造成网络资源的浪费,因此设置延时预定时间,检测该预定时间内地址输入栏中关键字没有变化时,才进行地图展示,能节省网络资源。
步骤S440,判断在该延时预定时间内地址输入栏中的关键字是否变化,若是,执行步骤S450,若否,执行步骤S460。
步骤S450,关闭计时,并返回步骤S420。
当判断出地址输入栏中关键字变化时,则关闭计时,重新根据新的关键字获取自动补全的候选地址集合。
步骤S460,判断该候选地址集合中的候选地址是否需要用多个子地图进行展示,若是,执行步骤S470,若否,则执行步骤S480。
当判断出地址输入栏中关键字未变化时,则判断候选地址集合中候选地址是否需用多个子地图进行展示,具体判断同步骤S131至步骤S136所描述。
步骤S470,对该候选地址聚类分割,将该聚类分割后的候选地址在多个子地图上展示。
该步骤具体内容同步骤S301至步骤S308所描述。
步骤480,将该候选地址在单地图上展示。
具体地,当候选地址不需进行多子地图展示时,将其所有候选地址在单地图上展示。
如图10所示,在一个实施例中,一种地理位置搜索系统,包括输入模块10、补全模块20、判断模块30、处理模块40和展示模块50。其中,
输入模块10用于获取地址输入栏中的关键字。具体地,用户通过键盘、按键等在地址输入栏中输入搜索地理位置的关键字,输入模块10获取到该关键字。地址输入栏中输入的关键字发生变化,是指输入的关键字相对于前一次输入的关键字发生变化,当其发生变化时,则触发搜索功能。其中,从空白到存在关键字也算发生变化。
补全模块20用于根据该关键字获取自动补全的候选地址集合。补全模块20根据关键字进行搜索,查询到与该关键字部分匹配或完全匹配的所有候选地址,并将所有候选地址加入候选地址集合中。
判断模块30用于判断该候选地址集合中的候选地址是否需要用多个子地图进行展示。候选地址集合中候选地址需用多个子地图进行展示,则用多个子地图上展示,不需时,则将所有候选地址在单一地图上展示。具体地,可根据候选地址中的地理位置信息来判断是否需要用多个子地图进行展示,如可通过候选地址的经纬度进行判断。其中,子地图是相对于单地图而定义,单地图是指能容纳所有候选地址的一张显示候选地址的地理位置的地图,子地图是指将该单地图所显示的地理位置分成多个区域,每个区域在一张地图上显示,该地图为子地图。
进一步的,在一个实施例中,如图11所示,判断模块30包括坐标获取单元301、区域划定单元303、第一计算单元305和第一判断单元307。其中,
坐标获取单元301用于获取候选地址集合中候选地址的经纬度坐标。坐标获取单元301获取到候选地址集合中所有候选地址的经纬度坐标。
区域划定单元303用于根据候选地址集合中最大经纬度和最小经纬度进行计算,得出容纳所有候选地址的最小矩形区域的宽度和长度。区域划定单元303根据所有候选地址的经纬度坐标中最大经纬度和最小经纬度,确定出容纳所有候选地址的最小矩形区域R的宽度Width和长度Height。
第一计算单元305用于计算该最小矩形区域的面积及最小矩形区域中候选地址的离散度。在一个实施例中,采用如下公式计算出该最小矩形区域R的面积S:
S=Width*Height (1)
在一个实施例中,采用如下公式计算出最小矩形区域中候选地址的离散度:
其中,H(x)表示候选地址的离散度,当H(x)越低时表示离散度越低,反之则越高;N表示候选地址的数量;D表示样本空间的维度,本实施例中,D为2;||xn-xn′||2表示两个地址间欧式距离(若需要更高的精度,可以采用计算球面距离)的平方。
第一判断单元307用于判断是否同时满足该最小矩形区域的面积大于预设的面积阈值且该最小矩形区域中候选地址的离散程度小于预设的离散度阈值,若是,该候选地址集合中的候选地址需要用多个子地图进行展示,若否,则该候选地址集合中的候选地址不需要用多个子地图进行展示。
第一判断单元307判断该最小矩形区域R的面积S大于预设的面积阈值Sthreshold,即S>Sthreshold,若是,则该候选地址的分布范围过大。图4为候选地址的分布范围过大示意图,图4中突出的点为候选地址,如花都区新雅大桥、黄埔立交桥、黄埔大桥等,从图中可看出候选地址分布在广州的花都区、天河区、海珠区、番禹区等,分布范围跨越几个区,分布范围较大。
第一判断单元307在判断出候选该最小矩形区域R的面积S大于预设的面积阈值Sthreshold后,可进一步判断该最小矩形区域R中候选地址的离散度H(X)是否小于预设的离散度阈值Hthreshold,即H(X)<Hthreshold,若是,则候选地址的分布离散度过低。图5为候选地址的分布离散度过低的示意图,图5中突出的点表示候选地址,如天河区中的①,从图中可看出多个突出的点聚集在一起,候选地址的分布离散度较低。
同时满足上述两个条件,即该最小矩形区域的面积大于预设的面积阈值且该最小矩形区域中候选地址的离散度小于预设的离散度阈值时,表示候选地址分布范围过大且候选地址的分布离散度过低,需对候选地址用多个子地图进行展示,若不能同时满足上述两个条件,则不需要对候选地址用多个子地图进行展示。
处理模块40用于在判断模块30判断出该候选地址集合中的候选地址需要用多个子地图进行展示时,对候选地址聚类分割。具体地,处理模块40可采用K-mean聚类法对候选地址聚类分割。其中,K-mean聚类法的基本处理流程如方法中所描述。
进一步的,在一个实施例中,如图12所示,处理模块40包括初始化单元401、分割单元403、第二计算单元405、第二判断单元407、划归单元409、创建单元411和选取模块413。其中,
初始化单元401用于初始化子类集和子类离散度集为空集。在一个实施例中,初始化单元401还可设置子地图数,以限定子地图的数量。
分割单元403用于将该候选地址集合中候选地址按预设的聚类数的个数进行聚类,得到该预设的聚类数的个数的子类。分割单元403将候选地址集合U按预设的聚类数的个数进行聚类,如以聚类数为2进行K-mean聚类,得到两个子类U1和U2。
第二计算单元405用于分别计算每个子类中能容纳该子类中所有候选地址的最小矩形区域的面积和该子类的最小矩形区域中所有候选地址的离散度。第二计算单元405计算子类U1和U2各自的最小矩形区域的面积S1和S2,以及对应子类的最小矩形区域中所有候选地址的离散度L1和L2。
第二判断单元407用于判断每个子类是否同时满足该最小矩形区域的面积大于预设的面积阈值且该最小矩形区域中的所有候选地址的离散度小于预设的离散度阈值的条件,若是,划归单元409用于将满足条件的该子类记录在该子类集中以及将该子类的最小矩形区域中的所有候选地址的离散度记录在该子类离散度集中,若否,创建单元411用于建立子地图,展示模块50还用于将不满足条件的该子类中的所有候选地址在所述建立的子地图上展示。
若第二判断单元407判断得出子类U1的最小矩形区域的面积S1大于预设的面积阈值Sthreshold,且子类U1的最小矩形区域中所有候选地址的离散度小于预设的离散度阈值Hthreshold,则表示子类U1中候选地址分布范围过大且候选地址的分布离散度过低,需对候选地址用多个子地图进行展示,划归单元409将子类U1记录在子类集中,并将子类U1的最小矩形区域中所有候选地址的离散度L1记录在子类离散度集中;若第二判断单元407判断出子类U1不同时满足上述两个条件,则创建单元411建立子地图,展示模块50将子类U1中的所有候选地址显示在该建立的子地图上。此外,若设置了子地图数,则创建单元411还将子地图数减1。
对于子类U2采用同子类U1的处理。
当第二判断单元407判断出该子类集不为空集时,选取单元413用于对该子类离散度集合进行排序,并从排序结果中选取离散度最低的子类,分割单元401还用于将该选取的离散度最低的子类进行聚类分割。处理模块40中的分割单元401、计算单元403、第二计算单元405、第二判断单元407、划归单元409、创建单元411和选取模块413对该最低的子类重新进行聚类分割,处理过程如上述对候选地址集合U处理一样。
在一个实施例中,若设置子地图数,则第二判断单元407在判断出该子类集不为空集后,进一步判断子地图数是否等于1,若是,则创建单元411建立子地图,展示模块50将剩余的候选地址显示在该子地图上。子地图数仅有一个时,需将所有剩余的候选地址在该子地图上展示。
另外,该子类集为空集,则表示没有需要进行继续聚类处理的子类。
在一个实施例中,处理模块40可仅包括分割单元403、第二计算单元405、第二判断单元407和创建单元411。分割单元403用于将该候选地址集合中的候选地址按预设的聚类数的个数进行聚类,得到该预设的聚类数的个数的子类;第二计算单元405用于分别计算每个子类中能容纳该子类中所有候选地址的最小矩形区域的面积和该子类的最小矩形区域中所有候选地址的离散度;第二判断单元407用于判断每个子类是否同时满足该最小矩形区域的面积大于预设的面积阈值且该最小矩形区域中的所有候选地址的离散度小于预设的离散度阈值的条件,若是,分割单元403将满足条件的该子类进行下一次聚类分割,若否,则创建单元411建立子地图,展示模块50还用于将不满足条件的该子类中的所有候选地址在所述建立的子地图上展示。
展示模块50用于将该聚类分割后的候选地址在多个子地图上展示,还用于在判断模块30判断出该候选地址集合中的候选地址不需要用多个子地图进行展示时,将该候选地址在单地图上展示。图6为将候选地址分布范围过大在多子地图上展示的示意图,图中突出圆点即为候选地址,如华景新城酒和家、华景新城等。
如图13所示,进一步的实施例中,上述地理位置搜索系统,除了包括输入模块10、补全模块20、判断模块30、处理模块40和展示模块50,还包括设置模块60、计时模块70、删除模块80和下拉显示模块90。其中,
设置模块60用于设置延时预定时间。设置延时预定时间,检测该预定时间内地址输入栏中关键字没有变化时,才进行地图展示,能节省网络资源。
计时模块70用于开始计时。计时模块70可为定时器,预定时间的倒计时。
输入模块10还用于判断在延时预定时间内地址输入栏中关键字是否变化,若是,则计时模块70关闭计时,补全模块20还用于根据变化后的关键字获取自动补全的候选地址集合,若否,则判断模块30进入判断该候选地址集合中的候选地址是否需要用多个子地图进行展示。当输入模块10判断出地址输入栏中的关键字相比于前次输入的关键字变化时,则计时模块70关闭计时,补全模块20重新根据新的关键字获取自动补全的候选地址集合。
删除模块80用于删除该候选地址集合中的错误地址。删除模块80将候选地址集合中与输入内容匹配差别大的错误地址删除,以保证候选地址的准确。
下拉显示模块90用于在地址输入栏下拉框中显示候选地址。在地址输入栏下拉框中显示候选地址,以供用户选择。
上述地理位置搜索方法及系统,采用地址输入栏中的关键字获取自动补全的候选地址集合,进行判断得出当候选地址集合中候选地址需采用多个子地图进行展示,则采用多个子地图展示候选地址,使得候选地址分布的比较合理,易方便用户区别搜索结果中各候选地址。
另外,设置延时预定时间,当在预定时间内关键字不变时,才进行判断是否需用多个子地图进行展示,减少了因关键字变化频繁而产生的刷新的次数,能节省网络资源;通过候选地址的经纬度确定最小矩形区域,将最小矩形区域的面积与面积阈值比较,且计算候选地址的离散度并与离散度阈值比较,判断是否需用多个子地图展示候选地址,操作简单,且较准确;采用聚类分割划分哪些候选地址在一张子地图上展示,可较准确的将候选地址分布,保证在子地图上候选地址能清楚地展示。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。