CN107766433B - 一种基于Geo-BTree的范围查询方法及装置 - Google Patents

一种基于Geo-BTree的范围查询方法及装置 Download PDF

Info

Publication number
CN107766433B
CN107766433B CN201710843972.0A CN201710843972A CN107766433B CN 107766433 B CN107766433 B CN 107766433B CN 201710843972 A CN201710843972 A CN 201710843972A CN 107766433 B CN107766433 B CN 107766433B
Authority
CN
China
Prior art keywords
query
longitude
latitude
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.)
Active
Application number
CN201710843972.0A
Other languages
English (en)
Other versions
CN107766433A (zh
Inventor
沈兵林
贾连印
丁家满
游进国
李晓武
左喻灏
胡俊涛
雷妍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kunming University of Science and Technology
Original Assignee
Kunming University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kunming University of Science and Technology filed Critical Kunming University of Science and Technology
Priority to CN201710843972.0A priority Critical patent/CN107766433B/zh
Publication of CN107766433A publication Critical patent/CN107766433A/zh
Application granted granted Critical
Publication of CN107766433B publication Critical patent/CN107766433B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, 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的范围查询方法及装置
技术领域
本发明涉及一种基于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|=
Figure DEST_PATH_IMAGE002
(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的范围查询方法进行比较,如下所述。
实验的测试环境,如下表所示,
Figure DEST_PATH_IMAGE004
实验数据集: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 (8)

1.一种基于Geo-BTree的范围查询方法,其特征在于:包括:
数据预处理步骤,将数据集中所有位置点编码成长度为n的字符串string,根据字符串按字典序对数据集中的位置点排序并编号ID;
空间索引建立步骤,根据排序后的字符串构建B-Tree索引结构;
范围查询步骤,以检索B-Tree索引结构返回的ID为起始点双向搜索获取查询域内的ID,经过滤得到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,则返回该位置点,否则,不返回。
2.根据权利要求1所述的基于Geo-BTree的范围查询方法,其特征在于:所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点构成的数据集D,通过geohash算法将D中的位置点编码成长度为n的字符串string;其中,位置点由纬度、经度数据构成;
步骤120:根据字符串按字典序对数据集中的位置点排序并编号,该编号即为对应的位置点ID,每一行数据称为一条记录,则由这些数据组成的数据集称为记录集;其中,记录由ID、纬度、经度、字符串组成。
3.根据权利要求2所述的基于Geo-BTree的范围查询方法,其特征在于:所述步骤110,包括下列步骤111、112:
步骤111:根据geohash精度表确定geohash编码长度n;
步骤112:通过geohash算法将所有位置点编码成长度为n的字符串。
4.根据权利要求1或2所述的基于Geo-BTree的范围查询方法,其特征在于:所述通过geohash算法将位置点编码成字符串具体为:首先,将经纬度范围看作二维平面坐标系;然后,采用二分法对经度/纬度进行划分,根据位置点经度/纬度在划分结果中的位置分别赋值0或1,直到划分次数满足对应的经/纬度位串的位数;之后,通过位交错方法合并经度位串与纬度位串;最后,通过Base32编码将经纬度位串编码为相应长度的字符串。
5.根据权利要求1所述的基于Geo-BTree的范围查询方法,其特征在于:所述步骤310中,获取qs周围8个区域的geohash编码的方法:根据qs的经纬度位串,东/西方向的区域编码:经度位串不变,纬度位串加/减1,通过位交错方法得到该区域的经纬度位串;南/北方向的区域编码:纬度位串不变,经度位串减/加1,通过位交错方法得到该区域的经纬度位串;东北/西南方向的区域编码,经纬度位串均加/减1,通过位交错方法得到该区域的经纬度位串;东南方向的区域编码:纬度位串加1,经度位串减1,通过位交错方法得到该区域的经纬度位串;西北方向的区域编码:纬度位串减1,经度位串加1,通过位交错方法得到该区域的经纬度位串;之后,通过Base32编码将以上8个位串进行编码即可获得qs周围8个区域的geohash编码。
6.根据权利要求1所述的基于Geo-BTree的范围查询方法,其特征在于:所述步骤320中,根据检索B-Tree索引结构返回ID的方法为:
从根结点开始重复如下过程:若比结点的第一个关键字小,则查找在该结点第一个指针指向的结点进行;若等于结点中某个关键字,则查找成功;若在两个关键字之间,则查找在它们之间的指针指向的结点进行;若比该结点所有关键字大,则查找在该结点最后一个指针指向的结点进行;若查找已经到达某个叶结点,还未匹配成功,则查找失败,其中,字符串的前p位为关键字。
7.根据权利要求1所述的基于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)。
8.一种采用权利要求1所述方法的基于Geo-BTree的范围查询装置,其特征在于:包括:
数据预处理装置,用于将数据集中所有位置点编码成长度为n的字符串string,根据字符串按字典序对数据集中的位置点排序并编号ID;
空间索引建立装置,用于根据排序后的字符串构建B-Tree索引结构;
范围查询装置,用于以检索B-Tree索引结构返回的ID为起始点双向搜索获取查询域内的ID,经过滤得到ID候选集,并对候选集中ID所对应的位置点验证返回查询范围内的位置点。
CN201710843972.0A 2017-09-19 2017-09-19 一种基于Geo-BTree的范围查询方法及装置 Active CN107766433B (zh)

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 CN107766433A (zh) 2018-03-06
CN107766433B true 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)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108628950B (zh) * 2018-04-04 2022-07-19 昆明理工大学 一种基于文本-域倒排的空间文本查询方法及装置
CN108874880B (zh) * 2018-05-04 2021-11-23 昆明理工大学 一种基于Trie的空间关键词查询方法及装置
CN108776666B (zh) * 2018-05-04 2022-05-20 昆明理工大学 一种基于关键词倒排与Trie的空间关键词查询方法及装置
CN108846013B (zh) * 2018-05-04 2021-11-23 昆明理工大学 一种基于geohash与Patricia Trie的空间关键词查询方法及装置
CN108776667B (zh) * 2018-05-04 2022-10-21 昆明理工大学 一种基于geohash与B-Tree的空间关键词查询方法及装置
CN112214645B (zh) * 2019-07-11 2023-09-19 杭州海康威视数字技术股份有限公司 一种存储轨迹数据的方法及装置
CN111078806B (zh) * 2019-10-12 2024-02-02 平安科技(深圳)有限公司 位置查询方法、装置、计算机设备及存储介质
CN111931015B (zh) * 2020-08-11 2022-04-26 付立军 一种基于地质沉降数据的容差式线查询数据方法
CN112988797A (zh) * 2021-03-18 2021-06-18 中睿信数字技术有限公司 基于p-stable lsh的时空伴随查询方法

Citations (6)

* Cited by examiner, † Cited by third party
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 武汉大学 一种时空地理大数据的检索方法及系统
CN105843948A (zh) * 2016-04-08 2016-08-10 南京大学 一种移动环境下基于索引技术的景点智能推荐方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11586680B2 (en) * 2014-03-31 2023-02-21 International Business Machines Corporation Fast and accurate geomapping
US20170193041A1 (en) * 2016-01-05 2017-07-06 Sqrrl Data, Inc. Document-partitioned secondary indexes in a sorted, distributed key/value data store

Patent Citations (6)

* Cited by examiner, † Cited by third party
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 武汉大学 一种时空地理大数据的检索方法及系统
CN105843948A (zh) * 2016-04-08 2016-08-10 南京大学 一种移动环境下基于索引技术的景点智能推荐方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
GB-Tree: An Efficient LBS Location Data Indexing Method;Qi Liu 等;《2014 The Third International Conference on Agro-Geoinformatics》;20140814;第1-5页 *
Geohashed Spatial Index Method for a Location-Aware WBAN Data Monitoring System Based on NoSQL;Y Li等;《JOURNAL OF INFORMATION PROCESSING SYSTEMS》;20160630(第12卷第2期);第263-274页 *
基于Spark的空间数据实时访存技术的研究;方金云 等;《地理信息世界》;20151225(第2015年06期);第24-31页 *
大规模轨迹数据的Geohash编码组织及高效范围查询;向隆刚 等;《武汉大学学报(信息科学版)》;20170105(第2017年01期);第21-27页 *

Also Published As

Publication number Publication date
CN107766433A (zh) 2018-03-06

Similar Documents

Publication Publication Date Title
CN107766433B (zh) 一种基于Geo-BTree的范围查询方法及装置
CN107798054B (zh) 一种基于Trie的范围查询方法及装置
CN108846013B (zh) 一种基于geohash与Patricia Trie的空间关键词查询方法及装置
Lin et al. Range-based skyline queries in mobile environments
CN107153711A (zh) 地理信息数据处理方法及装置
CN105701104B (zh) 一种基于地理信息的三维数据引擎系统
CN105426491A (zh) 一种时空地理大数据的检索方法及系统
CN112685407A (zh) 一种基于GeoSOT全球剖分网格编码的空间数据索引方法
CN108009265B (zh) 一种云计算环境下的空间数据索引方法
WO2021072874A1 (zh) 基于双数组的位置查询方法、装置、计算机设备及存储介质
CN111522892B (zh) 地理要素的检索方法及装置
CN106874425B (zh) 基于Storm的实时关键词近似搜索算法
US20210254995A1 (en) Methods, apparatuses, systems, and storage media for storing and loading visual localization maps
CN110765331A (zh) 一种时空数据的检索方法及系统
CN108776666B (zh) 一种基于关键词倒排与Trie的空间关键词查询方法及装置
Demiryurek et al. Indexing network voronoi diagrams
CN111104457A (zh) 基于分布式数据库的海量时空数据管理方法
US9910878B2 (en) Methods for processing within-distance queries
CN112035586A (zh) 基于可扩展学习索引的空间范围查询方法
CN109885638B (zh) 一种三维立体空间索引方法及系统
Zhang et al. Improving NoSQL storage schema based on Z-curve for spatial vector data
Kipf et al. Approximate geospatial joins with precision guarantees
CN111221813B (zh) 数据库索引以及数据库查询的处理方法、装置及设备
Cho et al. A basis of spatial big data analysis with map-matching system
Lai et al. A spatial multi-scale integer coding method and its application to three-dimensional model organization

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