CN108268493A - 基于地理位置的最近站点搜索方法及装置 - Google Patents
基于地理位置的最近站点搜索方法及装置 Download PDFInfo
- Publication number
- CN108268493A CN108268493A CN201611260450.XA CN201611260450A CN108268493A CN 108268493 A CN108268493 A CN 108268493A CN 201611260450 A CN201611260450 A CN 201611260450A CN 108268493 A CN108268493 A CN 108268493A
- Authority
- CN
- China
- Prior art keywords
- coordinate
- root node
- website
- node
- whole network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
Abstract
本发明提供一种基于地理位置的最近站点搜索方法及装置,其中,所述方法包括:使用预设二叉树构建算法,构建全网站点的二叉树;接收用户输入的目标地点,使用预设最邻近查找算法,搜索得到与所述目标地点距离最近的最近站点。对于任意经纬度的输入点,若全网站点个数为N,本发明可以在O(logN)的时间复杂度内完成最近邻站点的查找,大幅降低了现有技术计算的复杂度,提升了工作效率,节省了运算时间,且具有普遍适用性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于地理位置的最近站点搜索方法及装置。
背景技术
在无线网络覆盖仿真中,需要找到评估位置附近的近邻站点,然后对附近的近邻站点进行无线信号仿真。在站点规划中,对规划站点进行合理性分析时需要评估规划站点与附近已有站点的最近距离,避免站间距过近的情况出现。上述情况,都涉及给定一个地理位置,然后找到该位置的近邻站点的问题。
目前,基于地理位置的最近站点搜索方法主要有:全网遍历法和网格划分法。
全网遍历法是计算输入地点与全网所有站点的距离,距离最小者即为最近站点,距离计算次数等于全网站点个数。全网遍历法必须计算输入点与全网站点的距离,若全网站点个数为N,则此算法的复杂度为线性复杂度O(N),效率低下。
网格划分法是将全网划分为若干网格,每个网格包括若干站点;首先计算输入点所属网格和邻近网格,然后在所属网格和邻近网格范围内运用全网遍历法得到最近站点,距离计算次数等于所属网格和邻近网格的站点个数。网格划分法的算法性能与网格划分的大小有关,不具有普遍适用性;在所属网格和邻近网格的范围内依然要进行全部站点的遍历,效率较低。因为网格划分法的距离计算次数等于所属网格和邻近网格的站点个数,其算法的复杂度依然为线性复杂度O(N)。
鉴于此,如何提供一种基于地理位置的最近站点搜索方法及装置,以降低现有技术计算的复杂度、提升工作效率、节省运算时间、且具有普遍适用性成为目前需要解决的技术问题。
发明内容
为解决上述的技术问题,本发明提供一种基于地理位置的最近站点搜索方法及装置,大幅降低了现有技术计算的复杂度,提升了工作效率,节省了运算时间,且具有普遍适用性。
第一方面,本发明提供一种基于地理位置的最近站点搜索方法,包括:
使用预设二叉树构建算法,构建全网站点的二叉树;
接收用户输入的目标地点,使用预设最邻近查找算法,搜索得到与所述目标地点距离最近的最近站点。
可选地,所述使用预设二叉树构建算法,构建全网站点的二叉树,包括:
S1、将全网站点的经度等效为二维平面的X坐标,纬度等效为二维平面的Y坐标,计算全网站点的X坐标和Y坐标的方差;
S2、取全网站点的X坐标和Y坐标的方差中较大者的中值作为根节点;
S3、以经过所述根节点的方差较大的维度作为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树;
S4、对于左子树和右子树,若其父节点是以其父节点的X坐标维度作为分割线,则以其Y坐标的中值作为根节点并以该根节点的Y坐标维度作为分割线,若其父节点是以其父节点的Y坐标维度作为分割线,则以其X坐标的中值作为根节点并以该根节点的X坐标维度作为分割线,将除根节点之外的点集划分成左右两个子空间,左子空间的点集构成其根节点的左子树,右子空间的点集构成其根节点的右子树;
S5、返回步骤S4,直至得到全网站点的二叉树。
可选地,所述步骤S2包括:
在全网站点的X坐标的方差大于Y坐标的方差时,取全网站点的X坐标的中值作为根节点的X坐标,从全网站点中得到根节点;
相应地,所述步骤S3具体包括:
以所述根节点的X坐标维度为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树;其中,左子空间中所有站点的X坐标均小于所述根节点的X坐标,右子空间中所有站点的X坐标均大于所述根节点的X坐标。
可选地,所述步骤S2包括:
在全网站点的X坐标的方差小于Y坐标的方差时,取全网站点的Y坐标的中值作为根节点的Y坐标,从全网站点中得到根节点;
相应地,所述步骤S3具体包括:
以所述根节点的Y坐标维度为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树;其中,左子空间中所有站点的Y坐标均小于所述根节点的Y坐标,右子空间中所有站点的Y坐标均大于所述根节点的Y坐标。
可选地,所述使用预设最邻近查找算法,搜索得到与所述目标地点距离最近的最近站点,包括:
从所构建的全网站点的二叉树的根节点开始,对所述目标地点进行二叉树搜索;
对于第一次搜索:
在搜索的同时将搜索路径进行入栈操作,然后执行搜索路径的出栈操作,计算所述目标地点与本次出栈节点的距离,将本次出栈节点设置为当前最近站点,将本次计算的距离设置为当前最近距离;
对于除了第一次搜索之外的其余每一次搜索:
在搜索的同时将搜索路径进行入栈操作,然后执行搜索路径的出栈操作,计算所述目标地点与本次出栈节点的距离;
在本次计算的距离小于当前最近距离时,将当前最近站点替换为本次出栈节点,将当前最近距离替换为本次计算的距离,以及在本次计算的距离大于当前最近距离时,保持当前最近站点和当前最近距离;
以所述目标地点为圆心、当前最近距离为半径作圆,若所作的圆与本次出栈节点的分割线相交,则确定本次出栈节点的左子树可能存在最近站点,对本次出栈节点的左子树的根节点进行下一次搜索;
直至找到叶节点且所述二叉树的所有搜索路径已全部出栈,当前最近站点为与所述目标地点距离最近的最近站点,当前最近距离为所述目标地点与其最近站点的距离。
第二方面,本发明提供一种基于地理位置的最近站点搜索装置,包括:
构建模块,用于使用预设二叉树构建算法,构建全网站点的二叉树;
搜索模块,用于接收用户输入的目标地点,使用预设最邻近查找算法,搜索得到与所述目标地点距离最近的最近站点。
可选地,所述构建模块,包括:
计算单元,用于将全网站点的经度等效为二维平面的X坐标,纬度等效为二维平面的Y坐标,计算全网站点的X坐标和Y坐标的方差;
设置单元,用于取全网站点的X坐标和Y坐标的方差中较大者的中值作为根节点;
第一划分单元,用于以经过所述根节点的方差较大的维度作为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树;
第二划分单元,用于对于左子树和右子树,若其父节点是以其父节点的X坐标维度作为分割线,则以其Y坐标的中值作为根节点并以该根节点的Y坐标维度作为分割线,若其父节点是以其父节点的Y坐标维度作为分割线,则以其X坐标的中值作为根节点并以该根节点的X坐标维度作为分割线,将除根节点之外的点集划分成左右两个子空间,左子空间的点集构成其根节点的左子树,右子空间的点集构成其根节点的右子树;
返回单元,用于返回所述第二划分单元,直至得到全网站点的二叉树。
可选地,所述设置单元,具体用于
在全网站点的X坐标的方差大于Y坐标的方差时,取全网站点的X坐标的中值作为根节点的X坐标,从全网站点中得到根节点;
相应地,所述第一划分单元,具体用于
以所述根节点的X坐标维度为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树;其中,左子空间中所有站点的X坐标均小于所述根节点的X坐标,右子空间中所有站点的X坐标均大于所述根节点的X坐标。
可选地,所述设置单元,具体用于
在全网站点的X坐标的方差小于Y坐标的方差时,取全网站点的Y坐标的中值作为根节点的Y坐标,从全网站点中得到根节点;
相应地,所述第一划分单元,具体用于
以所述根节点的Y坐标维度为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树;其中,左子空间中所有站点的Y坐标均小于所述根节点的Y坐标,右子空间中所有站点的Y坐标均大于所述根节点的Y坐标。
可选地,所述搜索模块,具体用于
接收用户输入的目标地点,从所构建的全网站点的二叉树的根节点开始,对所述目标地点进行二叉树搜索;
对于第一次搜索:
在搜索的同时将搜索路径进行入栈操作,然后执行搜索路径的出栈操作,计算所述目标地点与本次出栈节点的距离,将本次出栈节点设置为当前最近站点,将本次计算的距离设置为当前最近距离;
对于除了第一次搜索之外的其余每一次搜索:
在搜索的同时将搜索路径进行入栈操作,然后执行搜索路径的出栈操作,计算所述目标地点与本次出栈节点的距离;
在本次计算的距离小于当前最近距离时,将当前最近站点替换为本次出栈节点,将当前最近距离替换为本次计算的距离,以及在本次计算的距离大于当前最近距离时,保持当前最近站点和当前最近距离;
以所述目标地点为圆心、当前最近距离为半径作圆,若所作的圆与本次出栈节点的分割线相交,则确定本次出栈节点的左子树可能存在最近站点,对本次出栈节点的左子树的根节点进行下一次搜索;
直至找到叶节点且所述二叉树的所有搜索路径已全部出栈,当前最近站点为与所述目标地点距离最近的最近站点,当前最近距离为所述目标地点与其最近站点的距离。
由上述技术方案可知,本发明的基于地理位置的最近站点搜索方法及装置,通过使用预设二叉树构建算法构建全网站点的二叉树,使用预设最邻近查找算法搜索得到与用户输入的目标地点距离最近的最近站点,对于任意经纬度的输入点,若全网站点个数为N,可以在O(logN)的时间复杂度内完成最近邻站点的查找,大幅降低了现有技术计算的复杂度,提升了工作效率,节省了运算时间,且具有普遍适用性。
附图说明
图1为本发明一实施例提供的基于地理位置的最近站点搜索方法的流程示意图;
图2为本发明实施例提供的使用预设二叉树构建算法对全网站点的点集划分后的举例示意图;
图3为本发明实施例提供的使用预设二叉树构建算法构建的全网站点的二叉树的举例示意图;
图4为本发明一实施例提供的基于地理位置的最近站点搜索装置的结构示意图;
图5为本发明实施例提供的一种电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他的实施例,都属于本发明保护的范围。
图1示出了本发明一实施例提供的基于地理位置的最近站点搜索方法的流程示意图,如图1所示,本实施例的基于地理位置的最近站点搜索方法如下所述。
101、使用预设二叉树构建算法,构建全网站点的二叉树。
在具体应用中,所述步骤101可以包括图中未示出的步骤S1-S5:
S1、将全网站点的经度等效为二维平面的X坐标,纬度等效为二维平面的Y坐标,计算全网站点的X坐标和Y坐标的方差。
S2、取全网站点的X坐标和Y坐标的方差中较大者的中值作为根节点。
具体地,所述步骤S2可以包括:
在全网站点的X坐标的方差大于Y坐标的方差时,取全网站点的X坐标的中值作为根节点的X坐标,从全网站点中得到根节点;
在全网站点的X坐标的方差小于Y坐标的方差时,取全网站点的Y坐标的中值作为根节点的Y坐标,从全网站点中得到根节点。
S3、以经过所述根节点的方差较大的维度作为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树。
具体地,若所述步骤S2具体为:在全网站点的X坐标的方差大于Y坐标的方差时,取全网站点的X坐标的中值作为根节点的X坐标,从全网站点中得到根节点;
相应地,所述步骤S3可具体包括:
以所述根节点的X坐标维度为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树;其中,左子空间中所有站点的X坐标均小于所述根节点的X坐标,右子空间中所有站点的X坐标均大于所述根节点的X坐标。
具体地,若所述步骤S2具体为:在全网站点的X坐标的方差小于Y坐标的方差时,取全网站点的Y坐标的中值作为根节点的Y坐标,从全网站点中得到根节点;
相应地,所述步骤S3可具体包括:
以所述根节点的Y坐标维度为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树;其中,左子空间中所有站点的Y坐标均小于所述根节点的Y坐标,右子空间中所有站点的Y坐标均大于所述根节点的Y坐标。
S4、对于左子树和右子树,若其父节点是以其父节点的X坐标维度作为分割线,则以其Y坐标的中值作为根节点并以该根节点的Y坐标维度作为分割线,若其父节点是以其父节点的Y坐标维度作为分割线,则以其X坐标的中值作为根节点并以该根节点的X坐标维度作为分割线,将除根节点之外的点集划分成左右两个子空间,左子空间的点集构成其根节点的左子树,右子空间的点集构成其根节点的右子树。
S5、返回步骤S4,直至得到全网站点的二叉树。
102、接收用户输入的目标地点,使用预设最邻近查找算法,搜索得到与所述目标地点距离最近的最近站点。
在具体应用中,所述步骤102中的“所述使用预设最邻近查找算法,搜索得到与所述目标地点距离最近的最近站点”,可以具体包括:
从所构建的全网站点的二叉树的根节点开始,对所述目标地点进行二叉树搜索;
对于第一次搜索:
在搜索的同时将搜索路径进行入栈操作,然后执行搜索路径的出栈操作,计算所述目标地点与本次出栈节点的距离,将本次出栈节点设置为当前最近站点,将本次计算的距离设置为当前最近距离;
对于除了第一次搜索之外的其余每一次搜索:
在搜索的同时将搜索路径进行入栈操作,然后执行搜索路径的出栈操作,计算所述目标地点与本次出栈节点的距离;
在本次计算的距离小于当前最近距离时,将当前最近站点替换为本次出栈节点,将当前最近距离替换为本次计算的距离,以及在本次计算的距离大于当前最近距离时,保持当前最近站点和当前最近距离;
以所述目标地点为圆心、当前最近距离为半径作圆,若所作的圆与本次出栈节点的分割线相交,则确定本次出栈节点的左子树可能存在最近站点,对本次出栈节点的左子树的根节点进行下一次搜索;
直至找到叶节点且所述二叉树的所有搜索路径已全部出栈,当前最近站点为与所述目标地点距离最近的最近站点,当前最近距离为所述目标地点与其最近站点的距离。
本实施例的基于地理位置的最近站点搜索方法及装置,通过使用预设二叉树构建算法构建全网站点的二叉树,使用预设最邻近查找算法搜索得到与用户输入的目标地点距离最近的最近站点,对于任意经纬度的输入点,若全网站点个数为N,可以在O(logN)的时间复杂度内完成最近邻站点的查找,大幅降低了现有技术计算的复杂度,提升了工作效率,节省了运算时间,且具有普遍适用性。
下述以图2中的全网站点(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)、用户输入的目标地点(2,4.5)为例对本实施例所述方法进行进一步说明,本实施例的基于地理位置的最近站点搜索方法包括:
101、使用预设二叉树构建算法,构建全网站点的二叉树,具体包括:
将全网站点的经度等效为二维平面的X坐标,纬度等效为二维平面的Y坐标,计算全网站点的X坐标和Y坐标的方差,全网站点的X坐标的方差为6.97,全网站点的Y坐标的方差为5.37;
因为全网站点的X坐标的方差大于Y坐标的方差,分布较离散,所以取全网站点的X坐标的中值作为根节点的X坐标,从全网站点中得到根节点(7,2);
以所述根节点的X坐标维度X=7为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点(7,2)的左子树,右子空间的点集构成所述根节点(7,2)的右子树,其中,左子空间中所有站点的X坐标均小于所述根节点的X坐标,右子空间中所有站点的X坐标均大于所述根节点的X坐标,左子树的点集为(2,3),(4,7),(5,4),右子树的点集为(8,1),(9,6);
对根节点(7,2)的左子树(2,3),(4,7),(5,4),由于该左子树的父节点是以其父节点的X坐标维度作为分割线的,所以该左子树以其Y坐标的中值作为根节点(5,4)并以该根节点(5,4)的Y坐标维度Y=4作为分割线,将该左子树中除根节点(5,4)之外的点集划分成左右两个子空间,左子空间的点集(2,3)构成其根节点(5,4)的左子树,右子空间的点集(4,7)构成其根节点(5,4)的右子树;
对根节点(7,2)的右子树(8,1),(9,6),由于该右子树的父节点是以其父节点的X坐标维度作为分割线的,所以该右子树以其Y坐标的中值作为根节点(9,6)并以该根节点(9,6)的Y坐标维度Y=6作为分割线,将该右子树中除根节点(9,6)之外的点集划分成左右两个子空间,左子空间的点集(8,1)构成其根节点(9,6)的左子树,最终得到如图3所示的全网站点的二叉树。
102、接收用户输入的目标地点,使用预设最邻近查找算法,搜索得到与所述目标地点距离最近的最近站点,具体包括:
接收用户输入的目标地点(2,4.5);
第一次搜索:首先从根节点(7,2)开始进行二叉树搜索,因为根节点(7,2)是以X=7为分割线,而目标地点(2,4.5)的X坐标为2,所以进入左子树找到节点(5,4);因为(5,4)是以Y=4为分割线的,而目标地点(2,4.5)的Y坐标为4.5,所以进入右子树找到节点(4,7),至此,形成搜索路径(7,2)->(5,4)->(4,7),在二叉树搜索的同时将搜索路径(7,2)->(5,4)->(4,7)入栈;执行搜索路径(7,2)->(5,4)->(4,7)的出栈操作,计算目标地点(2,4.5)与出栈节点(4,7)的距离为3.202,因本次为第一次搜索当前最近站点尚未设置,所以将出栈节点(4,7)设置为当前最近站点,3.202设置为当前最近距离;然后因为出栈节点(4,7)没有子树,所以直接跳转到第二次搜索。
第二次搜索:第二次搜索的搜索路径为(7,2)->(5,4),将搜索路径(7,2)->(5,4)入栈;执行搜索路径(7,2)->(5,4)的出栈操作,出栈节点为(5,4),计算目标地点(2,4.5)与出栈节点(5,4)的距离为3.041,由于3.041小于当前最近距离3.202,所以将当前最近站点替换为(5,4),将当前最近距离替换为3.041;以目标地点(2,4.5)为圆心、当前最近距离3.041为半径作圆,发现所作的圆与出栈节点(5,4)的分割线Y=4相交,因此出栈节点(5,4)的左子树可能存在最近站点,对本次出栈节点(5,4)的左子树的根节点(2,3)进行下一次搜索。
第三次搜索:第三次搜索的搜索路径为(7,2)->(2,3),将搜索路径(7,2)->(2,3)入栈;执行搜索路径(7,2)->(2,3)的出栈操作,出栈节点为(2,3),计算目标地点(2,4.5)与出栈节点(2,3)的距离为1.5,由于1.5小于当前最近距离3.041,所以将当前最近站点替换为(2,3),将当前最近距离替换为1.5;然后因为出栈节点(2,3)没有子树,所以直接执行下一次搜索;
第四次搜索:第四次搜索的搜索路径为(7,2),将搜索路径(7,2)入栈;执行搜索路径(7,2)的出栈操作,出栈节点为(7,2),计算目标地点(2,4.5)与出栈节点(7,2)的距离为5.590,由于5.590大于当前最近距离1.5,所以继续保持当前最近站点(2,3)和当前最近距离1.5;以目标地点(2,4.5)为圆心、当前最近距离1.5为半径作圆,发现所作的圆与出栈节点(7,2)的分割线X=7不相交,因此(7,2)的右子树不可能存在更优的最近站点;
至此,搜索路径已全部出栈完毕,当前最近站点为(2,3),当前最近距离为1.5。
本实施例的基于地理位置的最近站点搜索方法及装置,对于任意经纬度的输入点,若全网站点个数为N,可以在O(logN)的时间复杂度内完成最近邻站点的查找,大幅降低了现有技术计算的复杂度,提升了工作效率,节省了运算时间,且具有普遍适用性。
图4示出了本发明一实施例提供的基于地理位置的最近站点搜索装置的结构示意图,如图4所示,本实施例的基于地理位置的最近站点搜索装置,包括:构建模块41和搜索模块42;其中:
所述构建模块41,用于使用预设二叉树构建算法,构建全网站点的二叉树;
所述搜索模块42,用于接收用户输入的目标地点,使用预设最邻近查找算法,搜索得到与所述目标地点距离最近的最近站点。
在具体应用中,所述构建模块41,可以包括图中未示出的:
计算单元,用于将全网站点的经度等效为二维平面的X坐标,纬度等效为二维平面的Y坐标,计算全网站点的X坐标和Y坐标的方差;
设置单元,用于取全网站点的X坐标和Y坐标的方差中较大者的中值作为根节点;
第一划分单元,用于以经过所述根节点的方差较大的维度作为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树;
第二划分单元,用于对于左子树和右子树,若其父节点是以其父节点的X坐标维度作为分割线,则以其Y坐标的中值作为根节点并以该根节点的Y坐标维度作为分割线,若其父节点是以其父节点的Y坐标维度作为分割线,则以其X坐标的中值作为根节点并以该根节点的X坐标维度作为分割线,将除根节点之外的点集划分成左右两个子空间,左子空间的点集构成其根节点的左子树,右子空间的点集构成其根节点的右子树;
返回单元,用于返回所述第二划分单元,直至得到全网站点的二叉树。
进一步地,所述设置单元,可具体用于
在全网站点的X坐标的方差大于Y坐标的方差时,取全网站点的X坐标的中值作为根节点的X坐标,从全网站点中得到根节点;
相应地,所述第一划分单元,可具体用于
以所述根节点的X坐标维度为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树;其中,左子空间中所有站点的X坐标均小于所述根节点的X坐标,右子空间中所有站点的X坐标均大于所述根节点的X坐标。
进一步地,所述设置单元,可具体用于
在全网站点的X坐标的方差小于Y坐标的方差时,取全网站点的Y坐标的中值作为根节点的Y坐标,从全网站点中得到根节点;
相应地,所述第一划分单元,可具体用于
以所述根节点的Y坐标维度为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树;其中,左子空间中所有站点的Y坐标均小于所述根节点的Y坐标,右子空间中所有站点的Y坐标均大于所述根节点的Y坐标。
在具体应用中,所述搜索模块42,可具体用于
接收用户输入的目标地点,从所构建的全网站点的二叉树的根节点开始,对所述目标地点进行二叉树搜索;
对于第一次搜索:
在搜索的同时将搜索路径进行入栈操作,然后执行搜索路径的出栈操作,计算所述目标地点与本次出栈节点的距离,将本次出栈节点设置为当前最近站点,将本次计算的距离设置为当前最近距离;
对于除了第一次搜索之外的其余每一次搜索:
在搜索的同时将搜索路径进行入栈操作,然后执行搜索路径的出栈操作,计算所述目标地点与本次出栈节点的距离;
在本次计算的距离小于当前最近距离时,将当前最近站点替换为本次出栈节点,将当前最近距离替换为本次计算的距离,以及在本次计算的距离大于当前最近距离时,保持当前最近站点和当前最近距离;
以所述目标地点为圆心、当前最近距离为半径作圆,若所作的圆与本次出栈节点的分割线相交,则确定本次出栈节点的左子树可能存在最近站点,对本次出栈节点的左子树的根节点进行下一次搜索;
直至找到叶节点且所述二叉树的所有搜索路径已全部出栈,当前最近站点为与所述目标地点距离最近的最近站点,当前最近距离为所述目标地点与其最近站点的距离。
本实施例的基于地理位置的最近站点搜索方法及装置,对于任意经纬度的输入点,若全网站点个数为N,可以在O(logN)的时间复杂度内完成最近邻站点的查找,大幅降低了现有技术计算的复杂度,提升了工作效率,节省了运算时间,且具有普遍适用性。
本实施例的基于地理位置的最近站点搜索装置,可以用于执行前述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图5示出了本发明实施例提供的一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)51、通信接口(Communications Interface)52、存储器(memory)53和总线54;
其中,所述处理器51,通信接口52,存储器53通过所述总线54完成相互间的通信;
所述通信接口54可以用于与其他电子设备进行信息传输;
所述处理器51可以调用存储器53的逻辑指令,以执行上述各方法实施例所提供的方法,例如包括:使用预设二叉树构建算法,构建全网站点的二叉树;接收用户输入的目标地点,使用预设最邻近查找算法,搜索得到与所述目标地点距离最近的最近站点。
参见图1,本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:使用预设二叉树构建算法,构建全网站点的二叉树;接收用户输入的目标地点,使用预设最邻近查找算法,搜索得到与所述目标地点距离最近的最近站点。
本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:使用预设二叉树构建算法,构建全网站点的二叉树;接收用户输入的目标地点,使用预设最邻近查找算法,搜索得到与所述目标地点距离最近的最近站点。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
本发明的说明书中,说明了大量具体细节。然而能够理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释呈反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。而且,可以单独使用本发明的每个方面和/或实施例或者与一个或更多其他方面和/或其实施例结合使用。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
Claims (10)
1.一种基于地理位置的最近站点搜索方法,其特征在于,包括:
使用预设二叉树构建算法,构建全网站点的二叉树;
接收用户输入的目标地点,使用预设最邻近查找算法,搜索得到与所述目标地点距离最近的最近站点。
2.根据权利要求1所述的方法,其特征在于,所述使用预设二叉树构建算法,构建全网站点的二叉树,包括:
S1、将全网站点的经度等效为二维平面的X坐标,纬度等效为二维平面的Y坐标,计算全网站点的X坐标和Y坐标的方差;
S2、取全网站点的X坐标和Y坐标的方差中较大者的中值作为根节点;
S3、以经过所述根节点的方差较大的维度作为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树;
S4、对于左子树和右子树,若其父节点是以其父节点的X坐标维度作为分割线,则以其Y坐标的中值作为根节点并以该根节点的Y坐标维度作为分割线,若其父节点是以其父节点的Y坐标维度作为分割线,则以其X坐标的中值作为根节点并以该根节点的X坐标维度作为分割线,将除根节点之外的点集划分成左右两个子空间,左子空间的点集构成其根节点的左子树,右子空间的点集构成其根节点的右子树;
S5、返回步骤S4,直至得到全网站点的二叉树。
3.根据权利要求2所述的方法,其特征在于,所述步骤S2包括:
在全网站点的X坐标的方差大于Y坐标的方差时,取全网站点的X坐标的中值作为根节点的X坐标,从全网站点中得到根节点;
相应地,所述步骤S3具体包括:
以所述根节点的X坐标维度为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树;其中,左子空间中所有站点的X坐标均小于所述根节点的X坐标,右子空间中所有站点的X坐标均大于所述根节点的X坐标。
4.根据权利要求2所述的方法,其特征在于,所述步骤S2包括:
在全网站点的X坐标的方差小于Y坐标的方差时,取全网站点的Y坐标的中值作为根节点的Y坐标,从全网站点中得到根节点;
相应地,所述步骤S3具体包括:
以所述根节点的Y坐标维度为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树;其中,左子空间中所有站点的Y坐标均小于所述根节点的Y坐标,右子空间中所有站点的Y坐标均大于所述根节点的Y坐标。
5.根据权利要求1所述的方法,其特征在于,所述使用预设最邻近查找算法,搜索得到与所述目标地点距离最近的最近站点,包括:
从所构建的全网站点的二叉树的根节点开始,对所述目标地点进行二叉树搜索;
对于第一次搜索:
在搜索的同时将搜索路径进行入栈操作,然后执行搜索路径的出栈操作,计算所述目标地点与本次出栈节点的距离,将本次出栈节点设置为当前最近站点,将本次计算的距离设置为当前最近距离;
对于除了第一次搜索之外的其余每一次搜索:
在搜索的同时将搜索路径进行入栈操作,然后执行搜索路径的出栈操作,计算所述目标地点与本次出栈节点的距离;
在本次计算的距离小于当前最近距离时,将当前最近站点替换为本次出栈节点,将当前最近距离替换为本次计算的距离,以及在本次计算的距离大于当前最近距离时,保持当前最近站点和当前最近距离;
以所述目标地点为圆心、当前最近距离为半径作圆,若所作的圆与本次出栈节点的分割线相交,则确定本次出栈节点的左子树可能存在最近站点,对本次出栈节点的左子树的根节点进行下一次搜索;
直至找到叶节点且所述二叉树的所有搜索路径已全部出栈,当前最近站点为与所述目标地点距离最近的最近站点,当前最近距离为所述目标地点与其最近站点的距离。
6.一种基于地理位置的最近站点搜索装置,其特征在于,包括:
构建模块,用于使用预设二叉树构建算法,构建全网站点的二叉树;
搜索模块,用于接收用户输入的目标地点,使用预设最邻近查找算法,搜索得到与所述目标地点距离最近的最近站点。
7.根据权利要求6所述的装置,其特征在于,所述构建模块,包括:
计算单元,用于将全网站点的经度等效为二维平面的X坐标,纬度等效为二维平面的Y坐标,计算全网站点的X坐标和Y坐标的方差;
设置单元,用于取全网站点的X坐标和Y坐标的方差中较大者的中值作为根节点;
第一划分单元,用于以经过所述根节点的方差较大的维度作为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树;
第二划分单元,用于对于左子树和右子树,若其父节点是以其父节点的X坐标维度作为分割线,则以其Y坐标的中值作为根节点并以该根节点的Y坐标维度作为分割线,若其父节点是以其父节点的Y坐标维度作为分割线,则以其X坐标的中值作为根节点并以该根节点的X坐标维度作为分割线,将除根节点之外的点集划分成左右两个子空间,左子空间的点集构成其根节点的左子树,右子空间的点集构成其根节点的右子树;
返回单元,用于返回所述第二划分单元,直至得到全网站点的二叉树。
8.根据权利要求7所述的装置,其特征在于,所述设置单元,具体用于
在全网站点的X坐标的方差大于Y坐标的方差时,取全网站点的X坐标的中值作为根节点的X坐标,从全网站点中得到根节点;
相应地,所述第一划分单元,具体用于
以所述根节点的X坐标维度为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树;其中,左子空间中所有站点的X坐标均小于所述根节点的X坐标,右子空间中所有站点的X坐标均大于所述根节点的X坐标。
9.根据权利要求7所述的装置,其特征在于,所述设置单元,具体用于
在全网站点的X坐标的方差小于Y坐标的方差时,取全网站点的Y坐标的中值作为根节点的Y坐标,从全网站点中得到根节点;
相应地,所述第一划分单元,具体用于
以所述根节点的Y坐标维度为分割线,将全网站点中除根节点之外的点集划分成左右两个子空间,左子空间的点集构成所述根节点的左子树,右子空间的点集构成所述根节点的右子树;其中,左子空间中所有站点的Y坐标均小于所述根节点的Y坐标,右子空间中所有站点的Y坐标均大于所述根节点的Y坐标。
10.根据权利要求6所述的装置,其特征在于,所述搜索模块,具体用于
接收用户输入的目标地点,从所构建的全网站点的二叉树的根节点开始,对所述目标地点进行二叉树搜索;
对于第一次搜索:
在搜索的同时将搜索路径进行入栈操作,然后执行搜索路径的出栈操作,计算所述目标地点与本次出栈节点的距离,将本次出栈节点设置为当前最近站点,将本次计算的距离设置为当前最近距离;
对于除了第一次搜索之外的其余每一次搜索:
在搜索的同时将搜索路径进行入栈操作,然后执行搜索路径的出栈操作,计算所述目标地点与本次出栈节点的距离;
在本次计算的距离小于当前最近距离时,将当前最近站点替换为本次出栈节点,将当前最近距离替换为本次计算的距离,以及在本次计算的距离大于当前最近距离时,保持当前最近站点和当前最近距离;
以所述目标地点为圆心、当前最近距离为半径作圆,若所作的圆与本次出栈节点的分割线相交,则确定本次出栈节点的左子树可能存在最近站点,对本次出栈节点的左子树的根节点进行下一次搜索;
直至找到叶节点且所述二叉树的所有搜索路径已全部出栈,当前最近站点为与所述目标地点距离最近的最近站点,当前最近距离为所述目标地点与其最近站点的距离。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611260450.XA CN108268493A (zh) | 2016-12-30 | 2016-12-30 | 基于地理位置的最近站点搜索方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611260450.XA CN108268493A (zh) | 2016-12-30 | 2016-12-30 | 基于地理位置的最近站点搜索方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108268493A true CN108268493A (zh) | 2018-07-10 |
Family
ID=62754986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611260450.XA Pending CN108268493A (zh) | 2016-12-30 | 2016-12-30 | 基于地理位置的最近站点搜索方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108268493A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109741227A (zh) * | 2019-01-07 | 2019-05-10 | 巩志远 | 一种基于最近邻算法预测人房一致性处理方法及系统 |
CN111159187A (zh) * | 2019-12-27 | 2020-05-15 | 北京奇艺世纪科技有限公司 | 二维查询方法、装置、终端设备及计算机可读存储介质 |
CN111915095A (zh) * | 2020-08-12 | 2020-11-10 | 华侨大学 | 一种基于三叉树搜索的客运线路推荐方法、装置及设备 |
CN112418535A (zh) * | 2020-11-27 | 2021-02-26 | 福建诺诚数字科技有限公司 | 基于二叉树的校车调度规划方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279551A (zh) * | 2013-06-06 | 2013-09-04 | 浙江大学 | 一种基于欧氏距离的高维数据准确近邻快速检索方法 |
CN103777196A (zh) * | 2014-01-03 | 2014-05-07 | 西安天和防务技术股份有限公司 | 基于地理信息的地面目标距离单站测量方法及其测量系统 |
US8762493B1 (en) * | 2006-06-22 | 2014-06-24 | Google Inc. | Hierarchical spatial data structure and 3D index data versioning for generating packet data |
CN104167021A (zh) * | 2014-07-31 | 2014-11-26 | 北京大学 | 一种基于地球空间立体剖分的空间目标索引方法 |
CN104185191A (zh) * | 2014-08-26 | 2014-12-03 | 南京邮电大学 | 基于多重数据收集二叉树的无线传感网数据收集方法 |
CN104700398A (zh) * | 2014-12-31 | 2015-06-10 | 西安理工大学 | 一种点云场景物体提取方法 |
-
2016
- 2016-12-30 CN CN201611260450.XA patent/CN108268493A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8762493B1 (en) * | 2006-06-22 | 2014-06-24 | Google Inc. | Hierarchical spatial data structure and 3D index data versioning for generating packet data |
CN103279551A (zh) * | 2013-06-06 | 2013-09-04 | 浙江大学 | 一种基于欧氏距离的高维数据准确近邻快速检索方法 |
CN103777196A (zh) * | 2014-01-03 | 2014-05-07 | 西安天和防务技术股份有限公司 | 基于地理信息的地面目标距离单站测量方法及其测量系统 |
CN104167021A (zh) * | 2014-07-31 | 2014-11-26 | 北京大学 | 一种基于地球空间立体剖分的空间目标索引方法 |
CN104185191A (zh) * | 2014-08-26 | 2014-12-03 | 南京邮电大学 | 基于多重数据收集二叉树的无线传感网数据收集方法 |
CN104700398A (zh) * | 2014-12-31 | 2015-06-10 | 西安理工大学 | 一种点云场景物体提取方法 |
Non-Patent Citations (1)
Title |
---|
CDA数据分析师: "K邻近算法基础:KD树的操作", 《CDA数据分析师》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109741227A (zh) * | 2019-01-07 | 2019-05-10 | 巩志远 | 一种基于最近邻算法预测人房一致性处理方法及系统 |
CN109741227B (zh) * | 2019-01-07 | 2020-12-08 | 巩志远 | 一种基于最近邻算法预测人房一致性处理方法及系统 |
CN111159187A (zh) * | 2019-12-27 | 2020-05-15 | 北京奇艺世纪科技有限公司 | 二维查询方法、装置、终端设备及计算机可读存储介质 |
CN111915095A (zh) * | 2020-08-12 | 2020-11-10 | 华侨大学 | 一种基于三叉树搜索的客运线路推荐方法、装置及设备 |
CN112418535A (zh) * | 2020-11-27 | 2021-02-26 | 福建诺诚数字科技有限公司 | 基于二叉树的校车调度规划方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106964156B (zh) | 一种寻路方法以及装置 | |
CN105933294B (zh) | 网络用户定位方法、装置及终端 | |
CN108268493A (zh) | 基于地理位置的最近站点搜索方法及装置 | |
US8626444B2 (en) | Safety based road map navigation | |
CN104567894B (zh) | 用于提供地图数据的装置和方法及其系统 | |
Xuan et al. | Voronoi-based multi-level range search in mobile navigation | |
PH12014501098B1 (en) | Method and server for searching for nearby user in social networking services | |
CN108645411A (zh) | 基于粒子群算法的机器人路径规划方法、装置及终端设备 | |
CN104298541A (zh) | 云存储系统的数据分布算法及其装置 | |
CN107563549A (zh) | 一种基于bim模型的逃生路径生成方法、装置及设备 | |
CN105491529B (zh) | 移动终端位置数据的内存映射处理方法及大数据平台 | |
CN104239453B (zh) | 数据处理方法及装置 | |
CN106294421A (zh) | 一种数据写入、读取方法及装置 | |
JP7096495B2 (ja) | 置局設計方法、置局設計装置、及びプログラム | |
CN108984741A (zh) | 一种地图生成方法及装置、机器人和计算机可读存储介质 | |
CN105338537B (zh) | 一种新增基站站址共享分析的方法及终端 | |
CN103034267B (zh) | 用于控制设施装置的设备和方法 | |
CN104268243B (zh) | 一种位置数据处理方法及装置 | |
EP3659276B1 (en) | Method and apparatus for analyzing communication environments and designing networks in consideration of trees | |
CN103712628A (zh) | 导航路径描绘方法和终端 | |
CN109558518A (zh) | 一种确定社交网络中社区发现的方法、装置及存储介质 | |
EP3509339B1 (en) | Ap placement | |
CN108270672A (zh) | 一种计算线路路由的方法及装置 | |
US20220295293A1 (en) | Station placement designing method and station placement designing apparatus | |
CN108882165B (zh) | 一种导航方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180710 |