CN106227781A - 大数据下空间单点数据的快速检索方法 - Google Patents
大数据下空间单点数据的快速检索方法 Download PDFInfo
- Publication number
- CN106227781A CN106227781A CN201610566055.8A CN201610566055A CN106227781A CN 106227781 A CN106227781 A CN 106227781A CN 201610566055 A CN201610566055 A CN 201610566055A CN 106227781 A CN106227781 A CN 106227781A
- Authority
- CN
- China
- Prior art keywords
- point position
- original point
- coordinate value
- retrieval
- distance
- 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 33
- 238000003860 storage Methods 0.000 claims abstract description 83
- 238000000151 deposition Methods 0.000 claims description 2
- 238000013459 approach Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000002360 preparation method Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 240000007594 Oryza sativa Species 0.000 description 1
- 235000007164 Oryza sativa Nutrition 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000000205 computational method Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 235000009566 rice Nutrition 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/90—Details of database functions independent of the retrieved data types
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种大数据下空间单点数据的快速检索方法,包括:对原始点位进行取整、排列;建立存储表,将排列后的各原始点位存储到存储表中;确定存储表的检索区间;寻找精选原始点位;寻找初级最近原始点位;计算横向条带的上、下检索区间的比较距离;判断初级最近原始点位是否为最终的最近原始点位;扩大横向条带的所述行检索区间的范围;确定最终的最近原始点位。该方法不需要遍历求解指定点位与所有原始点位之间的距离,只需对相当少的数据之间进行距离的计算就能够准确而又快速地找到那个符合要求的点位;节省了运算时间。
Description
技术领域
本发明属于空间信息技术领域,尤其涉及大数据下空间单点数据的快速检索方法。
背景技术
数据检索是大数据下各种数据处理的基础,因为处理数据必须要将数据处理对象从巨量数据集群中获取出来,才能实施相应各种处理措施。而空间数据是大数据中的具有框架性的基础数据,大量属性数据需要依附在空间数据上表现其特征,因而空间数据快速、准确地检索对于大数据的数据处理技术尤其重要。
而在空间单点数据的检索方面,还没有好的方法去进行高效率的检索。目前人们采用的主流方法是数据遍历方法,即对所有的数据从头到尾的逐一比对,直到检索出符合要求的空间点位数据。对于少量数据来说,这种思路是最直观的,也是很有效的,但是在大量的数据下,这种方法消耗的时间成本是无法接受的。
在空间单点数据中有大量的固定的原始点(或称已知点)数据,在检索中,确定一个新点(或称指定点),该新点是随机的,需要在大量的的已知点中找出与该新点距离最近的点(x,y)。这一问题是一个典型的大数据下空间数据检索的基础性问题,取出数据的要求仅是“与新点距离最近的点”,这一要求并不复杂。事实上,如果几万个点位数据,对于当代电脑并不算“十分大”,解决这一问题不应太困难,直观的计算方法是:遍历求解该新点与几万个已知点的欧氏距离,然后对比每个距离,从而获得最近点。这种思路是最直观的,但是在数量级更大的数据条件下,实施起来确实相当耗费计算资源。
发明内容
针对上述问题,本发明提出了一种大数据下空间单点数据的快速检索方法。该方法不需要遍历求解该点与所有点之间的距离,只需对相当少的数据之间进行距离的计算就能够准确而又快速地找到那个符合要求的点,解决了现有空间单点数据遍历法耗费时间及计算资源、效率低的问题。
为了实现上述目的,本发明技术方案如下:
一种大数据下空间单点数据的快速检索方法,包括:
步骤1:对原始点位进行取整、排列:将各原始点位取整;按照y坐标值的大小顺序对取整后各原始点位进行纵向排列;将纵向排列后y坐标值相同的原始点位按照x坐标值的大小顺序进行横向排列。
步骤2:建立存储表,将排列后的各原始点位存储到存储表中:所述存储表包含若干列和行;所述存储表的第一列用于存储y坐标值,其它列用于存储x坐标值,不同的x坐标值位于不同的列中。
步骤3:确定所述存储表的检索区间:根据指定点位的y坐标值,确定所述存储表所要被检索的行检索区间,作为横向条带;所述指定点位的y坐标值接近所述横向条带的中间行存储的y坐标值;且所述中间行将所述横向条带分为上检索区间、下检索区间。
步骤4:寻找精选原始点位:分别选出横向条带每一行中与指定点位最近的候选原始点位,作为每一行的精选原始点位。
步骤5:寻找初级最近原始点位:分别计算每一行的精选原始点位到指定点位的距离,选出与指定点位最近的精选原始点位,作为初级最近原始点位;并选择初级最近原始点位到指定点位的距离作为初级最近距离。
步骤6:计算横向条带的上、下检索区间的比较距离:计算横向条带首行存储的y坐标值与指定点位的y坐标值的差的绝对值,作为上比较距离;计算横向条带末行存储的y坐标值与指定点位的y坐标值的差的绝对值,作为下比较距离。
步骤7:判断初级最近原始点位是否为最终的最近原始点位:判断上比较距离、下比较距离是否分别大于所述初级最近距离;若为是,则判定初级最近原始点位即为最终的最近原始点位;若为否,则判定初级最近原始点位不为最终的最近原始点位,并进行步骤8。
步骤8:扩大横向条带的所述行检索区间的范围:若上比较距离小于所述初级最近距离,则扩大上检索区间的范围,直至上比较距离不小于初级最近距离;若下比较距离小于所述初级最近距离,则扩大下检索区间的范围,直至下比较距离不小于初级最近距离。
步骤9:确定最终的最近原始点位:在上检索区间或下检索区间所扩大的范围内检索寻找与指定点位最近的新原始点位;判断初级最近距离是否大于新原始点位到指定点位的距离;若为是,则判定初级最近原始点位为最终的最近原始点位;若为否,则判定新原始点位为最终的最近原始点位。
所述步骤3包含:采用二分法查询存储表中所存储的与指定点位的y坐标值最接近的y坐标值所在行,作为所述横向条带的所述中间行;选取所述中间行的上、下若干行,并且包含所述中间行,作为所述横向条带。
所述存储表的每一行以所存储的y坐标值作为主键。
所述步骤1,按照y坐标值从大到小的顺序对取整后各原始点位进行纵向排列。
所述步骤1包含将纵向排列后的原始点位存储到一初存储表中。
该初存储表的行数等于原始点位的个数;并且所述初存储表有两列,第一列用于存储各原始点位的y坐标值,第二列用于存储各原始点位的x坐标值。
所述横向条带的检索范围为11行。
所述步骤4中,所述精选原始点位的获取方式为:计算横向条带的每一行中每一个原始点位与指定点位的x坐标值之差的绝对值;每一行中最小的所述绝对值所对应的原始点位即为每行所述的精选原始点位。
本发明的有益效果在于:
该方法不需要遍历求解指定点位与所有原始点位之间的距离,只需对相当少的数据之间进行距离的计算就能够准确而又快速地找到那个符合要求的点位;相对于最直观的遍历法,百万数据量级下,本算法的检索解算速度大大提高,节省了运算时间。
附图说明
图1为本发明实施例具体工作过程的流程示意图。
图2为本发明实施例n个点位原始数据存储表的结构示意图。
图3为本发明实施例n个点位原始数据整理后的数据存储表的结构示意图。
图4为选取与指定点位(xc,yc)最近距离候选点位的上、下各5行横向条带示意图。
图5为捡拾补遗最近距离点算法原理示意图。
具体实施方式
下面结合附图,对实施例作详细说明。
空间数据检索过程中,为了达到快速、准确的目的,在数据检索技术上应当遵循以下原则:1)检索数据对象应尽可能地少,从头到尾逐一检索的穷举(exhaustive)方法不可取,对于电脑资源耗用一定相当高,事实上也完全不必要。2)数据结构要设计合理,不经整理、杂乱无章的数据,检索起来一定耗费计算资源和增加时间成本,要将数据结构设计得便于快速检索。3)在数据检索的事先,必须做好充足的准备,准备越充分,检索就越快。当然,这里的准备要付出成本,要权衡成本与效益,如果仅为一两次的数据检索,投入大量的准备工作,成本过高也是一种资源浪费。另外,也要使编程(写程序)相对简单,因为程序过于复杂,也应视为人力资源的浪费。
空间数据的类型主要包括点、线、面、体四种。点具有几何确定的位置,可以用坐标对(x,y)来表示。坐标对由一个x坐标(水平坐标)和一个y坐标(垂直坐标)组成。x坐标是从左上角向右移动的水平距离。y坐标是从左上角向下移动的垂直距离。x轴描述水平坐标,y轴描述垂直坐标。
为了方便对本发明的理解,对本发明针对的应用场景做以下概括:1)有n个点位数据,全部已知其(x,y)坐标值;2)n个点位数据分布在一个空间范围内,随机分布,不均匀,有些地方较密集,有些地方较稀疏;3)“已知点(xc,yc)”以下称指定点,其点位也在2)中规定的空间范围内;4)包括指定点在内的所有n个点的坐标一律取米(m)为单位的整数,不取小数,原数据有小数,一律四舍五入取为整数;5)检索目标是找到指定点与n个点位数据中距离最近的点。
本发明的技术思想与人们眼睛在地图上进行数据检索方法是一致的。当人们事先指定地图上的某一点,如给出经纬度、某一居民点、某一公路路口等,要搜索距离指定点位C最近的乡镇,有经验的人可以这样搜索:先从指定点位的东西向搜索出最近乡镇A,然后在指定点位C的南北方位搜索是否存在乡镇,其与指定点位C的距离小于CA,如果有几个点,则确定这些点中最近距离的乡镇为要搜索的目标;如果没有,则乡镇A为要搜索的目标。这种搜索方法为本发明研究的问题提供了技术思想:首先在横向一个条带搜索,找到最近点位;然后以与最近点位的距离为尺度,在纵向搜索横向条带以外的部分发现最近距离的乡镇,经比较最终确定搜索目标。
如图1所示,基于上述思想,本发明提出了一种大数据下空间单点数据的快速检索方法。包括:(S1)对原始点位进行取整、排列;(S2)建立存储表,将排列后的各原始点位存储到存储表中;(S3)确定存储表的检索区间;(S4)寻找精选原始点位;(S5)寻找初级最近原始点位;(S6)计算横向条带的上、下检索区间的比较距离;(S7)判断初级最近原始点位是否为最终的最近原始点位;(S8)扩大横向条带的所述行检索区间的范围;(S9)确定最终的最近原始点位。
步骤1:对原始点位进行取整、排列:将各原始点位取整;按照y坐标值的大小顺序对取整后各原始点位进行纵向排列;然后将纵向排列后y坐标值相同的原始点位按照x坐标值的大小顺序进行横向排列。
更具体地,采用四舍五入法对原始点位进行取整;本实施例中,优选地,按照y坐标值的从大到小的顺序对取整后各原始点位进行纵向排列,将纵向排列后的原始点位存储到初存储表中。如图2所示,初存储表的行数等于原始点位的个数,每一行存储一个原始点位的坐标对信息;并且初存储表有两列,第一列用于存储原始点位的y坐标值,第二列用于存储原始点位的x坐标值。将初存储表中的原始点位进行横向排列。
为了减少数据处理工作量,可以将所有数据,按照式(1)处理,以减小数据位数,降低数据计算工作量以及缩小数据库的规模。
Xpi=xi-xmin;Ypi=yi-ymin (1)
式中,xi、yi为n个点位中第i个点位的坐标值;xmin,ymin为n个点位中的最小坐标值。
注意,将所有数据按照式(1)处理以后,从欧氏距离计算公式可以看到,并不影响指定点位分别与n个点位检索对象数据的距离。事实上,式(1)只是简单的坐标平移计算公式,坐标平移并不影响坐标系中各点之间的位置关系。
步骤2:建立存储表,将排列后的各原始点位存储到存储表中:该存储表包含若干列和行;存储表的第一列用于存储y坐标值,第一列以后的列用于存储x坐标值,不同的x坐标值位于不同的列中;存储表的每一行用于存储一个y坐标值及若干个x坐标值。
更具体地,参加图3所示的存储表。将每一个相同y坐标值的全部原始点位数据放在存储表的同一行,节省了y坐标数据的重复存储,存储表是典型的关系型数据库(relational database)数据存储表格,“y坐标”是数组(横行)的标识码(identificationcode),具有唯一性,可以作为主键。存储表这样的数据结构设计,大量地节省了数据空间。n个点位数据中,除了“y坐标,x坐标1”字段不可为空以外,其他栏目都可以为空;对于多出的字段值设置为空或用0补。
此外,存储表每一行(横向为行,纵向为列,下同)仅有一个y坐标值,在每个y坐标值下,有1个以上的x坐标值,每一x坐标值代表1个原始点位,x坐标i代表有i个原始点位。这里i是一个不定的数字,或许仅1个,或许有多个,但不会太多。如果仅1个点位,此横行中其余列的x坐标为空或用0补。
存储表是按原始点位的y坐标值排序的表,本实施例中,第一行的y坐标值最大,最后一行的y坐标值最小。需要注意的是相邻的行与行,y坐标数值的间隔并不是等间距的,而序号却是连续增加的。比如,第j行y坐标数值为981,第j+1行y坐标数值为978,而第j+2行y坐标数值为965。同样,在同一行中,x坐标1数值为89,x坐标2数值为95,而x坐标3数值为104,x坐标间距完全随机。并且,不同行的x坐标数目也随机,比如,第j行x坐标有3个数据,第j+1行x坐标有8个数据,而第j+2行x坐标有6个数据。这就是说在地面上,对于南北同一y坐标,东西横向上有随机个点位数据。
一般地,存储表纵向很长,考虑到相同y坐标、不同x坐标的点位估计平均有3个点位计算,纵向大约会有n/3行。一般数据库管理系统可以接受;而存储表横向不会很长,因为点位数据中相同y坐标、不同x坐标的点位数目不会很多,估计至多不会超过20个。这样在设计存储表的数据规模时,可以设定有22个栏目(列)即可。栏目设置过多,徒然浪费电脑存储空间。当然,如果不够,可以调整。
存储表在二维关系型数据库管理系统(DBMS)管理下,可以自动完成对某一数据项,如对y坐标数据进行排序,序号是自动随着横行的增加累加的。用户可以给出某一横行数据,DBMS管理系统可以自动根据y坐标数据大小进行在正确排序位置插入,存储表行号自动增加1个序号。DBMS管理系统还提供编程语言,在系统提供的功能基础上,进行编程,以增加新的功能。
步骤3:确定存储表的检索区间:根据指定点位的y坐标值,确定存储表所要被检索的行检索区间,作为横向条带;所述指定点位的y坐标值接近所述横向条带的中间行存储的y坐标值;且所述中间行将所述横向条带分为上检索区间、下检索区间。
具体地,本实施例中,上检索区间、下检索区间分别为5行;即横向条带有11行。需要讨论的是,横向条带的检索区间(11行)是可以调整、伸缩的。理论上讲,1行或2行的条带宽度也是可以的:如果在指定点(xc,yc)所在的点位数据行或上、下两行中恰好检索到距离(xc,yc)很近的点位,又以这一距离在指定点(xc,yc)的纵向方向上检索不到比这一距离更近的点位,最近距离的检索确实很快。但是这样设置又带来一个风险,即,也有可能恰好检索到距离(xc,yc)很远的点位,迫使捡拾遗漏最近距离点位的扩展横向条带拉得很宽,反而事与愿违,更加大了检索的工作量。因此,点位检索横向条带宽度的设置是一个折中:既要考虑点位检索横向条带宽度不能过宽,加大了候选最近点位的计算、比较工作量;又不能过窄,加大了为捡拾遗漏最近距离点位的扩展横向条带被拉得过宽,从而加大计算工作量。适当设置横向条带的宽度,可以降低需要扩展横向条带的概率以及减少捡拾遗漏最近距离点位的工作量。合理设置横向条带的宽度与原始点位数据的分布有关。由于当代电脑工作速度相当快,检索横向条带宽度多一点或少一点,对最终检索速度影响不会很大,因而不必过于繁琐地实验与调整宽度的设置。
将横向条带内各原始点位作为候选原始点位,参见图4。图4中,指定点位(xc,yc)在横行序号j与j+1之间,横向的直线对应存储表中的横行,纵向的直线的直线对应存储表中的纵行,图中的实心圆点C表示指定点位(xc,yc)数据的所在位置。注意图中横线间距或纵线间距都是不等、随机的,点位数据分布也是随机的。图4画出了存储表中原始点位y坐标值大于等于yc的最小值yi上、下各5行横向条带,P点是横向条带内距离指定点最近的点,K点是横向条带以外距离指定点最近的点。
作为数据处理的工作对象,相比n个所有原始点位数据分布区域,横向条带是很小的区域,这一区域包含的数据在n数据中占有很小的一部分,这就使为检索最近距离的数据处理工作量大幅度减少。
步骤3包含:
步骤301:采用二分法查询存储表中所存储的与指定点位的y坐标值最接近的的y坐标值所在行,作为所述横向条带的中间行。
步骤302:选取所述中间行的上、下若干行,并且包含所述中间行,作为所述横向条带。
具体地,将指定点位(xc,yc)在存储表中n个原始点位数据区域中定位,定义要检索的横向条带。在该数据库存储表中,用“两分法”在存储表中查寻与yc最短间距的行号位置。注意到存储表对于y坐标是排序的,因此为数据检索带来了方便。对于yc,可以将存储表M行,平分为上、下两部分,如果符合下式:
如果yc>ym/2,则在存储表上半部继续查寻;反之,
yc<ym/2,则在存储表下半部继续查寻;当然,
yc=ym/2,则已经查寻到此步骤的工作目标。
上式中,y下标“m/2”为存储表横行的序号。如果m为奇数,则将m加“1”变为偶数。
反复使用“两分法”在存储表中查寻,最终查寻到中间行的位置。
以指定点位(xc,yc)中“yc”为标准对其定位,找出存储表中大于等于“yc”的最小值“yi”为检索起点,以“yi”为中心上下两个方位的一定距离(本发明为5行、共计11行)划分出检索的工作范围,这一工作范围是包含指定点位(xc,yc)的横向条带。指定点位(xc,yc)靠近横向条带纵向的中部,这一条带囊括少量的、指定点位(xc,yc)周围的点位数据。这里的检索工作就在该横向条带中进行,从数据库中提取条带中的点位数据,计算指定点位(xc,yc)分别与这些点位数据的距离,并从中选定最近点位及与其最小的距离。由于横向条带仅仅是整个检索区域的很小一部分,这样将检索的工作对象缩小到很小的一个范围,从而最大限度地减少计算工作量。
步骤4:寻找精选原始点位:根据x坐标值的大小,分别选出横向条带每一行中与指定点位最近的候选原始点位,作为每一行的精选原始点位。
更具体地,对于存储表的同一横行,即y坐标值相同,则下列式(3)表示在这一y坐标值下的点位最有可能为最近距离的候选点位:
|xq-xc|=Min(|xi-xc|)i=1,2,3,…k) (3)
式中,xi为存储表同一横行,即y坐标值相同时的各原始点位x坐标值,k表示该横行原始点位的数目;xq为存储表这一横行中距离指定点(xc,yc)最近点位的x坐标值。括弧中的竖线为绝对值算符。
这样精选结果,横向条带中每一横行只选出1个原始点位,可能为最近距离的精选原始点位数目减少至11个。
步骤5:寻找初级最近原始点位:分别计算每一行的精选原始点位到指定点位的距离,选出与指定点位最近的精选原始点位,作为初级最近原始点位。并选择初级最近原始点位到指定点位的距离作为初级最近距离。
此时,11个精选原始点位的坐标已经是确定的,指定点位(xc,yc)坐标当然早已确定,精选原始点位作为计算公式中的(xi,yi),逐一计算指定点与11个候选点位的欧氏距离,并选取其中最近距离(dmin)的原始点位已是十分容易的事。
至此,经过上述步骤,已经在横向条带中确定出最接近指定点(xc,yc)的原始点位。以上算法尽管可行,但是有可能由于此前划定的检索横向条带宽度不够,位于指定点接近正上方、或正下方的点位数据在横向条带之外,选出的原始点位还很可能并不是真正的的最近原始点位,参见图5。图5中每条横线代表存储表中对应研究区域的一个y坐标,每条竖直线代表存储表中对应研究区域的一个x坐标。注意,横线与竖线的间距都是随机的,与存储表数据对应。由存储表可以看出,图5的每条横线与每条竖直线上都有至少1个点位以上的原始点位数据,有些部位可能有多个,且分布随机、不均。
在图5中,显而易见,点K1、点K2、点K3相比点p距离指定点c要近,而这3个点在取出的10或11横行最近距离候选点位范围以外,是上述算法所检索遗漏的点位;点p是在取出的10或11横行最近距离候选点位中距离点c最近的一个点,即所述初级最近原始点位。为此,需要做是否需要进行捡拾补遗最近距离候选点的判断。
如前所述,数据处理选择工作对象横向条带以指定点位的坐标值yc的横线划分,分为上检索区间、下检索区间,分别对两个检索区间进行捡拾补遗的判断。具体方法如下。
步骤6:计算横向条带的上、下检索区间的比较距离:计算横向条带首行存储的y坐标值与指定点位的y坐标值的差的绝对值,作为上比较距离;计算横向条带末行存储的y坐标值与指定点位的y坐标值的差的绝对值,作为下比较距离。
更具体地,对于横向条带上检索区间,按照式(4)进行以下计算:
dv1=yj-3-yc (4)
式中,yj-3为本发明步骤3中横向条带首行的y坐标值,作为数据处理选择工作对象横向条带的上检索区间的边沿。dv1为横向条带上检索区间的宽度,即所述上比较距离。
对于横向条带下检索区间,按照式(5)进行以下计算:
dv2=yc-yj+5 (5)
式中,yj+5为本发明步骤3中横向条带末行的y坐标值,作为数据处理选择工作对象横向条带的下检索区间的边沿。dv2为横向条带下检索区间的宽度,即所述下比较距离。
值得注意的是,由于本实施例中,存储表中y坐标值是由大到小的顺序纵向排列的,所以dv1与dv2都是正值,但通常是不等的。
步骤7:判断初级最近原始点位是否为最终的最近原始点位:判断上比较距离、下比较距离是否分别大于所述初级最近距离(dmin);若为是,则判定初级最近原始点位即为最终的最近原始点位;若为否,则判定初级最近原始点位不为最终的最近原始点位,并进行步骤8。
更具体地,对于横向条带上检索区间,检验式(6)是否成立:
dv1≥dmin (6)
如果式(6)成立,说明超出此横向条带上检索区间边沿的任何原始点位,不可能有点位与指定点位(xc,yc)的距离小于dmin;反之如果式(6)不成立,说明有可能存在超出此横向条带上检索区间边沿的任何原始点位,与指定点位(xc,yc)的距离小于dmin,参见图5。
同理,对于横向条带下检索区间,检验式(7)是否成立:
dv1≥dmin (7)
如果式(7)成立,说明超出此横向条带下检索区间边沿的任何原始点位,不可能有点位与指定点位(xc,yc)的距离小于dmin;反之如果式(7)不成立,说明有可能存在超出此横向条带下检索区间边沿的任何原始点位,与指定点位(xc,yc)的距离小于dmin,参见图5。
步骤8:扩大横向条带的所述行检索区间的范围:若上比较距离小于所述初级最近距离,则扩大上检索区间的范围,直至上比较距离不小于初级最近距离;若下比较距离小于所述初级最近距离,则扩大下检索区间的范围,直至下比较距离不小于初级最近距离。
在式(6)与式(7)两式中,如果两式中只要有一个公式不成立,或两公式都不成立,则需要对于不成立的横向条带以外的部分,即上检索区间、或下检索区间、或上下检索区间分别进行捡拾补遗最近距离点算法(简称补遗算法)计算。所谓补遗算法是指扩大、加宽选取与指定点(xc,yc)最近距离候选点位的上、下各5行横向条带,在横向条带的扩大、加宽部分继续选取与指定点(xc,yc)最近距离的候选点位。
步骤9:确定最终的最近原始点位:在上检索区间或下检索区间所扩大的范围内检索寻找与指定点位最近的新原始点位;判断初级最近距离是否大于新原始点位到指定点位的距离;若为是,则判定初级最近原始点位为最终的最近原始点位;若为否,则判定新原始点位为最终的最近原始点位。
更具体地,以上检索区间为例,结合步骤8所述,若式(6)不成立,那么,将横向条带上半部的宽度加大,即将横向条带上边界上移。为此,改变dv1的定义:原dv1的定义为“dv1=yj-3-yc”,见式(4),不断增加“yj-3”中y下标中的减数,即y下标变为“j-6”、“j-7”、……,减数每增加“1”,检验式(6)是否成立,直到式(6)成立或直至上比较距离不小于初级最近距离为止。此时,对于横向条带上检索区间宽度加大的部分,参照上述步骤4,分别选出上检索区间新增行的每一行中与指定点位(xc,yc)最近的原始点位。然后按照步骤5,在每行的最近的原始点位中计算并确定新的最近距离的点位,连同步骤5中选取的初级最近原始点位一起,确定出哪一个与指定点位(xc,yc)最近,即为最终的最近原始点位。
本发明的技术思想可以将检索对象从n个压缩至11×m个(本实施例的横向条带的宽度为11行;m即同一个y值,最多的x的个数,远小于n)以内,最大限度地减少了检索、计算工作量,从而可以数以百倍地提高了检索速度;并且确保了检索的准确、稳妥。
此外,本发明的可操作性强,能够很好的用程序语言实现。关系型数据库管理系统(DBMS)不仅提供数据排序、数据检索等强大的数据管理功能,而且也使数据输入提供了方便,甚至还可以实现自动数据输入,生成按照一定格式要求的二维数据文件。在DBMS平台上,还可运用系统提供的语言支持用户编程,扩展数据库管理系统的功能。本发明算法需要的对指定点的定位就可以运行用户编制的程序,大幅度提升了定位速度。但需要指出的是,权衡成本与效益,如果仅为一两次的数据检索,投入大量的准备工作,成本过高也是一种资源浪费,所以,本发明对于大数据下对空间单点数据多次同条件的检索来说,计算量少,是很高效的,非常节约计算资源。
此实施例仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (7)
1.一种大数据下空间单点数据的快速检索方法,其特征在于,包括:
步骤1:对原始点位进行取整、排列:将各原始点位取整;按照y坐标值的大小顺序对取整后各原始点位进行纵向排列;将纵向排列后y坐标值相同的原始点位按照x坐标值的大小顺序进行横向排列;
步骤2:建立存储表,将排列后的各原始点位存储到存储表中:所述存储表包含若干列和行;所述存储表的第一列用于存储y坐标值,其余列用于存储x坐标值,不同的x坐标值位于不同的列中;
步骤3:确定所述存储表的检索区间:根据指定点位的y坐标值,确定所述存储表所要被检索的行检索区间,作为横向条带;所述指定点位的y坐标值接近所述横向条带的中间行存储的y坐标值;且所述中间行将所述横向条带分为上检索区间、下检索区间;
步骤4:寻找精选原始点位:分别选出所述横向条带每一行中与所述指定点位最近的候选原始点位,作为每一行的精选原始点位;
步骤5:寻找初级最近原始点位:分别计算每一行的精选原始点位到所述指定点位的距离,选出与所述指定点位最近的精选原始点位,作为初级最近原始点位;并选择初级最近原始点位到所述指定点位的距离作为初级最近距离;
步骤6:计算所述横向条带的上、下检索区间的比较距离:计算所述横向条带首行存储的y坐标值与所述指定点位的y坐标值的差的绝对值,作为上比较距离;计算所述横向条带末行存储的y坐标值与所述指定点位的y坐标值的差的绝对值,作为下比较距离;
步骤7:判断初级最近原始点位是否为最终的最近原始点位:判断上比较距离、下比较距离是否分别大于所述初级最近距离;若为是,则判定初级最近原始点位即为最终的最近原始点位;若为否,则判定初级最近原始点位不为最终的最近原始点位,并进行步骤8;
步骤8:扩大所述横向条带的行检索区间的范围:若上比较距离小于所述初级最近距离,则扩大上检索区间的范围,直至上比较距离不小于初级最近距离;若下比较距离小于所述初级最近距离,则扩大下检索区间的范围,直至下比较距离不小于初级最近距离;
步骤9:确定最终的最近原始点位:在上检索区间或下检索区间所扩大的范围内检索寻找与所述指定点位最近的新原始点位;判断初级最近距离是否大于新原始点位到所述指定点位的距离;若为是,则判定初级最近原始点位为最终的最近原始点位;若为否,则判定新原始点位为最终的最近原始点位。
2.根据权利要求1所述大数据下空间单点数据的快速检索方法,其特征在于:
所述步骤3包含:
步骤301:采用二分法查询存储表中所存储的与所述指定点位的y坐标值最接近的y坐标值所在行,作为所述横向条带的所述中间行;
步骤302:选取所述中间行的上、下若干行,并且包含所述中间行,作为所述横向条带。
3.根据权利要求1所述大数据下空间单点数据的快速检索方法,其特征在于:
所述存储表的每一行以所存储的y坐标值作为主键。
4.根据权利要求1所述大数据下空间单点数据的快速检索方法,其特征在于:
所述步骤1,按照y坐标值从大到小的顺序对取整后各原始点位进行纵向排列。
5.根据权利要求1所述大数据下空间单点数据的快速检索方法,其特征在于:
所述步骤1包含将纵向排列后的原始点位存储到一初存储表中;
所述初存储表的行数等于原始点位的个数;并且所述初存储表有两列,第一列用于存储各原始点位的y坐标值,第二列用于存储各原始点位的x坐标值。
6.根据权利要求1所述大数据下空间单点数据的快速检索方法,其特征在于:
所述横向条带的检索范围为11行。
7.根据权利要求1所述大数据下空间单点数据的快速检索方法,其特征在于:
所述步骤4中,所述精选原始点位的获取方式为:
计算所述横向条带的每一行中每一个原始点位与所述指定点位的x坐标值之差的绝对值;每一行中最小的所述绝对值所对应的原始点位即为每行所述的精选原始点位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610566055.8A CN106227781B (zh) | 2016-07-18 | 2016-07-18 | 大数据下空间单点数据的快速检索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610566055.8A CN106227781B (zh) | 2016-07-18 | 2016-07-18 | 大数据下空间单点数据的快速检索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106227781A true CN106227781A (zh) | 2016-12-14 |
CN106227781B CN106227781B (zh) | 2019-08-23 |
Family
ID=57530855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610566055.8A Expired - Fee Related CN106227781B (zh) | 2016-07-18 | 2016-07-18 | 大数据下空间单点数据的快速检索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106227781B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693296A (zh) * | 2012-05-16 | 2012-09-26 | 南京信息工程大学 | 一种大批量二维点数据中坐标快速匹配的方法 |
CN103593409A (zh) * | 2013-10-22 | 2014-02-19 | 深圳市康拓普信息技术有限公司 | 实时数据库检索方法及检索系统 |
CN104182407A (zh) * | 2013-05-23 | 2014-12-03 | 中国科学院软件研究所 | 一种缩小数据查找范围的数据处理系统 |
US20150149458A1 (en) * | 2012-07-11 | 2015-05-28 | Postech Academy-Industry Foundation | Method for generating blocks for video searching and method for processing queries based on blocks generated thereby |
CN105184837A (zh) * | 2015-08-31 | 2015-12-23 | 武汉云空间地理信息技术有限公司 | 一种矢量多边形栅格化的算法及系统 |
-
2016
- 2016-07-18 CN CN201610566055.8A patent/CN106227781B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693296A (zh) * | 2012-05-16 | 2012-09-26 | 南京信息工程大学 | 一种大批量二维点数据中坐标快速匹配的方法 |
US20150149458A1 (en) * | 2012-07-11 | 2015-05-28 | Postech Academy-Industry Foundation | Method for generating blocks for video searching and method for processing queries based on blocks generated thereby |
CN104182407A (zh) * | 2013-05-23 | 2014-12-03 | 中国科学院软件研究所 | 一种缩小数据查找范围的数据处理系统 |
CN103593409A (zh) * | 2013-10-22 | 2014-02-19 | 深圳市康拓普信息技术有限公司 | 实时数据库检索方法及检索系统 |
CN105184837A (zh) * | 2015-08-31 | 2015-12-23 | 武汉云空间地理信息技术有限公司 | 一种矢量多边形栅格化的算法及系统 |
Non-Patent Citations (2)
Title |
---|
宋国民 等: "基于平行坐标的地理空间元数据可视化检索研究", 《测绘工程》 * |
王东旭 等: "地理数据空间本体构建及其在数据检索中的应用", 《地球信息科学》 * |
Also Published As
Publication number | Publication date |
---|---|
CN106227781B (zh) | 2019-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wang et al. | Ranking scientific articles by exploiting citations, authors, journals, and time information | |
US9703856B2 (en) | Hilbert curve partitioning for parallelization of DBSCAN | |
CN102867066B (zh) | 数据汇总装置和数据汇总方法 | |
CN106796589A (zh) | 空间数据对象的索引方法和系统 | |
US20140137062A1 (en) | Pattern matching based parasitic extraction with pattern reuse | |
Ward et al. | Real-time continuous intersection joins over large sets of moving objects using graphic processing units | |
Medina et al. | Indexing techniques to improve the performance of necessity-based fuzzy queries using classical indexing of RDBMS | |
CN102968813A (zh) | 一种三角面片网格模型的表面采样方法 | |
Hemalatha et al. | A recent survey on knowledge discovery in spatial data mining | |
Ghosh et al. | Traj-cloud: a trajectory cloud for enabling efficient mobility services | |
Teng et al. | IDEAL: a vector-raster hybrid model for efficient spatial queries over complex polygons | |
CN102637227B (zh) | 基于最短路径的土地资源评价因子作用域划分方法 | |
CN105138607B (zh) | 一种基于混合粒度分布式内存网格索引的knn查询方法 | |
CN106227781A (zh) | 大数据下空间单点数据的快速检索方法 | |
CN103942821A (zh) | 一种利用遥感影像快速获取城市用地现状图序列的方法 | |
CN104036024B (zh) | 一种基于GACUC和Delaunay三角网的空间聚类方法 | |
Aboulnaga et al. | Window query processing in linear quadtrees | |
García-García et al. | Efficient distributed algorithms for distance join queries in spark-based spatial analytics systems | |
CN104794120B (zh) | 一种海量地震数据并行抽道集方法 | |
Siqueira et al. | Benchmarking spatial data warehouses | |
US10176221B2 (en) | Data processing apparatus and prediction method of pattern frequency thereof | |
CN103345491B (zh) | 一种应用哈希Hash划分桶快速获得邻域的方法 | |
US20180149485A1 (en) | Road distance systems and methods | |
CN105912598A (zh) | 一种确定城市街道占道经营高发区域的方法及系统 | |
Zhang et al. | A novel method of similarity search for moving object trajectories |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190823 |