CN107766433A - 一种基于Geo‑BTree的范围查询方法及装置 - Google Patents
一种基于Geo‑BTree的范围查询方法及装置 Download PDFInfo
- Publication number
- CN107766433A CN107766433A CN201710843972.0A CN201710843972A CN107766433A CN 107766433 A CN107766433 A CN 107766433A CN 201710843972 A CN201710843972 A CN 201710843972A CN 107766433 A CN107766433 A CN 107766433A
- Authority
- CN
- China
- Prior art keywords
- longitude
- string
- latitude
- character string
- geohash
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 230000002457 bidirectional effect Effects 0.000 claims abstract description 12
- 238000011160 research Methods 0.000 claims abstract description 12
- 239000000203 mixture Substances 0.000 claims description 3
- 239000004576 sand Substances 0.000 claims description 3
- 238000013523 data management Methods 0.000 abstract description 2
- 238000003860 storage Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000012946 outsourcing Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000002203 pretreatment Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于Geo‑BTree的范围查询方法及装置,本发明方法包括:数据预处理步骤,将数据集中所有位置点编码成长度为n的字符串string,根据字符串按字典序对数据集中的位置点排序并编号ID;空间索引建立步骤,根据排序后的字符串构建B‑Tree索引结构;范围查询步骤,以检索B‑Tree索引结构返回的ID为起始点双向搜索获取查询域内的ID,经过滤得到ID候选集,并对候选集中ID所对应的位置点验证返回查询范围内的位置点。本发明采用基于geohash编码构建B‑Tree索引结构,具有较高的查询效率,可直接用于数据管理***中;采用geohash空间索引方法,有效支持任意范围查询。
Description
技术领域
本发明涉及一种基于Geo-BTree的范围查询方法及装置,属于数据库(Database)领域、范围查询(Range Search)领域、基于位置的服务(Location-Based Service,LBS)等领域。
背景技术
近年来,随着智能手机、平板电脑等移动设备的普及,基于桌面的互联网时代已转向移动互联网时代。与此同时,随着定位技术的发展,如:GPS、3G、4G、WiFi等,导致产生了大量具有位置属性的数据,且数据量急剧增长。
面对海量的空间数据,高效支持空间查询是一个迫切需要解决的问题。空间索引用于过滤、排除大量与特定空间操作无关的地理对象,从而缩减空间操作范围,为高效支持空间查询,则需高效的空间索引结构。从空间数据库的观点来看,空间索引结构可以分为两类:专门用于处理点对象的点存取方法(PAM)和处理具有空间扩展的空间对象(包括点、线、面、体)的空间存取方法(SAM)。PAM包括Grid文件、Buddy树、K-D-B树、hB树、LSD树等;依据空间对象的不同组织方式,SAM分为对象映射、对象分割/复制和对象界定三类,对象映射即将高维空间中的对象线性映射到一维空间,用空间排列码(如:Peano码、Hilbert码、Morton码等)进行表达;对象分割/复制是把与子空间相交的数据对象分割成几个子对象,分别存储在互不重叠的子空间中,在子空间中复制对象本身或其标识符,如:R+树、Cell树、线性四叉树等;对象界定又称为区域重叠技术,其主要思想是允许子空间的相互重叠,如:R树、R*树等。R树是目前最流行的动态空间索引结构,其采用对象的最小外包矩形(MinimumBounding Rectangle, MBR)来近似表示空间实体,可有效支持查询、***、删除等操作。由于空间数据分布的偶然性,容易造成MBR重叠,查询时会产生多个查询分支,从而降低查询效率。
选取geohash空间索引方法可有效解决R-Tree的多路径查询问题,geohash编码用二分法划分空间,避免了区域重叠;选用geohash编码可支持任意范围查询。因此,geohash空间索引方法广泛用于多个领域,如:地理信息***领域(如:PostGIS)、空间数据库领域(如:MongoDB)、信息检索领域(如:Lucene)。
存储geohash编码常用的索引结构如:B-Tree、B+Tree、Hashing。B-Tree是一种自平衡的树,其支持对数据的增加、删除、修改、查找操作在对数时间内完成,故B-Tree常被应用在数据库和文件***的实现上。R-Tree是B-Tree在k维空间上的自然扩展,因其采用对象界定技术组织空间对象,造成多路径查询问题,从而降低查询效率。
发明内容
本发明提供了一种基于Geo-BTree的范围查询方法及装置,目的在于有效支持任意范围查询;有效解决因R树存在的多路径查询问题而导致的检索低效问题;直接用于数据管理***中。
本发明的技术方案是:一种基于Geo-BTree的范围查询方法,包括:
数据预处理步骤,将数据集中所有位置点编码成长度为n的字符串string,根据字符串按字典序对数据集中的位置点排序并编号ID;
空间索引建立步骤,根据排序后的字符串构建B-Tree索引结构;
范围查询步骤,以检索B-Tree索引结构返回的ID为起始点双向搜索获取查询域内的ID,经过滤得到ID候选集,并对候选集中ID所对应的位置点验证返回查询范围内的位置点。
所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点构成的数据集D,通过geohash算法将D中的位置点编码成长度为n的字符串string;其中,位置点由纬度、经度数据构成;
步骤120:根据字符串按字典序对数据集中的位置点排序并编号,该编号即为对应的位置点ID,每一行数据称为一条记录,则由这些数据组成的数据集称为记录集;其中,记录由ID、纬度、经度、字符串组成。
所述空间索引建立步骤,具体为:
步骤210:根据字符串构建B-Tree索引结构,每个结点至少存储1个<string,ID>。
所述范围查询步骤,具体包括如下步骤:
步骤310:给定查询位置点q和查询距离范围d,根据geohash精度表选定与d相对应的geohash编码长度p,通过geohash算法将位置点q编码为p位长度的字符串qs,获取字符串qs周围8个区域的geohash编码,并将字符串qs及其周围8个区域的geohash编码分别作为查询域,共9个查询域;其中,p对应的距离误差不小于d且为最小值,每一个geohash编码表示一个区域;
步骤320:根据检索B-Tree索引结构返回的ID,在记录集中以此ID为起始点双向搜索至不满足查询条件,返回满足查询条件的ID,为一个查询域内的ID;重复以上操作至获取9个查询域内的ID;其中,每一行数据称为一条记录,则由这些数据组成的数据集称为记录集,记录由ID、纬度、经度、字符串组成;查询条件指记录集中字符串的前p位与查询域的geohash编码相同;
步骤330:根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围,通过经纬度范围对9个查询域内的ID进行筛选,最终得到ID候选集;
步骤340:计算候选集中ID对应的位置点到q的距离dq:若dq≤d,则返回该位置点,否则,不返回。
所述步骤110,包括下列步骤111、112:
步骤111:根据geohash精度表确定geohash编码长度n;
步骤112:通过geohash算法将所有位置点编码成长度为n的字符串。
所述通过geohash算法将位置点编码成字符串具体为:首先,将经纬度范围看作二维平面坐标系;然后,采用二分法对经度/纬度进行划分,根据位置点经度/纬度在划分结果中的位置分别赋值0或1,直到划分次数满足对应的经/纬度位串的位数;之后,通过位交错方法合并经度位串与纬度位串;最后,通过Base32编码将经纬度位串编码为相应长度的字符串。
所述步骤310中,获取qs周围8个区域的geohash编码的方法:根据qs的经纬度位串,东/西方向的区域编码:经度位串不变,纬度位串加/减1,通过位交错方法得到该区域的经纬度位串;南/北方向的区域编码:纬度位串不变,经度位串减/加1,通过位交错方法得到该区域的经纬度位串;东北/西南方向的区域编码,经纬度位串均加/减1,通过位交错方法得到该区域的经纬度位串;东南方向的区域编码:纬度位串加1,经度位串减1,通过位交错方法得到该区域的经纬度位串;西北方向的区域编码:纬度位串减1,经度位串加1,通过位交错方法得到该区域的经纬度位串;之后,通过Base32编码将以上8个位串进行编码即可获得qs周围8个区域的geohash编码。
所述步骤320中,根据检索B-Tree索引结构返回ID的方法为:
从根结点开始重复如下过程:若比结点的第一个关键字小,则查找在该结点第一个指针指向的结点进行;若等于结点中某个关键字,则查找成功;若在两个关键字之间,则查找在它们之间的指针指向的结点进行;若比该结点所有关键字大,则查找在该结点最后一个指针指向的结点进行;若查找已经到达某个叶子结点,还未匹配成功,则查找失败,其中,字符串的前p位为关键字。
所述步骤330中,根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围方法如下:纬度的最大值maxLat = lat + range,纬度的最小值minLat = lat - range;经度的最大值 maxLng = lon + lngR,经度的最小值minLng = lon - lngR;其中,lat表示查询位置点q的纬度值,lon 表示查询位置点q的经度值,range =180 / π * d /6372.797,lngR = range / cos(lat *π/ 180.0)。
一种基于Geo-BTree的范围查询装置,包括:
数据预处理装置,用于将数据集中所有位置点编码成长度为n的字符串string,根据字符串按字典序对数据集中的位置点排序并编号ID;
空间索引建立装置,用于根据排序后的字符串构建B-Tree索引结构;
范围查询装置,用于以检索B-Tree索引结构返回的ID为起始点双向搜索获取查询域内的ID,经过滤得到ID候选集,并对候选集中ID所对应的位置点验证返回查询范围内的位置点。
本发明的有益效果是:本发明采用基于geohash编码构建B-Tree索引结构,具有较高的查询效率,可直接用于数据管理***中;采用geohash空间索引方法,有效支持任意范围查询。
附图说明
图1是基于Geo-BTree的范围查询功能模块图;
图2是geohash精度表;
图3是Base32编码规则图;(注:(+ / -)表示加减);
图4是位置点转换为字符串图;
图5是位置点排序图;(注:记录集)
图6是基于字符串构建的B-Tree图;
图7是创建索引时间对比图;
图8是查询响应时间对比图;
图9是基于最小外包矩形划分的空间区域图;
图10是基于图9构建的R-Tree图。
具体实施方式
实施例1:如图1-10所示,一种基于Geo-BTree的范围查询方法,包括:
数据预处理步骤:
步骤111、根据geohash精度表(如图2所示),将geohash编码长度n设置为8,则经纬度位串分别为20位;
步骤112、通过geohash算法将D中的位置点转换成长度为8的字符串,实现方法如下:
示例:(19.596412 -99.219501)
首先将纬度范围(-90,90)平分成(-90,0)、(0,90)两个区间,如果目标纬度位于前一个区间,则编码为0,否则编码为1。因19.596412属于区间(0,90),所以编码为1;然后再将(0,90)分成(0,45)、(45,90)两个区间,因19.596412属于区间(0,45),所以编码为0;以此类推,直至位串长度为20。最终19.596412的编码为10011011110111101101。
经度也采取同样的方法,对范围(-180,180)依次细分至位串长度为20。最终-99.219501的编码为00111001011100011010。
接下来将经纬度位串进行合并,奇数位为纬度,偶数位为经度,得到编码0100101111000111011110110101011011011001。
最后,通过Base32编码(如图3所示)得到(19.5964412 -99.219501)的geohash编码为9g3rqpqt。
通过geohash算法将D中的位置点转换成长度为8的字符串,如图4所示。
步骤120、根据字符串按字典序对数据集中的位置点排序并编号,如图5所示。
步骤210、空间索引的建立:字符串集{2jtc7013,2jtc73c4,2svshqyr,3p0905sx,4qr2jmhq,4qst1sd7,4qt9d6rj,4qt9dxxg,4qtduesw,9g3rmy55,9g3rmz1w,9g3rqn7z,9g3rqp4t,9g3rqp57,9g3rqp5t,9g3rqp7u,9g3rqpbz,9g3rqphk,9g3rqpmz,9g3rqpn1,9g3rqpn1,9g3rqpqt,9g3rqpvz,9g3rqqmk,9g3rqr7x,9g3rqrbt,9g3rtb4h,9g3rw04d,9g3rw058,9g3rw27u},根据字符串构建B-Tree索引结构,选取m=5,则每个非叶子结点至多有5棵子树,每个结点至多有4个<string,ID>;除根结点外,其它每个分支结点至少有3棵子树;根结点至少有2棵子树;有3个孩子的非叶子结点恰好有2个<string,ID>,有4个孩子的非叶子结点恰好有3个<string,ID>;
B-Tree索引结构的构建过程:依次从字符串集中获取字符串,其中,叶子结点编号从左至右依次为1、2、3、4、5、6、7、8、9、10,
(注:因以Map的形式存储<string,ID>,若string重复,就覆盖前一个<string,ID>,故9g3rqpn1仅出现一次,其相对应的ID为21。)
步骤一:获取字符串“2jtc7013”,其对应的ID为1,存储<2jtc7013,1> ;获取字符串“2jtc73c4”,其对应的ID为2,依次存储<2jtc73c4,2> ;获取字符串“2svshqyr”,其对应的ID为3,依次存储<2svshqyr,3>;获取字符串“3p0905sx”,其对应的ID为4,依次存储<3p0905sx,4>;获取字符串“4qr2jmhq”,其对应的ID为5,依次存储<4qr2jmhq,5>,因每个结点至多存储4个<string,ID>,故引起***(在中间值进行***,下同),如图6所示,第1个叶子结点依次存储<2jtc7013,1>、<2jtc73c4,2>,第2个叶子结点依次存储<3p0905sx,4>、<4qr2jmhq,5>,两个叶子结点的父结点存储<2svshqyr,3>;
步骤二:获取字符串“4qst1sd7”,其对应的ID为6,第2个叶子结点依次存储<4qst1sd7,6>;获取字符串“4qt9d6rj”,其对应的ID为7,第2个叶子结点依次存储<4qt9d6rj,7>;获取字符串“4qt9dxxg”,其对应的ID为8,第2个叶子结点依次存储<4qt9dxxg,8>,因每个结点至多存储4个<string,ID>,故引起***,如图6所示,第2个叶子结点依次存储<3p0905sx,4>、<4qr2jmhq,5>,第3个叶子结点依次存储<4qt9d6rj,7>、<4qt9dxxg,8>,第1、2、3个叶子结点的父结点依次存储<2svshqyr,3>、<4qst1sd7,6>;
步骤三:获取字符串“4qtduesw”,其对应的ID为9,第3个叶子结点依次存储<4qtduesw,9>;获取字符串“9g3rmy55”,其对应的ID为10,第3个叶子结点依次存储<9g3rmy55,10>;获取字符串“9g3rmz1w”,其对应的ID为11,第3个叶子结点依次存储<9g3rmz1w,11>,因每个结点至多存储4个<string,ID>,故引起***,如图6所示,第3个叶子结点依次存储<4qt9d6rj,7>、<4qt9dxxg,8>,第4个叶子结点依次存储<9g3rmy55,10>、<9g3rmz1w,11>,第1、2、3、4个叶子结点的父结点依次存储<2svshqyr,3>、<4qst1sd7,6>、<4qtduesw,9>;
步骤四:获取字符串“9g3rqn7z”,其对应的ID为12,第4个叶子结点依次存储<9g3rqn7z,12>;获取字符串“9g3rqp4t”,其对应的ID为13,第4个叶子结点依次存储<9g3rqp4t,13>;获取字符串“9g3rqp57”,其对应的ID为14,第4个叶子结点依次存储<9g3rqp57,14>,因每个结点至多存储4个<string,ID>,故引起***,如图6所示,第4个叶子结点依次存储<9g3rmy55,10>、<9g3rmz1w,11>,第5个叶子结点依次存储<9g3rqp4t,13>、<9g3rqp57,14>,第1、2、3、4、5个叶子结点的父结点依次存储<2svshqyr,3>、<4qst1sd7,6>、<4qtduesw,9>、<9g3rqn7z,12>;
步骤五:获取字符串“9g3rqp5t”,其对应的ID为15,第5个叶子结点依次存储<9g3rqp5t,15>;获取字符串“9g3rqp7u”,其对应的ID为16,第5个叶子结点依次存储<9g3rqp7u,16>;获取字符串“9g3rqpbz”,其对应的ID为17,第5个叶子结点依次存储<9g3rqpbz,17>,第5个叶子结点依次存储<9g3rqp4t,13>、<9g3rqp57,14>,第6个叶子结点依次存储<9g3rqp7u,16>、<9g3rqpbz,17>,第1、2、3、4、5、6个叶子结点的父结点依次存储<2svshqyr,3>、<4qst1sd7,6>、<4qtduesw,9>、<9g3rqn7z,12>、<9g3rqp5t,15>,因每个结点至多存储4个<string,ID>,故引起***,如图6所示,第1、2、3个叶子结点的父结点依次存储<2svshqyr,3>、<4qst1sd7,6>,第4、5、6个叶子结点的父结点依次存储<9g3rqn7z,12>、<9g3rqp5t,15>,第1、2、3、4、5、6个叶子结点的父结点的父结点存储<4qtduesw,9>;
步骤六:获取字符串“9g3rqphk”,其对应的ID为18,第6个叶子结点依次存储<9g3rqphk,18>;获取字符串“9g3rqpmz”,其对应的ID为19,第6个叶子结点依次存储<9g3rqpmz,19>;获取字符串“9g3rqpn1”,其对应的ID为21,第6个叶子结点依次存储<9g3rqpn1,21>,因每个结点至多存储4个<string,ID>,故引起***,如图6所示,第6个叶子结点依次存储<9g3rqp7u,16>、<9g3rqpbz,17>,第7个叶子结点依次储存<9g3rqpmz,19>、<9g3rqpn1,21>,第4、5、6、7个叶子结点的父结点依次存储<9g3rqn7z,12>、<9g3rqp5t,15>、<9g3rqphk,18>;
步骤七:获取字符串“9g3rqpqt”,其对应的ID为22,第7个叶子结点依次存储<9g3rqpqt,22>;获取字符串“9g3rqpvz”,其对应的ID为23,第7个叶子结点依次存储<9g3rqpvz,23>;获取字符串“9g3rqqmk”,其对应的ID为24,第7个叶子结点依次存储<9g3rqqmk,24>,因每个结点至多存储4个<string,ID>,故引起***,如图6所示,第7个叶子结点依次储存<9g3rqpmz,19>、<9g3rqpn1,21>,第8个叶子结点依次存储<9g3rqpvz,23>、<9g3rqqmk,24>,第4、5、6、7、8个叶子结点的父结点依次存储<9g3rqn7z,12>、<9g3rqp5t,15>、<9g3rqphk,18>、<9g3rqpqt,22>;
步骤八:获取字符串“9g3rqr7x”,其对应的ID为25,第8个叶子结点依次存储<9g3rqr7x,25>;获取字符串“9g3rqrbt”,其对应的ID为26,第8个叶子结点依次存储<9g3rqrbt,26>;获取字符串“9g3rtb4h”,其对应的ID为27,第8个叶子结点依次存储<9g3rtb4h,27>,因每个结点至多存储4个<string,ID>,故引起***,如图6所示,第8个叶子结点依次存储<9g3rqpvz,23>、<9g3rqqmk,24>,第9个叶子结点依次储存<9g3rqrbt,26>、<9g3rtb4h,27>,第4、5、6、7、8、9个叶子结点的父结点依次存储<9g3rqn7z,12>、<9g3rqp5t,15>、<9g3rqphk,18>、<9g3rqpqt,22>、<9g3rqr7x,25>,因每个结点至多存储4个<string,ID>,故引起***,如图6所示,第4、5、6个叶子结点的父结点依次存储<9g3rqn7z,12>、<9g3rqp5t,15>,第7、8、9个叶子结点的父结点依次存储<9g3rqpqt,22>、<9g3rqr7x,25>,第1、2、3、4、5、6、7、8、9个叶子结点的父结点的父结点依次存储<4qtduesw,9>、<9g3rqphk,18>;
步骤九:获取字符串“9g3rw04d”,其对应的ID为28,第9个叶子结点依次存储<9g3rw04d,28>;获取字符串“9g3rw058”,其对应的ID为29,第9个叶子结点依次存储<9g3rw058,29>;获取字符串“9g3rw27u”,其对应的ID为30,第9个叶子结点依次存储<9g3rw27u,30>,因每个结点至多存储4个<string,ID>,故引起***,如图6所示,第9个叶子结点依次储存<9g3rqrbt,26>、<9g3rtb4h,27>,第10个叶子结点依次储存<9g3rw058,29>、<9g3rw27u,30>,第7、8、9、10个叶子结点的父结点依次存储<9g3rqpqt,22>、<9g3rqr7x,25><9g3rw04d,28>。
范围查询包括下列步骤:
步骤311、给定查询位置点(19.596412 -99.219501)和查询距离范围500米,需p对应的距离误差不小于500米且为最小值,则p值应设置为6,通过geohash算法将(19.596412 -99.219501)编码为6位长度的字符串9g3rqp;
步骤312、获取9g3rqp周围8个区域的geohash编码,并将9g3rqp及其周围8个区域作为查询域,方法如下:
9g3rqp的纬度位串为100110111101111,经度位串为001110010111000。
北方区域的geohash编码:纬度位串为100110111101111,经度位串为001110010111000+1=001110010111001,经纬度位串为010010111100011101111011010111,geohash编码为9g3rqr;
东北区域的geohash编码:纬度位串为100110111101111+1=100110111110000,经度位串为001110010111000+1=001110010111001,经纬度位串为010010111100011101111110000010,geohash编码为9g3rw2;
东方区域的geohash编码:纬度位串为100110111101111+1=100110111110000,经度位为001110010111000,经纬度位串为010010111100011101111110000000,geohash编码为9g3rw0;
东南区域的geohash编码:纬度位串为100110111101111+1=100110111110000,经度位串为001110010111000-1=001110010110111,经纬度位串为010010111100011101111100101010,geohash编码为9g3rtb;
南方区域的geohash编码:纬度位串为100110111101111,经度位串为001110010111000-1=001110010110111,经纬度位串为010010111100011101111001111111,geohash编码为9g3rmz;
西南区域的geohash编码:纬度位串为100110111101111-1=100110111101110,经度位串为001110010111000-1=001110010110111,经纬度位串为010010111100011101111001111110,geohash编码为9g3rmy;
西方区域的geohash编码:纬度位串为100110111101111-1=100110111101110,经度位为001110010111000,经纬度位串为010010111100011101111011010100,geohash编码为9g3rqn;
西北区域的geohash编码:纬度位串为100110111101111-1=100110111101110,经度位串为001110010111000+1=001110010111001,经纬度位串为010010111100011101111011010110,geohash编码为9g3rqq。
9g3rqp周围的8个区域为:9g3rqr、9g3rw2、9g3rw0、9g3rtb、9g3rmz、9g3rmy、9g3rqn、9g3rqq;
步骤320:根据检索B-Tree索引结构返回的ID,在记录集中以此ID为起始点双向搜索至不满足查询条件,返回满足查询条件的ID,为一个查询域内的ID;重复以上操作至获取9个查询域内的ID;其中,每一行数据称为一条记录,则由这些数据组成的数据集称为记录集,记录由ID、纬度、经度、字符串组成;查询条件指记录集中字符串的前p位与查询域的geohash编码相同;实现过程如下:
通过检索B-Tree索引结构返回ID的过程,其中,从根结点至第1、2、3个叶子结点称为B-Tree的第一分支,以9g3rqp查询域为例:
从根结点(叶子结点的父结点的父结点)开始,根结点中依次存储<4qtduesw,9>、<9g3rqphk,18>,关键字为“4qtdue”、“9g3rqp”,9g3rqp与第2个关键字相等,故通过B-Tree查询9g3rqp区域的ID为18。若9g3rqp比第1个关键字小,则查找在第1、2、3个叶子结点的父结点进行,若比第1、2、3个叶子结点的父结点的第1个关键字小,则查找在第1个叶子结点进行;若比第1、2、3个叶子结点的父结点的第1个关键字大,小于第1、2、3个叶子结点的父结点的第2个关键字,则查找在第2个叶子结点进行;若比第1、2、3个叶子结点的父结点的第2个关键字大,则查找在第3个叶子结点进行;若等于第1、2、3个叶子结点的父结点的某一个关键字,则返回对应的ID;若未匹配成功,则查找失败。若9g3rqp比第1个关键字大,比第2个关键字小,则查找在第4、5、6个叶子结点的父结点进行,查询方法与对B-Tree的第一分支的操作一致。若9g3rqp比第2个关键字大,则查找在第7、8、9、10个叶子结点的父结点进行,查询方法与对B-Tree的第一分支的操作一致。
通过B-Tree查询9g3rqp区域的ID为18,在记录集中,以ID为18的记录为起始点双向搜索至ID所对应的字符串的前6位不等于“9g3rqp”,故9g3rqp区域内的ID为{18,17,16,15,14,13,19,20,21,22,23};
通过B-Tree查询9g3rqr区域的ID为25,在记录集中,以ID为25的记录为起始点双向搜索至ID所对应的字符串的前6位不等于“9g3rqr”,故9g3rqr区域内的ID为{25,26};
通过B-Tree查询9g3rw2区域的ID为30,在记录集中,以ID为30的记录为起始点双向搜索至ID所对应的字符串的前6位不等于“9g3rw2”,故9g3rw2区域内的ID为{30};
通过B-Tree查询9g3rw0区域的ID为28,在记录集中,以ID为28的记录为起始点双向搜索至ID所对应的字符串的前6位不等于“9g3rw0”,故9g3rw0区域内的ID为{28,29};
通过B-Tree查询9g3rtb区域的ID为27,在记录集中,以ID为27的记录为起始点双向搜索至ID所对应的字符串的前6位不等于“9g3rtb”,故9g3rtb区域内的ID为{27};
通过B-Tree查询9g3rmz区域的ID为11,在记录集中,以ID为11的记录为起始点双向搜索至ID所对应的字符串的前6位不等于“9g3rmz”,故9g3rmz区域内的ID为{11};
通过B-Tree查询9g3rmy区域的ID为10,在记录集中,以ID为10的记录为起始点双向搜索至ID所对应的字符串的前6位不等于“9g3rmy”,故9g3rmy区域内的ID为{10};
通过B-Tree查询9g3rqn区域的ID为12,在记录集中,以ID为12的记录为起始点双向搜索至ID所对应的字符串的前6位不等于“9g3rqn”,故9g3rqn区域内的ID为{12};
通过B-Tree查询9g3rqq区域的ID为24,在记录集中,以ID为24的记录为起始点双向搜索至ID所对应的字符串的前6位不等于“9g3rqq”,故9g3rqq区域内的ID为{24};
由上可知,9个查询域内的ID为:
{10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30};
步骤330、根据查询位置点(19.596412 -99.219501)和查询距离范围500m确定纬度范围与经度范围,如下所示:
step1: range =180 ÷ 3.141593 × 0.5 ÷ 6372.797 = 0.004495
step2: lngR = 0.004495 ÷ cos(19.596412 × 3.141593 ÷ 180.0) = 0.004771
step3: 19.596412 + 0.004495 = 19.600907(纬度的最大值)
step4: 19.596412 - 0.004495 = 19.591917(纬度的最小值)
step5: -99.219501 + 0.004771 = -99.214730(经度的最大值)
step6: -99.219501 - 0.004771 = -99.224272(经度的最小值)
由上可知,纬度范围为[19.591917,19.600907],经度范围为[-99.224272,-99.214730]。根据经纬度范围对9个查询域内的ID{10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30}进行过滤并返回经纬度范围内的位置点。如:ID为10时,其纬经度为(19.589223 -99.23521),19.589223不位于[19.591917,19.600907]内,故过滤ID为10的位置点。经过滤后,候选集为{14,15,16,18,19,20,21,22,23,26,29}。
步骤340、计算候选集{14,15,16,18,19,20,21,22,23,26,29}中ID对应的位置点(19.596412 -99.219501)的距离dq,若dq<=500,则返回该位置点,实现过程如下所示:
查询条件:(19.596412 -99.219501),500米;
距离计算公式:设A(x 1,y 1),B(x 2,y 2),则|AB|=(1);
根据公式(1)依次计算位置点集中的位置点与(19.596412 -99.219501)的距离,返回不大于500米的位置点,经计算,满足要求的位置点集为{{19.594717 -99.22388},{19.59506 -99.223537},{19.596261 -99.223194},{19.594888 -99.222507},{19.596776 -99.220447},{19.594324 -99.220118},{19.594354 -99.220102},{19.596412 -99.219501},{19.599523 -99.220447},{19.59918 -99.21667}}。
故满足查询范围内的位置点为{{19.594717 -99.22388},{19.59506 -99.223537}, {19.596261 -99.223194},{19.594888 -99.222507},{19.596776 -99.220447},{19.594324 -99.220118},{19.594354 -99.220102},{19.596412 -99.219501},{19.599523 -99.220447},{19.59918 -99.21667}}。
一种基于Geo-BTree的范围查询装置,包括:
数据预处理装置,用于将数据集中所有位置点编码成长度为n的字符串string,根据字符串按字典序对数据集中的位置点排序并编号ID;
空间索引建立装置,用于根据排序后的字符串构建B-Tree索引结构;
范围查询装置,用于以检索B-Tree索引结构返回的ID为起始点双向搜索获取查询域内的ID,经过滤得到ID候选集,并对候选集中ID所对应的位置点验证返回查询范围内的位置点。
为说明基于Geo-BTree的范围查询方法的有效性,本实施例实验以创建索引的时间开销与查询响应时间为指标,对基于Geo-BTree的范围查询方法与基于R-Tree的范围查询方法进行比较,如下所述。
实验的测试环境,如下表所示,
实验数据集:Foursquare data,3000000个位置点(纬度 经度)。
实验结果:创建索引的时间开销如图7所示,由图可知,创建索引的时间开销随着数据量的增加而增大,其中,基于Geo-BTree的范围查询方法的创建索引的时间开销呈缓慢增长趋势,而基于R-Tree的范围查询方法的创建索引的时间开销呈快速增长趋势;查询响应时间如图8所示,由图可知,查询响应时间随着数据量的增加而增大,但基于Geo-BTree的范围查询方法的查询响应时间均小于基于R-Tree的范围查询方法的查询响应时间。
实验结果分析:由上可知,相较于基于R-Tree的范围查询方法,无论是以创建索引的时间开销为指标进行分析,还是以查询响应时间为指标进行分析,基于Geo-BTree的范围查询方法的索引创建时间与查询响应时间更少。出现上述实验结果的主要原因是:R-Tree采用区域重叠技术组织空间对象,数据量越大,重叠区域越多,导致大量的查询路径,从而直接降低检索效率;基于Geo-BTree的范围查询方法通过geohash算法将空间对象线性映射为一维对象,其中,geohash用二分法的方法划分空间,避免了区域重叠,故基于Geo-BTree的范围查询方法具有更好的检索效率;R-Tree是B-Tree向多维空间发展的另一形式,其创建过程如图9-10所示,最小域(MBR)仅位于叶节点,而在B-Tree中,最小域位于所有节点;在B-Tree中,每个结点存储的<string,ID>需按升序排列,因数据预处理步骤对字符串进行了升序排序,故基于B-Tree创建索引的时间开销较少。
实施例2:如图1-10所示,一种基于Geo-BTree的范围查询方法,包括:
数据预处理步骤,将数据集中所有位置点编码成长度为n的字符串string,根据字符串按字典序对数据集中的位置点排序并编号ID;
空间索引建立步骤,根据排序后的字符串构建B-Tree索引结构;
范围查询步骤,以检索B-Tree索引结构返回的ID为起始点在记录集中双向搜索获取查询域内的ID,经过滤得到ID候选集,并对候选集中ID所对应的位置点验证返回查询范围内的位置点。
进一步地,可以设置所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点构成的数据集D,通过geohash算法将D中的位置点编码成长度为n的字符串string;其中,位置点由纬度、经度数据构成;
步骤120:根据字符串按字典序对数据集中的位置点排序并编号,该编号即为对应的位置点ID,每一行数据称为一条记录,则由这些数据组成的数据集称为记录集;其中,记录由ID、纬度、经度、字符串组成。
进一步地,可以设置所述空间索引建立步骤,具体为:
步骤210:根据字符串构建B-Tree索引结构,每个结点至少存储1个<string,ID>。
所述范围查询步骤,具体包括如下步骤:
步骤310:给定查询位置点q和查询距离范围d,根据geohash精度表选定与d相对应的geohash编码长度p,通过geohash算法将位置点q编码为p位长度的字符串qs,获取字符串qs周围8个区域的geohash编码,并将字符串qs及其周围8个区域的geohash编码分别作为查询域,共9个查询域;其中,p对应的距离误差不小于d且为最小值,每一个geohash编码表示一个区域;
步骤320:根据检索B-Tree索引结构返回的ID,在记录集中以此ID为起始点双向搜索至不满足查询条件,返回满足查询条件的ID,为一个查询域内的ID;重复以上操作至获取9个查询域内的ID;其中,每一行数据称为一条记录,则由这些数据组成的数据集称为记录集,记录由ID、纬度、经度、字符串组成;查询条件指记录集中字符串的前p位与查询域的geohash编码相同;
步骤330:根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围,通过经纬度范围对9个查询域内的ID进行筛选,最终得到ID候选集;
步骤340:计算候选集中ID对应的位置点到q的距离dq:若dq≤d,则返回该位置点,否则,不返回。
进一步地,可以设置所述步骤110,包括下列步骤111、112:
步骤111:根据geohash精度表确定geohash编码长度n;
步骤112:通过geohash算法将所有位置点编码成长度为n的字符串。
进一步地,可以设置所述通过geohash算法将位置点编码成字符串具体为:首先,将经纬度范围看作二维平面坐标系;然后,采用二分法对经度/纬度进行划分,根据位置点经度/纬度在划分结果中的位置分别赋值0或1,直到划分次数满足对应的经/纬度位串的位数;之后,通过位交错方法合并经度位串与纬度位串;最后,通过Base32编码将经纬度位串编码为相应长度的字符串。
进一步地,可以设置所述步骤310中,获取qs周围8个区域的geohash编码的方法:根据qs的经纬度位串,东/西方向的区域编码:经度位串不变,纬度位串加/减1,通过位交错方法得到该区域的经纬度位串;南/北方向的区域编码:纬度位串不变,经度位串减/加1,通过位交错方法得到该区域的经纬度位串;东北/西南方向的区域编码,经纬度位串均加/减1,通过位交错方法得到该区域的经纬度位串;东南方向的区域编码:纬度位串加1,经度位串减1,通过位交错方法得到该区域的经纬度位串;西北方向的区域编码:纬度位串减1,经度位串加1,通过位交错方法得到该区域的经纬度位串;之后,通过Base32编码将以上8个位串进行编码即可获得qs周围8个区域的geohash编码。
进一步地,可以设置所述步骤320中,根据检索B-Tree索引结构返回ID的方法为:
从根结点开始重复如下过程:若比结点的第一个关键字小,则查找在该结点第一个指针指向的结点进行;若等于结点中某个关键字,则查找成功;若在两个关键字之间,则查找在它们之间的指针指向的结点进行;若比该结点所有关键字大,则查找在该结点最后一个指针指向的结点进行;若查找已经到达某个叶子结点,未匹配成功,则查找失败,其中,字符串的前p位为关键字。
进一步地,可以设置所述步骤330中,根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围方法如下:纬度的最大值maxLat = lat + range,纬度的最小值minLat = lat - range;经度的最大值 maxLng = lon + lngR,经度的最小值minLng =lon - lngR;其中,lat表示查询位置点q的纬度值,lon 表示查询位置点q的经度值,range=180 / π * d / 6372.797,lngR = range / cos(lat *π/ 180.0)。
一种基于Geo-BTree的范围查询装置,包括:
数据预处理装置,用于将数据集中所有位置点编码成长度为n的字符串string,根据字符串按字典序对数据集中的位置点排序并编号ID;
空间索引建立装置,用于根据排序后的字符串构建B-Tree索引结构;
范围查询装置,用于以检索B-Tree索引结构返回的ID为起始点双向搜索获取查询域内的ID,经过滤得到ID候选集,并对候选集中ID所对应的位置点验证返回查询范围内的位置点。
上面结合图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
Claims (10)
1.一种基于Geo-BTree的范围查询方法,其特征在于:包括:
数据预处理步骤,将数据集中所有位置点编码成长度为n的字符串string,根据字符串按字典序对数据集中的位置点排序并编号ID;
空间索引建立步骤,根据排序后的字符串构建B-Tree索引结构;
范围查询步骤,以检索B-Tree索引结构返回的ID为起始点双向搜索获取查询域内的ID,经过滤得到ID候选集,并对候选集中ID所对应的位置点验证返回查询范围内的位置点。
2.根据权利要求1所述的基于Geo-BTree的范围查询方法,其特征在于:所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点构成的数据集D,通过geohash算法将D中的位置点编码成长度为n的字符串string;其中,位置点由纬度、经度数据构成;
步骤120:根据字符串按字典序对数据集中的位置点排序并编号,该编号即为对应的位置点ID,每一行数据称为一条记录,则由这些数据组成的数据集称为记录集;其中,记录由ID、纬度、经度、字符串组成。
3.根据权利要求1所述的基于Geo-BTree的范围查询方法,其特征在于:所述空间索引建立步骤,具体为:
步骤210:根据字符串构建B-Tree索引结构,每个结点至少存储1个<string,ID>。
4.根据权利要求1所述的基于Geo-BTree的范围查询方法,其特征在于:所述范围查询步骤,具体包括如下步骤:
步骤310:给定查询位置点q和查询距离范围d,根据geohash精度表选定与d相对应的geohash编码长度p,通过geohash算法将位置点q编码为p位长度的字符串qs,获取字符串qs周围8个区域的geohash编码,并将字符串qs及其周围8个区域的geohash编码分别作为查询域,共9个查询域;其中,p对应的距离误差不小于d且为最小值,每一个geohash编码表示一个区域;
步骤320:根据检索B-Tree索引结构返回的ID,在记录集中以此ID为起始点双向搜索至不满足查询条件,返回满足查询条件的ID,为一个查询域内的ID;重复以上操作至获取9个查询域内的ID;其中,每一行数据称为一条记录,则由这些数据组成的数据集称为记录集,记录由ID、纬度、经度、字符串组成;查询条件指记录集中字符串的前p位与查询域的geohash编码相同;
步骤330:根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围,通过经纬度范围对9个查询域内的ID进行筛选,最终得到ID候选集;
步骤340:计算候选集中ID对应的位置点到q的距离dq:若dq≤d,则返回该位置点,否则,不返回。
5.根据权利要求2所述的基于Geo-BTree的范围查询方法,其特征在于:所述步骤110,包括下列步骤111、112:
步骤111:根据geohash精度表确定geohash编码长度n;
步骤112:通过geohash算法将所有位置点编码成长度为n的字符串。
6.根据权利要求2或4所述的基于Geo-BTree的范围查询方法,其特征在于:所述通过geohash算法将位置点编码成字符串具体为:首先,将经纬度范围看作二维平面坐标系;然后,采用二分法对经度/纬度进行划分,根据位置点经度/纬度在划分结果中的位置分别赋值0或1,直到划分次数满足对应的经/纬度位串的位数;之后,通过位交错方法合并经度位串与纬度位串;最后,通过Base32编码将经纬度位串编码为相应长度的字符串。
7.根据权利要求4所述的基于Geo-BTree的范围查询方法,其特征在于:所述步骤310中,获取qs周围8个区域的geohash编码的方法:根据qs的经纬度位串,东/西方向的区域编码:经度位串不变,纬度位串加/减1,通过位交错方法得到该区域的经纬度位串;南/北方向的区域编码:纬度位串不变,经度位串减/加1,通过位交错方法得到该区域的经纬度位串;东北/西南方向的区域编码,经纬度位串均加/减1,通过位交错方法得到该区域的经纬度位串;东南方向的区域编码:纬度位串加1,经度位串减1,通过位交错方法得到该区域的经纬度位串;西北方向的区域编码:纬度位串减1,经度位串加1,通过位交错方法得到该区域的经纬度位串;之后,通过Base32编码将以上8个位串进行编码即可获得qs周围8个区域的geohash编码。
8.根据权利要求4所述的基于Geo-BTree的范围查询方法,其特征在于:所述步骤320中,根据检索B-Tree索引结构返回ID的方法为:
从根结点开始重复如下过程:若比结点的第一个关键字小,则查找在该结点第一个指针指向的结点进行;若等于结点中某个关键字,则查找成功;若在两个关键字之间,则查找在它们之间的指针指向的结点进行;若比该结点所有关键字大,则查找在该结点最后一个指针指向的结点进行;若查找已经到达某个叶结点,还未匹配成功,则查找失败,其中,字符串的前p位为关键字。
9.根据权利要求4所述的基于Geo-BTree的范围查询方法,其特征在于:所述步骤330中,根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围方法如下:纬度的最大值maxLat = lat + range,纬度的最小值minLat = lat - range;经度的最大值 maxLng= lon + lngR,经度的最小值minLng = lon - lngR;其中,lat表示查询位置点q的纬度值,lon 表示查询位置点q的经度值,range =180 / π * d / 6372.797,lngR = range / cos(lat *π/ 180.0)。
10.一种基于Geo-BTree的范围查询装置,其特征在于:包括:
数据预处理装置,用于将数据集中所有位置点编码成长度为n的字符串string,根据字符串按字典序对数据集中的位置点排序并编号ID;
空间索引建立装置,用于根据排序后的字符串构建B-Tree索引结构;
范围查询装置,用于以检索B-Tree索引结构返回的ID为起始点双向搜索获取查询域内的ID,经过滤得到ID候选集,并对候选集中ID所对应的位置点验证返回查询范围内的位置点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710843972.0A CN107766433B (zh) | 2017-09-19 | 2017-09-19 | 一种基于Geo-BTree的范围查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710843972.0A CN107766433B (zh) | 2017-09-19 | 2017-09-19 | 一种基于Geo-BTree的范围查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107766433A true CN107766433A (zh) | 2018-03-06 |
CN107766433B CN107766433B (zh) | 2021-05-14 |
Family
ID=61266076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710843972.0A Active CN107766433B (zh) | 2017-09-19 | 2017-09-19 | 一种基于Geo-BTree的范围查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107766433B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108628950A (zh) * | 2018-04-04 | 2018-10-09 | 昆明理工大学 | 一种基于文本-域倒排的空间文本查询方法及装置 |
CN108776666A (zh) * | 2018-05-04 | 2018-11-09 | 昆明理工大学 | 一种基于关键词倒排与Trie的空间关键词查询方法及装置 |
CN108776667A (zh) * | 2018-05-04 | 2018-11-09 | 昆明理工大学 | 一种基于geohash与B-Tree的空间关键词查询方法及装置 |
CN108846013A (zh) * | 2018-05-04 | 2018-11-20 | 昆明理工大学 | 一种基于geohash与Patricia Trie的空间关键词查询方法及装置 |
CN108874880A (zh) * | 2018-05-04 | 2018-11-23 | 昆明理工大学 | 一种基于Trie的空间关键词查询方法及装置 |
CN111931015A (zh) * | 2020-08-11 | 2020-11-13 | 付立军 | 一种基于地质沉降数据的容差式线查询数据方法 |
CN112214645A (zh) * | 2019-07-11 | 2021-01-12 | 杭州海康威视数字技术股份有限公司 | 一种存储轨迹数据的方法及装置 |
WO2021068347A1 (zh) * | 2019-10-12 | 2021-04-15 | 平安科技(深圳)有限公司 | 自适应位置查询方法、装置、计算机设备及存储介质 |
CN112988797A (zh) * | 2021-03-18 | 2021-06-18 | 中睿信数字技术有限公司 | 基于p-stable lsh的时空伴随查询方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103383682A (zh) * | 2012-05-01 | 2013-11-06 | 刘龙 | 一种地理编码方法、位置查询***及方法 |
CN104008212A (zh) * | 2014-06-23 | 2014-08-27 | 中国科学院重庆绿色智能技术研究院 | 一种地理位置信息相关联的物联网时间序列数据存取方法 |
CN104199986A (zh) * | 2014-09-29 | 2014-12-10 | 国家电网公司 | 基于hbase和geohash的矢量数据空间索引方法 |
CN104516950A (zh) * | 2014-12-10 | 2015-04-15 | 百度在线网络技术(北京)有限公司 | 一种兴趣点的查询方法及装置 |
CN105426491A (zh) * | 2015-11-23 | 2016-03-23 | 武汉大学 | 一种时空地理大数据的检索方法及*** |
US20160171027A1 (en) * | 2014-03-31 | 2016-06-16 | International Business Machines Corporation | Fast and accurate geomapping |
CN105843948A (zh) * | 2016-04-08 | 2016-08-10 | 南京大学 | 一种移动环境下基于索引技术的景点智能推荐方法 |
US20170193041A1 (en) * | 2016-01-05 | 2017-07-06 | Sqrrl Data, Inc. | Document-partitioned secondary indexes in a sorted, distributed key/value data store |
-
2017
- 2017-09-19 CN CN201710843972.0A patent/CN107766433B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103383682A (zh) * | 2012-05-01 | 2013-11-06 | 刘龙 | 一种地理编码方法、位置查询***及方法 |
US20160171027A1 (en) * | 2014-03-31 | 2016-06-16 | International Business Machines Corporation | Fast and accurate geomapping |
CN104008212A (zh) * | 2014-06-23 | 2014-08-27 | 中国科学院重庆绿色智能技术研究院 | 一种地理位置信息相关联的物联网时间序列数据存取方法 |
CN104199986A (zh) * | 2014-09-29 | 2014-12-10 | 国家电网公司 | 基于hbase和geohash的矢量数据空间索引方法 |
CN104516950A (zh) * | 2014-12-10 | 2015-04-15 | 百度在线网络技术(北京)有限公司 | 一种兴趣点的查询方法及装置 |
CN105426491A (zh) * | 2015-11-23 | 2016-03-23 | 武汉大学 | 一种时空地理大数据的检索方法及*** |
US20170193041A1 (en) * | 2016-01-05 | 2017-07-06 | Sqrrl Data, Inc. | Document-partitioned secondary indexes in a sorted, distributed key/value data store |
CN105843948A (zh) * | 2016-04-08 | 2016-08-10 | 南京大学 | 一种移动环境下基于索引技术的景点智能推荐方法 |
Non-Patent Citations (4)
Title |
---|
QI LIU 等: "GB-Tree: An Efficient LBS Location Data Indexing Method", 《2014 THE THIRD INTERNATIONAL CONFERENCE ON AGRO-GEOINFORMATICS》 * |
Y LI等: "Geohashed Spatial Index Method for a Location-Aware WBAN Data Monitoring System Based on NoSQL", 《JOURNAL OF INFORMATION PROCESSING SYSTEMS》 * |
向隆刚 等: "大规模轨迹数据的Geohash编码组织及高效范围查询", 《武汉大学学报(信息科学版)》 * |
方金云 等: "基于Spark的空间数据实时访存技术的研究", 《地理信息世界》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108628950A (zh) * | 2018-04-04 | 2018-10-09 | 昆明理工大学 | 一种基于文本-域倒排的空间文本查询方法及装置 |
CN108628950B (zh) * | 2018-04-04 | 2022-07-19 | 昆明理工大学 | 一种基于文本-域倒排的空间文本查询方法及装置 |
CN108874880B (zh) * | 2018-05-04 | 2021-11-23 | 昆明理工大学 | 一种基于Trie的空间关键词查询方法及装置 |
CN108846013A (zh) * | 2018-05-04 | 2018-11-20 | 昆明理工大学 | 一种基于geohash与Patricia Trie的空间关键词查询方法及装置 |
CN108874880A (zh) * | 2018-05-04 | 2018-11-23 | 昆明理工大学 | 一种基于Trie的空间关键词查询方法及装置 |
CN108776667A (zh) * | 2018-05-04 | 2018-11-09 | 昆明理工大学 | 一种基于geohash与B-Tree的空间关键词查询方法及装置 |
CN108846013B (zh) * | 2018-05-04 | 2021-11-23 | 昆明理工大学 | 一种基于geohash与Patricia Trie的空间关键词查询方法及装置 |
CN108776666B (zh) * | 2018-05-04 | 2022-05-20 | 昆明理工大学 | 一种基于关键词倒排与Trie的空间关键词查询方法及装置 |
CN108776666A (zh) * | 2018-05-04 | 2018-11-09 | 昆明理工大学 | 一种基于关键词倒排与Trie的空间关键词查询方法及装置 |
CN112214645A (zh) * | 2019-07-11 | 2021-01-12 | 杭州海康威视数字技术股份有限公司 | 一种存储轨迹数据的方法及装置 |
CN112214645B (zh) * | 2019-07-11 | 2023-09-19 | 杭州海康威视数字技术股份有限公司 | 一种存储轨迹数据的方法及装置 |
WO2021068347A1 (zh) * | 2019-10-12 | 2021-04-15 | 平安科技(深圳)有限公司 | 自适应位置查询方法、装置、计算机设备及存储介质 |
CN111931015A (zh) * | 2020-08-11 | 2020-11-13 | 付立军 | 一种基于地质沉降数据的容差式线查询数据方法 |
CN111931015B (zh) * | 2020-08-11 | 2022-04-26 | 付立军 | 一种基于地质沉降数据的容差式线查询数据方法 |
CN112988797A (zh) * | 2021-03-18 | 2021-06-18 | 中睿信数字技术有限公司 | 基于p-stable lsh的时空伴随查询方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107766433B (zh) | 2021-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107766433A (zh) | 一种基于Geo‑BTree的范围查询方法及装置 | |
CN107798054B (zh) | 一种基于Trie的范围查询方法及装置 | |
CN108846013B (zh) | 一种基于geohash与Patricia Trie的空间关键词查询方法及装置 | |
CN104199986B (zh) | 基于hbase和geohash的矢量数据空间索引方法 | |
CN107153711A (zh) | 地理信息数据处理方法及装置 | |
CN101673307B (zh) | 空间数据索引方法及*** | |
CN109101474B (zh) | 一种地址聚合的方法、包裹聚合的方法以及设备 | |
CN105426491A (zh) | 一种时空地理大数据的检索方法及*** | |
CN111522892B (zh) | 地理要素的检索方法及装置 | |
CN102982103A (zh) | 一种olap海量多维数据维存储方法 | |
CN112685407A (zh) | 一种基于GeoSOT全球剖分网格编码的空间数据索引方法 | |
CN108776666B (zh) | 一种基于关键词倒排与Trie的空间关键词查询方法及装置 | |
CN108009265B (zh) | 一种云计算环境下的空间数据索引方法 | |
CN106874425B (zh) | 基于Storm的实时关键词近似搜索算法 | |
CN106991149B (zh) | 一种融合编码和多版本数据的海量空间对象存储方法 | |
CN103002061A (zh) | 一种长域名与短域名互相转化的方法及装置 | |
CN112214485B (zh) | 基于全球剖分网格的电网资源数据组织规划方法 | |
CN109885638B (zh) | 一种三维立体空间索引方法及*** | |
Cho et al. | A GPS trajectory map-matching mechanism with DTG big data on the HBase system | |
CN112948717B (zh) | 一种基于多因素约束的海量空间poi搜索方法及*** | |
CN108776667B (zh) | 一种基于geohash与B-Tree的空间关键词查询方法及装置 | |
CN106407221B (zh) | 地址数据检索方法及装置 | |
CN108345607B (zh) | 搜索方法和装置 | |
CN103631839B (zh) | 一种页面地域权重模型实现方法 | |
CN107729494A (zh) | 一种基于z型空间曲线映射的poi检索方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |