一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于北斗网格码的矢量空间数据存储与查询方法与流程

2022-11-23 13:44:31 来源:中国专利 TAG:


1.本发明涉及数据库存储技术领域,尤其涉及一种基于北斗网格码的矢量空间数据存储与查询方法。


背景技术:

2.矢量空间数据是指与地理位置相关的或包含地理信息的数据模型,是利用几何中的点、线、面以及组合体来表示地理实体空间分布,使用一组坐标(空间特征)加上属性信息(空间属性)来描述地理实体空间特征。最早期,矢量空间数据是采用文件的形式进行存储和管理,后来,随着关系型数据库(rdbms)和对象关系型数据库(o-rdbms)的发展,渐渐的通过数据库的形式来存储和管理矢量空间数据,相比文件存储的方式,数据库技术提供完整的数据管理能力、坐标和属性数据一体化存储、多用户并发访问(读取和写入)、完善的访问权限控制和数据安全机制等。
3.文件存储采用的是esri开发的shape文件格式,使用arcmap或者qgis桌面软件或者通过geotools工具进行读写操作;数据库存储采用的是ogc标准,通过描述一组sql几何类型,以及在这些类型上创建和分析几何的函数,使开发人员能够通过sql的方式对矢量空间数据进行读写操作。
4.对于文件存储的方式,存在如下缺陷:1、shape文件格式不是一个单文件,是一系列的文件集合,不利于资源共享。
5.2、需要使用专业软件(arcmap、qgis)进行加载,使用不方便。
6.3、无法满足多用户并发访问,多用户权限控制不足等。
7.在实际应用中,通常会将文件导入到数据库中,用数据库进行存储和查询,但是也存在如下缺陷:1、空间数据索引存在许多缺陷,无法充分发挥数据库索引的优势。
8.2、存储的数据是精确数据,脱密处理比较麻烦。
9.3、数据存储粒度是要素,无法支持更细粒度(要素结点)的操作查询,如果移动一个要素的结点,需要重新构造一个要素并更新原有的要素。
10.4、并不是所有的数据库都支持空间数据类型,限制数据库的选型。


技术实现要素:

11.本发明提供了一种基于北斗网格码的矢量空间数据存储与查询方法,包括:存储方法,具体包括:将一个shape文件转换为数据库存储时:文件信息存储在t_layer表中;矢量要素信息存储在t_feature表中;矢量要素的结点转换为北斗网格码;线、面要素的边用北斗网格码进行插值加密存储在t_code表中;
为t_code表建立列索引;查询方法,具体包括:将点面(x,y)转为北斗网格码a,计算北斗网格码a相对于网格码边界的上边距h和右边距w;根据上边距h和右边距w筛选出可能包含的要素结果集;计算北斗网格码a相对于要素结果集中要素i最小外接矩阵左上角的行row和列col;根据行row和列col筛选出当前要素的网格码;对于row所在行的网格码集合:按环分组,每组按网格码升序排序,同时标记环是顺时针或逆时针,标记环是外环还是内环;如果北斗网格码a在环上,则判断是否在面内,如果在面内,则结束,如果不在面上,则继续处理下一要素i 1,如果北斗网格码a不在环上,则当前网格码所在行的前后网格码所在的环相同且是外环或者所在环不同,继续处理下一要素i 1;对于col所在列的网格码集合:按环分组,每组按网格码升序排序,同时标记环是顺时针或逆时针,标记环是外环或内环;如果北斗网格码a在环上,则判断是否在面内,如果在面内,则结束,如果不在面内,则继续处理下一要素i 1,如果北斗网格码a不在环上,则当前网格码所在列的上下网格码所在的环相同且是外环或者所在环不同,继续处理下一要素i 1。
12.如上所述的一种基于北斗网格码的矢量空间数据存储与查询方法,其中,插值加密具体为:当用北斗网格码表示线段时,通过两个端点对应的北斗网格码无法表示线段在北斗网格码环境中的空间位置与特征,计算线段所经过的所有北斗网格码,用这些北斗网格码按顺序表示线段,这个过程称为插值加密;插值加密后面要素的边界由北斗网格码组成封闭的空间,线要素由北斗网格码组成连续的空间。
13.如上所述的一种基于北斗网格码的矢量空间数据存储与查询方法,其中,对于斜率k》0的线段,计算过程如下:设网格码起点a、网格码终点b,线段起点x,y,线段终点x’,y’;设线段斜率为k1,线段起点与网格码a右上角连线斜率k2,起点与终点的哈曼顿距离d;判断k1是否小于k2,如果是,则将线段起点x 、终点x’ ,再计算x 与x’ 的哈曼顿距离dx ;否则将线段起点y 、终点y’ ,再计算y 与y’ 的曼哈顿距离dy ;判断dx 与dy 的和是否小于起点与终点的哈曼顿距离d,如果是,则返回重新计算,否则结束。
14.如上所述的一种基于北斗网格码的矢量空间数据存储与查询方法,其中,当a在环上,判断是否在面内,具体为:对于插值加密的网格码:

