CN103383682B - 一种地理编码方法、位置查询系统及方法 - Google Patents
一种地理编码方法、位置查询系统及方法 Download PDFInfo
- Publication number
- CN103383682B CN103383682B CN201210130908.5A CN201210130908A CN103383682B CN 103383682 B CN103383682 B CN 103383682B CN 201210130908 A CN201210130908 A CN 201210130908A CN 103383682 B CN103383682 B CN 103383682B
- Authority
- CN
- China
- Prior art keywords
- geocoding
- precision
- encoding
- geographic location
- boundary marking
- 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.)
- Expired - Fee Related
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02A—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
- Y02A90/00—Technologies having an indirect contribution to adaptation to climate change
- Y02A90/10—Information and communication technologies [ICT] supporting adaptation to climate change, e.g. for weather forecasting or climate simulation
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种地理编码方法,包括:a.确定地理位置;b.确定第i 编码精度;c.进行第i种划分,将地球表面划分成多个子区域,并进行编号,对每个子区域继续划分编号,直至划分出的每个子区域与第i编码精度相关;d.获取指定地理位置落入的相应子区域的编号并判断是否落在相应子区域的边界区域,编码得到一维的第i地理编码和第i边界标识;b~d重复N次;e.组合所述N个地理编码和边界标识。本发明还公开了一种采用所述地理编码方法的位置查询系统和方法。采用本发明,可以方便快捷地实现任意指定位置的任意指定范围和附近位置的近似查询,适合于高速、海量的位置匹配近似查询。
Description
技术领域
本发明涉及位置服务领域,特别地涉及一种地理编码方法、位置查询系统及方法。
背景技术
位置服务(Location Based Services,LBS)指的是通过移动终端、卫星和移动网络的配合,确定用户的实际地理位置,从而为用户提供与位置相关的服务信息。地理编码(Geo-coding)又称地址匹配,是为识别点、线、面的位置和属性而设置的编码,它将全部实体按照预先拟定的分类系统,选择最适宜的量化方法,按实体的属性特征和集合坐标的数据结构记录在计算机的储存设备上。在位置服务中,地理编码的应用非常广泛,可用于空间索引、可进行查询排序统计、可作为URLs、可在地图中显示、还可识别信息中所包含的模式。目前常用的GIS软件和空间数据库都具备地理编码功能,例如,ArcGIS的Geocoding和MapInfo的MapMarker等。
geohash是一种地理编码,它把二维的经纬度编码成一维的字符串。其思想为先将地球看成一个二维平面,将二维平面坐标均分为4格,按照顺序进行编号,之后再对每个子格以同样的方式进行划分,得到另一编号,一直按照这个规则划分下去,最终编号越来越多,而子格越来越小,直到能表达坐标所需要的精度为止。而在划分之中得到的每个编号对应一维坐标之中的一段,这些编号最后可以编码成一个字符串。例如,上海新天地(31.21980 121.47516)的编码是wtw3s5rs82。geohash有以下几个特点:首先,geohash用一个字符串表示经度和纬度两个坐标,只需在一列上应用索引即可。其次,geohash表示的并不是一个点,而是一个矩形区域。例如编码wtw3s5rs82s,它表示的是一个矩形区域。第三,编码的前缀可以表示更大的区域。例如编码wtw3s5rs82,它的前缀wtw3s5rs8表示包含编码wtw3s5rs82在内的更大范围。NoSQL数据库MongoDB利用geohash进行地理位置索引,这也是全球流行的LBS服务Foursquare选择MongoDB的原因之一。
但是,geohash也存在一些问题和限制:
在位置服务中,附近位置的查询往往对精确度有要求,但要求不严格,例如,搜索附近200米内的目标,搜到的目标实际距离为150米或220米对用户来说并没有多大区别,搜到的目标数多几个或少几个对用户来说也没多大问题,因此大多采用近似查询。由于geohash的网格是4分的,各次划分间子格的边长呈2倍关系,跨度很大(例如,纬度第12~16次划分,子格边长分别为0.02197、0.01099、0.00549、0.00275、0.00137、0.00069度,这里保留5位小数),虽然利用前缀匹配可以进行附近位置的近似查询,但却无法直接实现指定范围(例如,100米内、200米内、800米内,近似10000米/度)的近似查询。目前的解决方法是先指定一个深度,然后将指定范围所覆盖的所有子格全部找出来,再逐个在这些子格内查找,但这增加了近似查询的复杂性;深度越深,查询越精确,查询的复杂性也越高。
根据geohash,赤道和本初子午线两侧的位置由于从一开始就处于不同的子格,因此即使两个位置很近,编码及前缀也完全不同,利用前缀匹配进行附近位置的近似查询无法查到。同样是因为划分问题,处于网格边界两侧的位置,即使两个位置很近,编码也不同,利用前缀匹配进行附近位置的近似查询不一定查到。目前的解决方法是对当前子格周边8个子格都进行计算,但这增加了近似查询的复杂性。
发明内容
有鉴于此,本发明的目的是提供一种地理编码方法和采用该地理编码方法的位置查询系统和方法,其可以方便快捷地实现任意指定位置的任意指定范围和附近位置的近似查询,并改善赤道/本初子午线问题、边界问题。
为达到上述目的,本发明采用如下的技术方案:
一种地理编码方法,所述方法包括:
a.确定地理位置;
b.确定第i 编码精度;
c.进行第i种划分,将地球表面划分成多个子区域,并进行编号,对每个子区域继续划分编号,直至划分出的每个子区域与第i编码精度相关;
d.获取指定地理位置落入的相应子区域的编号并判断是否落在相应子区域的边界区域,编码得到一维的第i地理编码和第i边界标识;
b~d重复N次;
e.组合所述N个地理编码和边界标识;
其中,N为大于零的整数,i为1~N的整数。
作为本发明的进一步改进,所述N种划分方式为:
将地球表面近似成一个二维平面;将二维平面进行第i种错位,再进行首次网格划分,并进行编号,之后对划分出的每个子格递归进行:第i种错位和网格划分,使得每个网格边长为其每个子格边长的m倍,并进行另一编号,直至划分出的每个子格边长近似等于第i编码精度;对各次划分,获取指定地理位置落入的子格的编号并判断是否落在子格的边界区域,对所得编号、边界标识进行压缩编码,得到一维的第i地理编码和边界标识;
其中,N为大于零的整数,i为1~N的整数,m为2~10的整数。
作为本发明的进一步改进,所述对所得编号进行压缩编码的方式为:首次网格划分,经度、纬度编号各转化为一个字符,之后网格划分,经度、纬度编号合并转化为字符;所述对所得边界标识进行压缩编码的方式为:将各次边界标识依次按位拼接转化为字符。
作为本发明的进一步改进,所述步骤b前进一步包括步骤:确定地区修正因子,根据地区修正因子调整编码精度。
一种位置查询系统,包括:输入模块,用于获取指定地理位置和查询范围;输出模块,用于给出指定地理位置和查询范围的查询结果;所述系统进一步包括:
编码模块,用于采用所述地理编码方法生成指定地理位置的所需编码精度的地理编码和边界标识;
数据存储模块,用于存储各地理位置的所需各编码精度的地理编码、边界标识和相关信息;
查询匹配模块,用于根据指定查询范围、边界标识确定查找的相应编码精度和地理编码,在数据存储模块中查找与指定地理位置同一编码精度的地理编码相同或相似的所有其它地理位置。
作为本发明的进一步改进,所述位置查询系统包含于位置匹配系统、提供基于位置的服务的系统、地理信息系统(GIS)或数据库系统。
作为本发明的进一步改进,所述查找采用对地理编码HASH、快速前缀匹配。
作为本发明的进一步改进,所述查找的相应编码精度是一个或多个编码精度。
一种位置查询方法,所述方法包括:
a.采用所述地理编码方法生成各地理位置的所需各编码精度的地理编码和边界标识并存储;
b.获取指定地理位置和查询范围;
c.根据指定地理位置和查询范围获取相应编码精度的地理编码和边界标识;
d.根据指定查询范围和边界标识确定查找的相应编码精度;
e.查找与指定地理位置同一编码精度的地理编码相同或相似的所有其它地理位置;
f.给出指定地理位置和查询范围的查询结果。
作为本发明的进一步改进,所述步骤e中的查找采用对地理编码HASH、快速前缀匹配。
一种位置查询方法,所述方法包括:
a.采用所述地理编码方法生成各地理位置的所需各编码精度的地理编码和边界标识并存储;
b.获取指定地理位置;
c.根据指定地理位置获取相应编码精度的地理编码和边界标识;
d.根据指定边界标识确定查找的相应编码精度;
e.查找与指定地理位置同一编码精度的地理编码相同或相似的所有其它地理位置;
f.给出指定地理位置的查询结果。
作为本发明的进一步改进,所述步骤e中的查找采用对地理编码HASH、快速前缀匹配。
从本发明的技术方案可以看出,根据编码精度进行区域划分,使得每个子区域包含可用距离信息,同一种划分不同划分深度间包含的距离信息成倍数/函数关系,且得到的是一组不同编码精度的一维地理编码和边界标识,通过边界标识选择最优的地理编码进行查询,并增加地区修正因子消除地区误差,从而可以方便快捷地实现任意指定位置的任意指定范围和附近位置的近似查询。同时,由于采用不同编码精度多种区域划分,不同种划分的区域边界不重合,阻断了赤道/本初子午线问题、边界问题的传递,在一种划分下查询不到的位置,在其它种划分下可以查询到,根据边界标识选择最优的地理编码进行查询,从而改善了赤道/本初子午线问题、边界问题。
本发明的有益效果是,由于将二维的经纬度坐标压缩编码成一组一维的、尽量短的、包含可用距离信息的、前缀表示更大区域的、边界不重合的、伴有边界标识的位置字符串,可对位置字符串直接进行HASH、快速前缀匹配,在对精度要求不高、对实时性要求较高的情况下,可将任意指定位置的任意指定范围和附近位置的查询中的距离计算/判定直接近似转化为相应编码精度的位置字符串HASH匹配、快速前缀匹配,以紧凑空间换时间,从而实现高速、海量的位置匹配近似查询。
附图说明
图1是根据本发明的位置编码方法的流程示意图;
图2是根据本发明的位置编码方法的划分优选实施方式的0.00001度编码精度的网格划分示意图;
图3是根据本发明的位置编码方法的划分优选实施方式的0.00002度编码精度的网格划分示意图;
图4是根据本发明的位置查询系统的结构示意图;
图5是根据本发明的位置查询方法的流程示意图;
图6是根据本发明的另一位置查询方法的流程示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
图1是根据本发明的位置编码方法的流程示意图。如图1所示,根据本发明的位置编码方法,包括如下步骤:
步骤11,确定地理位置,所述地理位置通常以double类型的经纬度表示,也可是其它形式的表示,可从信息或网页中分离/提取,也可由用户指定;
步骤12,确定第i 编码精度;
步骤13,进行第i划分,将地球表面划分成多个子区域,并进行编号,对每个子区域继续划分编号,直至划分出的每个子区域与第i编码精度相关;
步骤14,获取指定地理位置落入的相应子区域的编号并判断是否落在相应子区域的边界区域,编码得到一维的第i地理编码和第i边界标识;
将步骤13~14重复N次,每次采用不同精度和不同划分,使得划分的区域边界不重合;
步骤15,组合所述N个地理编码和边界标识,并进行存储,可将N个边界标识压缩拼接;
其中,N为大于零的整数,i为1~N的整数。
在本发明中,步骤12,众所周知,对于两个地理位置,在纬度相等的情况下经度每隔0.00001度,距离相差约1米;每隔0.0001度,距离相差约10米;每隔0.001度,距离相差约100米;每隔0.01度,距离相差约1000米;每隔0.1度,距离相差约10000米;在经度相等的情况下纬度每隔0.00001度,距离相差约1.1米;每隔0.0001度,距离相差约11米;每隔0.001度,距离相差约111米;每隔0.01度,距离相差约1113米;每隔0.1度,距离相差约11132米;各经度圈大致相等,各纬度圈不等。在精度要求不高的情况下,可以近似认为100000*β米/度,其中,β为地区修正因子,用于修正不同地区的误差,可以按照时区、国家、城市等进行修正。为了方便直接进行指定范围的近似查询,需要根据查询范围确定相应的编码精度。例如:进行100米范围内的近似查询,将地理编码精确到0.002度,即该地理编码可以有200米范围的误差,其实际表示一个200米范围的圆形区域,则在该区域内的任意两个地理位置距离都在200米内,在该区域内的任意地理位置与该区域中心的距离都在100米内,进一步可将该圆形区域近似为外接或内接矩形区域。根据本发明,可以生成所有编码精度的地理编码,但在实践中,根据采用所述地理编码方法的系统/方法实际可能查询的范围选择一个合适的编码精度组合,以减少无用地理编码对存储空间的占用和对更新性能的影响。
在本发明中,步骤13所述划分可采用多种方式,例如直接对球面进行划分,将地球表面近似成二维平面再进行划分,可以采用方形、矩形、圆形、六边形、多边形、蜂窝等等。另一方面,通过对每个子区域继续划分,使得不同划分深度间子区域成倍数/函数关系,并使子区域快速达到与编码精度相关,从而获得尽量短的地理编码。所述子区域与编码精度相关包括边长/半径/对角线等于编码精度、边长/半径/对角线近似等于编码精度、边长/半径/对角线/周长与编码精度成倍数关系、边长/半径/对角线/面积与编码精度成函数关系等等,从而可以直接推导出区域内任意位置间的最大距离信息。
假设地区修正因子β=1,则近似认为100000米/度。优选地,在步骤13,采用如下网格划分方式: 将地球表面近似成一个二维平面(-180~180,-90~90);根据0.00001*j度编码精度,将二维坐标平面原点移至(-Xjk,-Yjk),一侧偏移溢出的部分循环移入另一侧,经度、纬度首次分别按(LNGj,LATj)等份进行网格划分,最后一格不足则补足,按照顺序进行编号,同一网格对溢出部分和未溢出部分经度采用相同编号、纬度采用不同编号;之后对划分出的每个子格递归进行:原点移至(-Xjk,-Yjk),一侧偏移溢出的部分循环移入另一侧,经度、纬度再分别按10等份进行网格划分,每次按照顺序进行另一编号,同一网格对溢出部分和未溢出部分采用不同编号,直至划分出的每个子格边长近似等于编码精度0.00001*j度;
或者,将二维坐标平面(-180~180,-90~90)经度、纬度首次分别按(LNGj,LATj)等份进行网格划分,最后一格不足则补足,按照顺序进行编号;之后对划分出的每个子格递归进行:经度、纬度分别按10等份进行网格划分,每次按照顺序进行另一编号,直至划分出的每个子格边长近似等于编码精度0.00001*j度;将指定地理位置逐次偏移(Xjk,Yjk),若一侧溢出网格则循环落入另一侧网格,同一首次划分网格对溢出和未溢出落入的地理位置经度采用相同编号、纬度采用不同编号,之后划分网格对溢出和未溢出落入的地理位置采用不同编号;
其中,(Xjk,Yjk) = (-5 *(j-1) /10^(k-1),-5(j-1)/10^(k-1)),k为大于1的整数、表示同一划分的划分深度;(LNGj,LATj)= {(36,18)、(18,9)、(12,6)、(9,4.5)、(7.2,3.6)、(6,3)、(5.14,2.57)、(4.5,2.25)、(4,2)};j为1~9的整数、表示不同种划分次数;可能得到的所有编码精度如表1(单位:度)所示:
k=1 | k=2 | k=3 | k=4 | k=5 | k=6 | k=7 | k=… | |
j=1 | 10 | 1 | 0.1 | 0.01 | 0.001 | 0.0001 | 0.00001 | … |
j=2 | 20 | 2 | 0.2 | 0.02 | 0.002 | 0.0002 | 0.00002 | … |
j=3 | 30 | 3 | 0.3 | 0.03 | 0.003 | 0.0003 | 0.00003 | … |
j=4 | 40 | 4 | 0.4 | 0.04 | 0.004 | 0.0004 | 0.00004 | … |
j=5 | 50 | 5 | 0.5 | 0.05 | 0.005 | 0.0005 | 0.00005 | … |
j=6 | 60 | 6 | 0.6 | 0.06 | 0.006 | 0.0006 | 0.00006 | … |
j=7 | 70 | 7 | 0.7 | 0.07 | 0.007 | 0.0007 | 0.00007 | … |
j=8 | 80 | 8 | 0.8 | 0.08 | 0.008 | 0.0008 | 0.00008 | … |
j=9 | 90 | 9 | 0.9 | 0.09 | 0.009 | 0.0009 | 0.00009 | … |
表1。
图2和图3分别是根据本发明的位置编码方法的划分优选实施方式0.00001度编码精度的网格划分示意图、0.00002度编码精度的网格划分示意图。
根据本发明,在步骤14,对获取的相应子区域的编号进行压缩编码是为了获得尽量短的地理编码。根据上述网格划分优选实施方式,优选地,每个字节采用ASCII字符064~127(01000000~01111111)表示,由于首次网格划分编号较多,经度、纬度需各占一个字节,之后网格划分,经度、纬度编号合占一个字节,最高两位“01”保留,高三位为经度编号,低三位为纬度编号,得到的字符串长度为2 + l,其中,l为整数,表示不包括首次网格划分的网格划分深度(k-1)。
在步骤14,获取相应子区域标号的同时获取指定地理位置的边界标识。根据上述网格划分优选实施方式,优选地,采用如下方法:边界标识为1bit,当指定地理位置位于相应子区域各边中心2/3区域时认为中心,置标识为0;超过各边中心2/3区域时认为边界,置标识为1;此时的中心与边界比为4:5,当然也可以根据策略按其它比值进行边界判定。另一优选地,边界标识为3bit,判定并标识位于相应子区域边界区域上下左右哪个方位。对边界标识压缩编码,优选地,每个字节采用ASCII字符064~127(01000000~01111111)表示,将各次边界标识依次按位拼接转化为1至多个字符。实践中,如果只使用最大指定划分深度编码精度,即不用地理编码前缀表示编码精度,可以只获取指定地理位置在最小子区域的边界标识。
根据本发明的网格划分优选实施方式,仍以上海新天地(31.21980,121.47516)为例,得到的各编码精度的地理编码和边界标识如表2所示:
k=1 | k=2 | k=3 | k=4 | k=5 | k=6 | k=7 | k=… | |
j=1 | n\,1 | n\I,1 | n\Ib,1 | n\Ibyi,1 | n\IbyiO,1 | n\IbyiO,1 | n\IbyiOh,1 | … |
j=2 | _V,1 | V[,0 | _V[k,1 | _V[kH,0 | _V[kHo,0 | _V[kHo^,0 | _V[kHo^o,0 | … |
j=3 | ZT,0 | ZTd,0 | ZTdI,1 | ZTdIH,1 | ZTdIHi,0 | ZTdIHib,1 | ZTdIHibQ,0 | … |
j=4 | WS,1 | WSH,0 | WSHn,0 | WSHn\,0 | WSHn\i,0 | WSHn\id,0 | WSHn\idk,1 | … |
j=5 | WR,1 | WRK,1 | WRKI,1 | WRKIX,0 | WRKIXV,1 | WRKIXVx,1 | WRKIXVxi,1 | … |
j=6 | UR,0 | URd,0 | URd@,0 | URd@{,1 | URd@{j,0 | URd@{ja,0 | URd@{jaB,1 | … |
j=7 | TR,1 | TRu,0 | TRug,1 | TRugM,1 | TRugMH,0 | TRugMHH,0 | TRugMHHE,0 | … |
j=8 | TQ,1 | TQ ,0 | TQ W,1 | TQ Wx,1 | TQ WxQ,0 | TQ WxQx,1 | TQ WxQxE,0 | … |
j=9 | SQ,1 | SQ@,0 | SQ@d,1 | SQ@dX,0 | SQ@dXo,1 | SQ@dXoi,1 | SQ@dXoiK,0 | … |
表2。
图4是根据本发明的位置查询系统的结构示意图。如图4所示,根据本发明的位置查询系统,包括:输入模块41,用于获取指定地理位置和查询范围,可从信息或网页中分离/提取,也可由用户指定;输出模块45,用于给出指定地理位置和查询范围的查询结果;编码模块42,用于采用所述地理编码方法生成指定地理位置的所需编码精度的地理编码和边界标识;数据存储模块43,用于存储各地理位置的所需各编码精度的地理编码、边界标识和相关信息,可以是完全基于内存的,也可以是基于内外存的;查询匹配模块44,用于根据指定查询范围、边界标识确定查找的相应编码精度和地理编码,在数据存储模块中查找与指定地理位置同一编码精度的地理编码相同或相似的所有其它地理位置。
根据本发明,所述位置查询系统可包含于位置匹配系统,用于提供海量动态信息间的即时位置匹配服务;可包含于提供基于位置的服务的系统,例如,类似于Foursquare、Google Place的系统;可包含于地理信息系统(GIS),例如,类似于Google Map、ArcGIS、MapInfo的系统;还可包含于空间数据库系统、关系数据库系统、NoSQL数据库系统或分布式数据库系统等等。
在本发明中,查询匹配模块44,当进行指定范围的近似查询时,优选地,采用如下方法确定查找的相应编码精度:按从小到大顺序判断与指定范围2倍距离相近的编码精度的边界标识,如有一编码精度的边界标识为中心,即选择该编码精度;否则按从大到小顺序判断与指定范围相近的编码精度的边界标识,如有一编码精度的边界标识为中心,即选择该编码精度;否则选择与指定范围最近的一个编码精度。例如:有一组编码精度分别为100~900米的所述地理编码,当查询300米范围内的目标时,依次判断600米编码精度、700米编码精度、500米编码精度的边界标识,如有一为中心,即选择该编码精度;否则依次判断400米编码精度、300米编码精度、200米编码精度的边界标识,如有一为中心,即选择该编码精度;否则选择300米编码精度。当查询上海新天地(31.21980,121.47516)附近300米范围内的目标时,600米编码精度的边界标识为中心,则选择的编码精度为600米。另一优选地,按从小到大顺序判断与指定范围2倍距离相近的编码精度的边界标识,如有一编码精度的边界标识为中心,即选择该编码精度;否则按从大到小顺序选择多个不同方位边界标识的与指定范围相近的编码精度以进行OR查询或组合查询。
当进行附近位置的近似查询时,优选地,采用如下方法确定查找的相应编码精度和地理编码:按从中间到最高/最低编码精度顺序判断各编码精度的边界标识,如有一编码精度的边界标识为中心,即选择该编码精度;否则任意选择一个编码精度。例如:有一组编码精度分别为100~900米的所述地理编码,当查询附近位置的目标时,依次判断500米编码精度、400米编码精度、600米编码精度、300米编码精度、700米编码精度、200米编码精度、800米编码精度、100米编码精度、900米编码精度的边界标识,如有一为中心,即选择该编码精度;否则任意选择一个编码精度。当查询上海新天地(31.21980,121.47516)附近位置的目标时,400米编码精度的边界标识为中心,则选择的编码精度为400米。另一优选地,按从中间到最高/最低编码精度顺序选择多个不同方位边界标识的相近的编码精度以进行OR查询或组合查询。
实践中,合理设计所述系统的各编码精度以满足可能的指定范围,如果指定范围任意,可先进行四舍五入,例如:128米四舍五入到100米。当指定范围有可近似的最大指定划分深度编码精度时,所述地理编码的匹配是“=”匹配,可以直接HASH;当指定范围有可近似的非最大指定划分深度编码精度时,所述地理编码的匹配是前缀匹配,可以采用基于有序HASH树(Trie树)等现有算法的快速前缀匹配,例如,“搜索用户X附近100米内的所有其它用户”近似等效于“匹配与用户X的相应编码精度的地理编码字符串相同的所有其它用户”,从而可以实现高速、海量的位置匹配近似查询。
图5是根据本发明的位置查询方法的流程示意图。如图5所示,根据本发明的位置查询方法,包括如下步骤:
步骤51,设计所述系统的各编码精度以满足可能的指定范围,如果指定范围任意,可先进行四舍五入,采用所述地理编码方法生成各地理位置的所需各编码精度的地理编码和边界标识,并进行存储;
步骤52,获取指定地理位置和查询范围,可从信息或网页中分离/提取,也可由用户指定;
步骤53,根据指定地理位置和查询范围获取相应编码精度的地理编码和边界标识;
步骤54,根据指定查询范围和边界标识确定查找的相应编码精度;
步骤55,查找与指定地理位置同一编码精度的地理编码相同或相似的所有其它地理位置;
步骤56,给出指定地理位置和查询范围的查询结果。
根据本发明,所述位置查询方法,可用于海量动态信息间的即时位置匹配;可用于提供基于位置的服务,例如,类似于Foursquare、Google Place;可用于地理信息系统(GIS),例如,类似于Google Map、ArcGIS、MapInfo;还可用于空间数据库、关系数据库、NoSQL数据库或分布式数据库等等。
根据本发明,在步骤53,如果指定地理位置的相应编码精度的地理编码和边界标识已经生成并存储,则直接从存储模块中读取;如果指定地理位置的相应编码精度的地理编码和边界标识尚未生成,则采用所述地理编码方法生成,根据实际情况存储或不存储。或者,如果特定信息已存储,只是指定位置发生了变化,则采用所述地理编码方法生成,并更新存储特定信息的新指定位置的相应编码精度的地理编码和边界标识。
在本发明中,步骤54,优选地,采用如下方法:按从小到大顺序判断与指定范围2倍距离相近的编码精度的边界标识,如有一编码精度的边界标识为中心,即选择该编码精度;否则按从大到小顺序判断与指定范围相近的编码精度的边界标识,如有一编码精度的边界标识为中心,即选择该编码精度;否则选择与指定范围最近的一个编码精度。例如:有一组编码精度分别为100~900米的所述地理编码,当查询300米范围内的目标时,依次判断600米编码精度、700米编码精度、500米编码精度的编码精度;如有一为中心,即选择该编码精度,否则依次判断400米编码精度、300米编码精度、200米编码精度的边界标识,如有一为中心,即选择该编码精度;否则选择300米编码精度。当查询上海新天地(31.21980,121.47516)附近300米范围内的目标时,600米编码精度的边界标识为中心,则选择的编码精度为600米。另一优选地,按从小到大顺序判断与指定范围2倍距离相近的编码精度的边界标识,如有一编码精度的边界标识为中心,即选择该编码精度;否则按从大到小顺序选择多个不同方位边界标识的与指定范围相近的编码精度以进行OR查询或组合查询。
实践中,当指定范围有可近似的最大指定划分深度编码精度时,所述地理编码的匹配是“=”匹配,可以直接HASH;当指定范围有可近似的非最大指定划分深度编码精度时,所述地理编码的匹配是前缀匹配,可以采用基于有序HASH树(Trie树)等现有算法的快速前缀匹配,例如,“搜索用户X附近100米内的所有其它用户”近似等效于“匹配与用户X的相应编码精度的地理编码字符串相同的所有其它用户”,从而可以实现高速、海量的位置匹配近似查询。
图6是根据本发明的另一位置查询方法的流程示意图。如图6所示,根据本发明的位置查询方法,包括如下步骤:
步骤61,设计所述系统的各编码精度以满足可能的指定范围,如果指定范围任意,可先进行四舍五入,采用所述地理编码方法生成各地理位置的所需各编码精度的地理编码和边界标识,并进行存储;
步骤62,获取指定地理位置;
步骤63,根据指定地理位置获取相应编码精度的地理编码和边界标识;
步骤64,根据指定边界标识确定查找的相应编码精度;
步骤65,查找与指定地理位置同一编码精度的地理编码相同或相似的所有其它地理位置;
步骤66,给出指定地理位置的查询结果。
根据本发明,所述位置查询方法,可用于海量动态信息间的即时位置匹配;可用于提供基于位置的服务,例如,类似于Foursquare、Google Place;可用于地理信息系统(GIS),例如,类似于Google Map、ArcGIS、MapInfo;还可用于空间数据库、关系数据库、NoSQL数据库或分布式数据库等等。
根据本发明,在步骤63,如果指定地理位置的相应编码精度的地理编码和边界标识已经生成并存储,则直接从存储模块中读取;如果指定地理位置的相应编码精度的地理编码和边界标识尚未生成,则采用所述地理编码方法生成,根据实际情况存储或不存储。或者,如果特定信息已存储,只是指定位置发生了变化,则采用所述地理编码方法生成,并更新存储特定信息的新指定位置的相应编码精度的地理编码和边界标识。
在本发明中,步骤64,优选地,采用如下方法:按从中间到最高/最低编码精度顺序判断各编码精度的边界标识,如有一编码精度的边界标识为中心,即选择该编码精度;否则任意选择一个编码精度。例如:有一组编码精度分别为100~900米的所述地理编码,当查询附近位置的目标时,依次判断500米编码精度、400米编码精度、600米编码精度、300米编码精度、700米编码精度、200米编码精度、800米编码精度、100米编码精度、900米编码精度的边界标识,如有一为中心,即选择该编码精度;否则任意选择一个编码精度。当查询上海新天地(31.21980,121.47516)附近位置的目标时,400米编码精度的边界标识为中心,则选择的编码精度为400米。另一优选地,按从中间到最高/最低编码精度顺序选择多个不同方位边界标识的相近的编码精度以进行OR查询或组合查询。
实践中,当附近位置查询有可满足的最大指定划分深度编码精度时,所述地理编码的匹配是“=”匹配,可以直接HASH;当附近位置查询有可满足的非最大指定划分深度编码精度时,所述地理编码的匹配是前缀匹配,可以采用基于有序HASH树(Trie树)等现有算法的快速前缀匹配,例如,“搜索用户X附近的所有其它用户”近似等效于“匹配与用户X的相应编码精度的地理编码字符串相同的所有其它用户”,从而可以实现高速、海量的位置匹配近似查询。
根据本发明可以看出,采用所述位置编码方法进行近似查询,其最坏情况与采用geohash相当。当然,所述位置查询系统和方法实现的是一种近似查询,如需精确查询,可进一步结合使用B树、R树、K近邻算法(KNN)、Voronoi 图等算法,以时间换精度,由于是现有技术,这里不再赘述。
应当理解,上述仅仅是对本发明精神和原则的展示,并不构成对本发明的不当限定;对于本领域的技术人员来讲,可以在不付出创造性劳动的前提下加以改进或变换,而所有这些改进或变换均应包含在本发明的保护范围之内。
Claims (12)
1.一种地理编码方法,其特征在于,所述方法包括:
a.确定地理位置;
b.确定第i 编码精度;
c.进行第i种划分,将地球表面划分成多个子区域,并进行编号,对每个子区域继续划分编号,直至划分出的每个子区域与第i编码精度相关;
d.获取指定地理位置落入的相应子区域的编号并判断是否落在相应子区域的边界区域,编码得到一维的第i地理编码和第i边界标识;
b~d重复N次;
e.组合所述N个地理编码和边界标识;
其中,N为大于零的整数,i为1~N的整数。
2.根据权利要求1所述的地理编码方法,其特征在于,所述N种划分方式为:
将地球表面近似成一个二维平面;将二维平面进行第i种错位,再进行首次网格划分,并进行编号,之后对划分出的每个子格递归进行:第i种错位和网格划分,使得每个网格边长为其每个子格边长的m倍,并进行另一编号,直至划分出的每个子格边长近似等于第i编码精度;对各次划分,获取指定地理位置落入的子格的编号并判断是否落在子格的边界区域,对所得编号、边界标识进行压缩编码,得到一维的第i地理编码和边界标识;
其中,N为大于零的整数,i为1~N的整数,m为2~10的整数。
3.根据权利要求2所述的地理编码方法,其特征在于,所述对所得编号进行压缩编码的方式为:首次网格划分,经度、纬度编号各转化为一个字符,之后网格划分,经度、纬度编号合并转化为字符;所述对所得边界标识进行压缩编码的方式为:将各次边界标识依次按位拼接转化为字符。
4.根据权利要求1所述的地理编码方法,其特征在于,所述步骤b前进一步包括步骤:确定地区修正因子,根据地区修正因子调整编码精度。
5.一种采用根据权利要求1所述的地理编码方法的位置查询系统,包括:输入模块,用于获取指定地理位置和查询范围;输出模块,用于给出指定地理位置和查询范围的查询结果;其特征 在于,所述系统进一步包括:
编码模块,用于采用所述地理编码方法生成指定地理位置的所需编码精度的地理编码和边界标识;
数据存储模块,用于存储各地理位置的所需各编码精度的地理编码、边界标识和相关信息;
查询匹配模块,用于根据指定查询范围、边界标识确定查找的相应编码精度和地理编码,在数据存储模块中查找与指定地理位置同一编码精度的地理编码相同或相似的所有其它地理位置。
6.根据权利要求5所述的位置查询系统,其特征在于,所述位置查询系统包含于位置匹配系统、提供基于位置的服务的系统、地理信息系统(GIS)或数据库系统。
7.根据权利要求5所述的位置查询系统,其特征在于,所述查找采用对地理编码HASH、快速前缀匹配。
8.根据权利要求5所述的位置查询系统,其特征在于,所述查找的相应编码精度是一个或多个编码精度。
9.一种采用根据权利要求1所述的地理编码方法的位置查询方法,其特征在于,所述方法包括:
a.采用所述地理编码方法生成各地理位置的所需各编码精度的地理编码和边界标识并存储;
b.获取指定地理位置和查询范围;
c.根据指定地理位置和查询范围获取相应编码精度的地理编码和边界标识;
d.根据指定查询范围和边界标识确定查找的相应编码精度;
e.查找与指定地理位置同一编码精度的地理编码相同或相似的所有其它地理位置;
f.给出指定地理位置和查询范围的查询结果。
10.根据权利要求9所述的位置查询方法,其特征在于,所述步骤e中的查找采用对地理编码HASH、快速前缀匹配。
11.一种采用根据权利要求1所述的地理编码方法的位置查询方法,其特征在于,所述方法包括:
a.采用所述地理编码方法生成各地理位置的所需各编码精度的地理编码和边界标识并存储;
b.获取指定地理位置;
c.根据指定地理位置获取相应编码精度的地理编码和边界标识;
d.根据指定边界标识确定查找的相应编码精度;
e.查找与指定地理位置同一编码精度的地理编码相同或相似的所有其它地理位置;
f.给出指定地理位置的查询结果。
12.根据权利要求 11所述的位置查询方法,其特征在于,所述步骤e中的查找采用对地理编码HASH、快速前缀匹配。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210130908.5A CN103383682B (zh) | 2012-05-01 | 2012-05-01 | 一种地理编码方法、位置查询系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210130908.5A CN103383682B (zh) | 2012-05-01 | 2012-05-01 | 一种地理编码方法、位置查询系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103383682A CN103383682A (zh) | 2013-11-06 |
CN103383682B true CN103383682B (zh) | 2017-12-26 |
Family
ID=49491472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210130908.5A Expired - Fee Related CN103383682B (zh) | 2012-05-01 | 2012-05-01 | 一种地理编码方法、位置查询系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103383682B (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810194A (zh) * | 2012-11-11 | 2014-05-21 | 刘龙 | 一种地理编码方法、位置查询系统及方法 |
WO2014145154A1 (en) * | 2013-03-15 | 2014-09-18 | Twitter, Inc. | Method and system for generating a geocode trie and facilitating reverse geocode lookups |
CN104320383B (zh) * | 2014-10-09 | 2018-04-10 | 清华大学 | 基于地理位置编码的域名生成方法 |
CN104298740B (zh) * | 2014-10-09 | 2018-04-20 | 清华大学 | 基于改进的地理位置编码的通信方法 |
CN104598640A (zh) * | 2015-02-09 | 2015-05-06 | 江苏天安智联科技股份有限公司 | 基于经纬度定位所在路网具体位置的方法 |
CN104636621B (zh) * | 2015-02-12 | 2017-10-13 | 深圳市易流科技股份有限公司 | 一种国界处的定位方法 |
CN107291785A (zh) * | 2016-04-12 | 2017-10-24 | 滴滴(中国)科技有限公司 | 一种数据查找方法及装置 |
CN106131159B (zh) * | 2016-06-29 | 2019-02-22 | 电子科技大学 | 可控精度的地理位置信息压缩传输方法 |
CN106802786B (zh) * | 2016-12-09 | 2019-02-19 | 中电科华云信息技术有限公司 | 基于哈希区域映射的时空距离计算系统及方法 |
CN106991149B (zh) * | 2017-03-28 | 2020-11-10 | 桂林电子科技大学 | 一种融合编码和多版本数据的海量空间对象存储方法 |
CN107169128A (zh) * | 2017-06-05 | 2017-09-15 | 游密科技(深圳)有限公司 | 一种给通用数据模型绑定地理位置信息的方法 |
CN107330466B (zh) * | 2017-06-30 | 2023-01-24 | 上海连尚网络科技有限公司 | 极速地理GeoHash聚类方法 |
CN107402983B (zh) * | 2017-07-10 | 2019-11-22 | 清华大学 | 邻近点查询方法及查询装置 |
CN107766433B (zh) * | 2017-09-19 | 2021-05-14 | 昆明理工大学 | 一种基于Geo-BTree的范围查询方法及装置 |
CN107818131A (zh) * | 2017-09-20 | 2018-03-20 | 上海保橙网络科技有限公司 | 一种使用二进制字符串来比较行程路径的方法 |
CN108932310B (zh) * | 2018-06-19 | 2023-06-02 | 腾讯大地通途(北京)科技有限公司 | 空间服务提供方法、装置、服务器及存储设备 |
CN109948069A (zh) * | 2018-07-18 | 2019-06-28 | 阿里巴巴集团控股有限公司 | 一种筛选地理位置的方法、装置及电子设备 |
CN110895591B (zh) * | 2018-09-12 | 2024-05-24 | 北京京东振世信息技术有限公司 | 一种定位自提点的方法和装置 |
CN111221924B (zh) * | 2018-11-23 | 2023-04-11 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、存储介质和网络设备 |
CN110234076A (zh) * | 2018-12-05 | 2019-09-13 | 湖南国科防务电子科技有限公司 | 一种基于编码的可靠位置服务方法 |
WO2020129086A2 (en) * | 2018-12-21 | 2020-06-25 | Gemn Research & Development (P) Ltd | Methods and systems for determining a repeated set of codes for a location and an application thereof |
CN110245201A (zh) * | 2019-05-30 | 2019-09-17 | 武汉智云集思技术有限公司 | 基于地理位置的数据栅格化处理方法、设备及存储介质 |
CN112398895B (zh) * | 2019-08-19 | 2022-03-18 | 阿里巴巴集团控股有限公司 | 提供服务信息的方法及装置 |
CN112069371B (zh) * | 2020-08-11 | 2021-06-29 | 中国水产科学研究院东海水产研究所 | 一种基于格网化邻域的海上船舶有效救援搜索方法 |
CN112989143A (zh) * | 2021-04-12 | 2021-06-18 | 上海交通大学 | 一种基于geohash地址编码的客群洞察方法 |
CN113688196A (zh) * | 2021-07-23 | 2021-11-23 | 武汉天恒信息技术有限公司 | 节点快速编号方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6101496A (en) * | 1998-06-08 | 2000-08-08 | Mapinfo Corporation | Ordered information geocoding method and apparatus |
CN101719128A (zh) * | 2009-12-31 | 2010-06-02 | 浙江工业大学 | 一种基于模糊匹配的中文地理编码确定方法 |
CN102385591A (zh) * | 2010-09-03 | 2012-03-21 | 广东瑞图万方科技股份有限公司 | 一种全球定位编码装置及方法 |
-
2012
- 2012-05-01 CN CN201210130908.5A patent/CN103383682B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6101496A (en) * | 1998-06-08 | 2000-08-08 | Mapinfo Corporation | Ordered information geocoding method and apparatus |
CN101719128A (zh) * | 2009-12-31 | 2010-06-02 | 浙江工业大学 | 一种基于模糊匹配的中文地理编码确定方法 |
CN102385591A (zh) * | 2010-09-03 | 2012-03-21 | 广东瑞图万方科技股份有限公司 | 一种全球定位编码装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103383682A (zh) | 2013-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103383682B (zh) | 一种地理编码方法、位置查询系统及方法 | |
CN103810194A (zh) | 一种地理编码方法、位置查询系统及方法 | |
CN107153711A (zh) | 地理信息数据处理方法及装置 | |
CN103136371B (zh) | 多源空间数据的剖分标识生成方法以及数据检索方法 | |
CN104469676A (zh) | 一种移动终端的定位方法及系统 | |
CN110909093B (zh) | 智慧地标控制网的构建方法及装置 | |
CN104394509A (zh) | 一种高效的差分扰动位置隐私保护系统及方法 | |
CN107798054A (zh) | 一种基于Trie的范围查询方法及装置 | |
CN105373559A (zh) | 一种地理信息获取方法及地理信息获取系统 | |
CN104867402B (zh) | 一种离线的逆地理编码的方法及其装置和终端设备 | |
CN107766433A (zh) | 一种基于Geo‑BTree的范围查询方法及装置 | |
CN109002452B (zh) | 地图瓦片更新方法、装置及计算机可读存储介质 | |
CN108932310A (zh) | 空间服务提供方法、装置、服务器及存储设备 | |
CN110377681B (zh) | 一种数据查询的方法、装置、可读存储介质和电子设备 | |
CN108446357A (zh) | 一种基于二维地理位置的海量数据空间范围查询方法 | |
AU2020203554B2 (en) | Application of data structures to geo-fencing applications | |
US20170186225A1 (en) | Method and apparatus for generating a composite indexable linear data structure to permit selection of map elements based on linear elements | |
CN105989024A (zh) | 确定用户所在的位置区域的方法和装置 | |
CN111460237B (zh) | 一种数据查询的方法、装置、可读存储介质和电子设备 | |
CN107247761A (zh) | 基于位图的轨迹编码方法 | |
CN108737979A (zh) | 一种室内定位方法 | |
CN106294484A (zh) | 一种更新电子地图数据的方法及装置 | |
CN106204719A (zh) | 基于二维邻域检索的三维场景中海量模型实时调度方法 | |
CN114792111A (zh) | 一种数据获取方法、装置、电子设备及存储介质 | |
CN111446968A (zh) | 矢量空间数据多级压缩方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171226 Termination date: 20190501 |
|
CF01 | Termination of patent right due to non-payment of annual fee |