一种基于地理位置的搜索方法与流程

文档序号:11774599阅读:1399来源:国知局
一种基于地理位置的搜索方法与流程

本发明涉及计算机技术领域,尤其涉及一种基于地理位置的搜索方法。



背景技术:

传统的方法对要搜索的数据项进行逐个计算,判断数据地理位置是否在搜索范围内,如果数据量越大,那么计算量就会越大,效率也会越低下。



技术实现要素:

为了解决上述技术问题,本发明的目的是提供一种能减少计算量,且能提高搜索效率的一种基于地理位置的搜索方法。

本发明所采取的技术方案是:

一种基于地理位置的搜索方法,包括数据索引建立步骤和数据检索步骤;

所述数据索引建立步骤具体包括:

采集地理位置数据;

对平面地图按照距离进行分层网格化处理;

将采集的地理位置数据归属到对应的分层网格中;

对分层网格化后的地理位置数据建立索引。

所述数据检索步骤具体包括:

判断搜索范围所属的层级网格;

根据搜索范围所属的层级网格提取对应的地理位置数据,并在提取地理位置数据的过程中过滤不在搜索范围内的地理位置数据。

作为所述的一种基于地理位置的搜索方法的进一步改进,所述的对平面地图按照距离进行分层网格化处理,这一步骤具体包括:

按照距离对平面地图进行网格化分层,得到分层网格;

对得到的分层网格进行编码,得到网格编码。

作为所述的一种基于地理位置的搜索方法的进一步改进,所述网格化分层处理中的分层公式为:

grid(k,n)=d*10k*(n+1);

grid(k,n)表示对应分层的网格尺寸,d表示最小一级的网格边长基数;k和n表示网格边长步进大小。

作为所述的一种基于地理位置的搜索方法的进一步改进,所述的将采集的地理位置数据归属到对应的分层网格中,这一步骤具体为:

根据采集到地理位置数据的经纬度,记录地理位置数据中每个数据点在每个层所属的网格编码。

作为所述的一种基于地理位置的搜索方法的进一步改进,所述的对分层网格化后的地理位置数据建立索引,这一步骤具体为:

利用全文检索引擎技术,针对地理位置数据中的数据点的网格编号和所有归属分层网格编码建立索引。

作为所述的一种基于地理位置的搜索方法的进一步改进,所述的判断搜索范围所属的层级网格,这一步骤具体为:

通过搜索范围的半径来计算所属的层级网格,其具体计算公式为:

k=floor(log(r/d));

n=floor(r/(d*10k));

其中,d表示最小一级的网格边长基数,r表示搜索范围的半径,k和n表示网格边长步进大小。

作为所述的一种基于地理位置的搜索方法的进一步改进,所述的根据搜索范围所属的层级网格提取对应的地理位置数据,这一步骤具体包括:

判断搜索范围的中心点所属的网格编码;

通过搜索范围的半径,获取搜索范围内的所有网格编码;

根据获取的网格编码,提取归属于这些网格编码中的数据项。

作为所述的一种基于地理位置的搜索方法的进一步改进,所述的中心点所属的网格编码的网格纵横编号的计算公式为:

x=floor((lng-lng0)/[d*10k*(n+1)]);

y=floor((lat-lat0)/[d*10k*(n+1)]);

其中,d表示最小一级的网格边长基数;k和n表示网格边长步进大小,所属网格为t[kn]x[x]y[y],平面地图的左上角原点坐标为(lng0,lat0),搜索范围的中心点坐标为(lng,lat)。

本发明的有益效果是:

本发明一种基于地理位置的搜索方法先是通过采用距离分层网格化方法对地图进行多层网格化处理,然后在搜索数据时,仅提取与之所属的层级网格的地理数据,从而能极大的减少计算量,大大提升搜索速度,方便快捷。

附图说明

下面结合附图对本发明的具体实施方式作进一步说明:

图1是本发明一种基于地理位置的搜索方法中数据索引建立的步骤流程图;

图2是本发明一种基于地理位置的搜索方法中数据检索的步骤流程图。

具体实施方式

参考图1和图2,本发明一种基于地理位置的搜索方法,包括数据索引建立步骤和数据检索步骤;

所述数据索引建立步骤具体包括:

采集地理位置数据;

对平面地图按照距离进行分层网格化处理;

将采集的地理位置数据归属到对应的分层网格中;

对分层网格化后的地理位置数据建立索引。

所述数据检索步骤具体包括:

判断搜索范围所属的层级网格;

根据搜索范围所属的层级网格提取对应的地理位置数据,并在提取地理位置数据的过程中过滤不在搜索范围内的地理位置数据。

进一步作为优选的实施方式,所述的对平面地图按照距离进行分层网格化处理,这一步骤具体包括:

按照距离对平面地图进行网格化分层,得到分层网格;

对得到的分层网格进行编码,得到网格编码。