外环是顺时针时,若k1≥k,则点在面外,若k1<k,则点在面内;

外环是逆时针时,若k2≥k,则点在面内,若k2<k,则点在面外。
15.如上所述的一种基于北斗网格码的矢量空间数据存储与查询方法,其中,当a在环上,判断是否在面内,具体为:
对于原始结点的网格码:以原始结点建立临时直角坐标系,根据原始结点的前后两条边的斜率所在的象限、环的方向、内外环,计算所属面内部的角度范围α,然后判断待查点域水平正方向的角度是否在角度α之间;若外环是顺时针,则如果preα>nextα,则角度范围α:[0,nextα],[preα,360],否则角度范围α:[preα,nextα];若外环是逆时针,则如果preα>nextα,则角度范围α:[preα,nextα],否则角度范围α:[0,nextα],[preα,360];若内环是顺时针,则如果preα>nextα,则角度范围α:[preα,nextα],否则角度范围α:[0,nextα],[preα,360];若内环是逆时针,则如果preα>nextα,则角度范围α:[preα,nextα],否则角度范围α:[0,nextα],[preα,360]。
[0016]
本发明还提供一种基于北斗网格码的矢量空间数据存储与查询装置,包括:所述装置包括存储模块和查询模块;存储模块,用于将一个shape文件转换为数据库存储时,文件信息存储在t_layer表中;矢量要素信息存储在t_feature表中;矢量要素的结点转换为北斗网格码;线、面要素的边用北斗网格码进行插值加密存储在t_code表中;为t_code表建立列索引;查询模块,用于将点面(x,y)转为北斗网格码a,计算北斗网格码a相对于网格码边界的上边距h和右边距w;根据上边距h和右边距w筛选出可能包含的要素结果集;计算北斗网格码a相对于要素结果集中要素i最小外接矩阵左上角的行row和列col;根据行row和列col筛选出当前要素的网格码;对于row所在行的网格码集合:按环分组,每组按网格码升序排序,同时标记环是顺时针或逆时针,标记环是外环还是内环;如果北斗网格码a在环上,则判断是否在面内,如果在面内,则结束,如果不在面上,则继续处理下一要素i 1,如果北斗网格码a不在环上,则当前网格码所在行的前后网格码所在的环相同且是外环或者所在环不同,继续处理下一要素i 1;对于col所在列的网格码集合:按环分组,每组按网格码升序排序,同时标记环是顺时针或逆时针,标记环是外环或内环;如果北斗网格码a在环上,则判断是否在面内,如果在面内,则结束,如果不在面内,则继续处理下一要素i 1,如果北斗网格码a不在环上,则当前网格码所在列的上下网格码所在的环相同且是外环或者所在环不同,继续处理下一要素i 1。
[0017]
本发明还提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中包含一个或多个程序指令,所述一个或多个程序指令用于被处理器执行上述任一项所述的一种基于北斗网格码的矢量空间数据存储和查询方法。
[0018]
本发明实现的有益效果如下:基于数据库存储方式,用北斗网格码来构造矢量空间数据,解决空间索引的弊端和提供更细粒度的数据细节,在存储阶段进行脱密处理,保证敏感数据的安全。
附图说明
[0019]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0020]
图1是本发明实施例一提供的一种基于北斗网格码的矢量空间数据存储方法流程图;图2是本发明实施例一提供的一种基于北斗网格码的矢量空间数据查询方法流程图。
具体实施方式
[0021]
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0022]
实施例一本发明实施例一提供一种基于北斗网格码的矢量空间数据存储和查询方法,包括:参见图1,存储方法,具体包括:将一个shape文件转换为数据库存储时:文件信息存储在t_layer表中;矢量要素信息存储在t_feature表中;矢量要素的结点转换为北斗网格码;线、面要素的边用北斗网格码进行插值加密存储在t_code表中;为t_code表建立列索引。
[0023]
其中,插值加密具体为:当用北斗网格码表示线段时,通过两个端点对应的北斗网格码无法表示线段在北斗网格码环境中的空间位置与特征,计算线段所经过的所有北斗网格码,用这些北斗网格码按顺序表示线段,这个过程称为插值加密。插值加密后面要素的边界由北斗网格码组成封闭的空间,线要素由北斗网格码组成连续的空间。
[0024]
对于斜率k》0的线段,计算过程如下:设网格码起点a、网格码终点b,线段起点x,y,线段终点x’,y’;设线段斜率为k1,线段起点与网格码a右上角连线斜率k2,起点与终点的哈曼顿距离d;判断k1是否小于k2,如果是,则将线段起点x 、终点x’ ,再计算x 与x’ 的哈曼顿距离dx ;否则将线段起点y 、终点y’ ,再计算y 与y’ 的曼哈顿距离dy ;判断dx 与dy 的和是否小于起点与终点的哈曼顿距离d,如果是,则返回重新计算,否则结束。
[0025]
通过上述存储,一方面得到了矢量空间数据更细粒度的信息,能够支持对要素更细节(要素结点)的操作,同时对t_code表建立合适的列索引,相比原来的空间索引,提高索引效率;另一方面由于网格码表示的是一个区域,相对于结点的精确坐标,可以模糊矢量空间数据表示的空间精确位置,达到了数据脱密的目的。
[0026]
参见图2,查询方法,具体包括:
将点面(x,y)转为北斗网格码a,计算北斗网格码a相对于网格码边界的上边距h和右边距w;根据上边距h和右边距w筛选出可能包含的要素结果集;计算北斗网格码a相对于要素结果集中要素i最小外接矩阵左上角的行row和列col;根据行row和列col筛选出当前要素的网格码;对于row所在行的网格码集合:按环分组,每组按网格码升序排序,同时标记环是顺时针或逆时针,标记环是外环还是内环;如果北斗网格码a在环上,则判断是否在面内,如果在面内,则结束,如果不在面上,则继续处理下一要素i 1,如果北斗网格码a不在环上,则当前网格码所在行的前后网格码所在的环相同且是外环或者所在环不同,继续处理下一要素i 1;对于col所在列的网格码集合:按环分组,每组按网格码升序排序,同时标记环是顺时针或逆时针,标记环是外环或内环;如果北斗网格码a在环上,则判断是否在面内,如果在面内,则结束,如果不在面内,则继续处理下一要素i 1,如果北斗网格码a不在环上,则当前网格码所在列的上下网格码所在的环相同且是外环或者所在环不同,继续处理下一要素i 1。如需要继续处理下一要素则直至处理完要素结果集中的全部要素。
[0027]
具体地,当a在环上,则a可能是原始结点的网格码或者是插值加密的网格码,判断是否在面内,具体为:对于插值加密的网格码:

外环是顺时针时,若k1≥k,则点在面外,若k1<k,则点在面内;

外环是逆时针时,若k2≥k,则点在面内,若k2<k,则点在面外。
[0028]
对于原始结点的网格码:以原始结点建立临时直角坐标系,根据原始结点的前后两条边的斜率所在的象限、环的方向、内外环,计算所属面内部的角度范围α,然后判断待查点域水平正方向的角度是否在角度α之间。
[0029]
若外环是顺时针,则如果preα>nextα,则角度范围α:[0,nextα],[preα,360],否则角度范围α:[preα,nextα];若外环是逆时针,则如果preα>nextα,则角度范围α:[preα,nextα],否则角度范围α:[0,nextα],[preα,360];若内环是顺时针,则如果preα>nextα,则角度范围α:[preα,nextα],否则角度范围α:[0,nextα],[preα,360];若内环是逆时针,则如果preα>nextα,则角度范围α:[preα,nextα],否则角度范围α:[0,nextα],[preα,360]。
[0030]
为了加快空间查询的效率,我们引入了一些辅助计算的数据,这些辅助数据有助于查询时初步排除掉一些不可能的数据,避免不必要的计算消耗:(1)信封二维的矢量空间数据对于一个要素的信封是指要素的最小外接矩形,用北斗网格码表示就是最小外接矩形所经过的网格码集合,但是只需要最小外接矩形的左上角与右下角对应的北斗网格码即可。
[0031]
(2)margincss(cascading style sheets)中margin(css语法,这个简写属性用于在一个声明中设置所有当前或者指定元素所有外边距的宽度,或者设置各边上外边距的宽度)的概念,表示元素周围的空间。在北斗网格码空间内,通过margin表示一个要素的信封的四个边距离北斗网格码空间边界的距离,分别为上边距(top)、右边距(right)、下边距(bottom)、左边距(left),距离用北斗网格码的个数表示,这样能够快速的在北斗网格码空间内定位和辨别一个要素,有利于查询时过滤掉不相关的要素数据。
[0032]
(3)行列号相对于margin的作用,行列号是定位一个网格码在要素信封中的空间位置,用当前网格码相对于要素信封左边的距离表示列号,相对于要素信封上边的距离表示行号,在空间查询时极大的节省了计算时间。
[0033]
采用本技术技术方案,能够达到如下技术效果:1、允许可视化显示时降低数据的敏感性,模糊精确的空间特征。
[0034]
2、保证数据安全,在数据被盗取时,很难对数据进行还原。
[0035]
3、拓宽北斗网格码标准的应用范围。
[0036]
4、提供更细粒度的矢量空间数据操作方式,可以精确到对要素的结点操作。
[0037]
与上述实施例对应的,本发明实施例提供一种基于北斗网格码的矢量空间数据存储和查询装置,该装置包括:至少一个存储器和至少一个处理器;存储器用于存储一个或多个程序指令;处理器,用于运行一个或多个程序指令,用以执行一种基于北斗网格码的矢量空间数据存储和查询方法。
[0038]
与上述实施例对应的,本发明实施例提供一种计算机可读存储介质,计算机存储介质中包含一个或多个程序指令,一个或多个程序指令用于被处理器执行一种基于北斗网格码的矢量空间数据存储和查询方法。
[0039]
本发明所公开的实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序指令,当所述计算机程序指令在计算机上运行时,使得计算机执行上述的一种基于北斗网格码的矢量空间数据存储和查询方法。
[0040]
在本发明实施例中,处理器可以是一种集成电路芯片,具有信号的处理能力。处理器可以是通用处理器、数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific工ntegrated circuit,简称asic)、现场可编程门阵列(fieldprogrammable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0041]
可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。处理器读取存储介质中的信息,结合其硬件完成上述方法的步骤。
[0042]
存储介质可以是存储器,例如可以是易失性存储器或非易失性存储器,或可包括
易失性和非易失性存储器两者。
[0043]
其中,非易失性存储器可以是只读存储器(read-only memory,简称rom)、可编程只读存储器(programmable rom,简称prom)、可擦除可编程只读存储器(erasable prom,简称eprom)、电可擦除可编程只读存储器(electrically eprom,简称eeprom)或闪存。
[0044]
易失性存储器可以是随机存取存储器(random access memory,简称ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,简称sram)、动态随机存取存储器(dynamic ram,简称dram)、同步动态随机存取存储器(synchronous dram,简称sdram)、双倍数据速率同步动态随机存取存储器(double data ratesdram,简称ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,简称esdram)、同步连接动态随机存取存储器(synchlink dram,简称sldram)和直接内存总线随机存取存储器(directrambus ram,简称drram)。
[0045]
本发明实施例描述的存储介质旨在包括但不限于这些和任意其它适合类型的存储器。
[0046]
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件与软件组合来实现。当应用软件时,可以将相应功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
[0047]
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献