进一步作为优选的实施方式,所述网格化分层处理中的分层公式为:

grid(k,n)=d*10k*(n+1);

grid(k,n)表示对应分层的网格尺寸,d表示最小一级的网格边长基数;k和n表示网格边长步进大小。

进一步作为优选的实施方式,所述的将采集的地理位置数据归属到对应的分层网格中,这一步骤具体为:

根据采集到地理位置数据的经纬度,记录地理位置数据中每个数据点在每个层所属的网格编码。

进一步作为优选的实施方式,所述的对分层网格化后的地理位置数据建立索引,这一步骤具体为:

利用全文检索引擎技术,针对地理位置数据中的数据点的网格编号和所有归属分层网格编码建立索引。

进一步作为优选的实施方式,所述的判断搜索范围所属的层级网格,这一步骤具体为:

通过搜索范围的半径来计算所属的层级网格,其具体计算公式为:

k=floor(log(r/d));

n=floor(r/(d*10k));

其中,d表示最小一级的网格边长基数,r表示搜索范围的半径,k和n表示网格边长步进大小。

进一步作为优选的实施方式,所述的根据搜索范围所属的层级网格提取对应的地理位置数据,这一步骤具体包括:

判断搜索范围的中心点所属的网格编码;

通过搜索范围的半径,获取搜索范围内的所有网格编码;

根据获取的网格编码,提取归属于这些网格编码中的数据项。

进一步作为优选的实施方式,所述的中心点所属的网格编码的网格纵横编号的计算公式为:

x=floor((lng-lng0)/[d*10k*(n+1)]);

y=floor((lat-lat0)/[d*10k*(n+1)]);

其中,d表示最小一级的网格边长基数;k和n表示网格边长步进大小,所属网格为t[kn]x[x]y[y],平面地图的左上角原点坐标为(lng0,lat0),搜索范围的中心点坐标为(lng,lat)。

本发明的具体实施例如下:

s1、采集地理位置数据;

s2、按照距离对平面地图进行网格化分层,得到分层网格;

所述网格化分层处理中的分层公式为:

grid(k,n)=d*10k*(n+1);

grid(k,n)表示对应分层的网格尺寸,d表示最小一级的网格边长基数;k和n表示网格边长步进大小;

k的取值范围通常在0-3;n的取值范围通常在0-8;

如d等于100,则第一层grid(0,0)将平面地图分割为100*100米的小网格,第二层grid(0,1)将平面地图分割为200*200米的小网格,以此类推,分层至grid(3,8)。可以将平面地图从百米分层至10万米分层,分36层。每层网格数以覆盖整个地图为止,这样整个地图的经纬度将在每层的网格中体现。网格数计算公式为:c=s/grid(k,n)2;

s3、对得到的分层网格进行编码,得到网格编码;

本实施例中,主要按照层级和二维坐标系原理,来对网格进行编码,如第1层第一个网格编码为t00x0y0;第二个网格编码为t00x1y0;第2层第一个网格编码为t01x0y0;第二个网格编码为t01x1y0;以此类推对所有层级的网格进行唯一编码;

s4、根据采集到地理位置数据的经纬度,记录地理位置数据中每个数据点在每个层所属的网格编码;

s5、利用全文检索引擎技术,针对地理位置数据中的数据点的网格编号和所有归属分层网格编码建立索引。

s6、判断搜索范围所属的层级网格;

通过搜索范围的半径来计算所属的层级网格,其具体计算公式为:

k=floor(log(r/d));

n=floor(r/(d*10k));

其中,d表示最小一级的网格边长基数,r表示搜索范围的半径,k和n表示网格边长步进大小;

如搜索半径为140米,d=100米,则k=0,n=0;所属图层即为t00;

如搜索半径为540米,d=100米,则k=0,n=5;所属图层即为t05;

如搜索半径为1400米,d=100米,则k=1,n=0;所属图层即为t10;

s6、判断搜索范围的中心点所属的网格编码;

所述的中心点所属的网格编码的网格纵横编号的计算公式为:

x=floor((lng-lng0)/[d*10k*(n+1)]);

y=floor((lat-lat0)/[d*10k*(n+1)]);

其中,d表示最小一级的网格边长基数;k和n表示网格边长步进大小,所属网格为t[kn]x[x]y[y],平面地图的左上角原点坐标为(lng0,lat0),搜索范围的中心点坐标为(lng,lat);

s7、通过搜索范围的半径,获取搜索范围内的所有网格编码;

s8、根据获取的网格编码,提取归属于这些网格编码中的数据项。

s9、逐一计算所提取的数据与中心点间的距离,如大于搜索半径则认为超出搜索范围。

从上述内容可知,本发明一种基于地理位置的搜索方法先是通过采用距离分层网格化方法对地图进行多层网格化处理,然后在搜索数据时,仅提取与之所属的层级网格的地理数据,从而能极大的减少计算量,大大提升搜索速度,方便快捷。

以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

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