尺度适应的矢量数据集要素位图嵌入式编码方法

文档序号:6373241阅读:163来源:国知局
专利名称:尺度适应的矢量数据集要素位图嵌入式编码方法
技术领域
本发明涉及GIS领域中空间数据的索引编码技术,给出了一种尺度适应的矢量数据集要素位图嵌入式编码方法,实现了基于该方法的矢量数据集中各要素的位图嵌入式自适应编码,并在保证要素编码唯一的基础上,压缩该编码的数据存储量。
背景技术
矢量数据是GIS空间数据的一种重要的表达、组织方式,在绝大多数GIS系统中都需要应用到矢量数据。矢量数据按照特征要素模型来对空间实体进行表达,将空间实体抽象为点、线、面几种基本的要素或者这几种基本要素(间)的组合。空间数据可视化与空间数据的管理,两者同为GIS的基础,并且也是所有GIS系统的核心功能。从实现技术考察,计算机图形学是空间数据可视化的基础,顶点坐标带图形设备坐标之间的转换是矢量数据可视化输出的关键,光栅图像是可视化的最终形式,像素是 可视化结果可分辨的最下单元。另一方面,无论是出于应用分析的需要,还是为了更好的输出效率,空间数据都需要经过系统的管理。空间数据的管理方法主要经过了 “文件系统管理”一“文件-数据库混合管理”一“空间数据库管理”几个主要的阶段,但无论是何种管理方式,其管理的基础都是数据的空间索引。利用空间索引的方式来对空间进行管理,可以有效的提高空间数据的可视化效率和空间分析的速度。当前主流的GIS软件主要采取唯一标识编码的方式来对矢量数据进行索引编码,这种方式通过在矢量数据的属性数据表中添加独立的一个字段,并按照顺序的数值序列来对矢量数据集中的各个要素进行编码。但这种方法将矢量数据要素在数据集中的位置信息与其自身的几何信息分离开来,也就是说,在获取某一要素索引的同时,并不能得知该要素的几何轮廓特征,只能从数据库中通过再次的查询来获取该矢量要素数据。事实上,矢量数据在最终的屏幕输出过程中,仍然需要进行光栅化的输出,光栅化输出本身就可以视作对矢量要素的一种网格化的编码;同时,空间实体的位置和其几何特征两者在矢量要素集中基本上就可以近似唯一的表示该实体。基于此,本发明提出了一种尺度适应的矢量数据集要素位图嵌入式编码的方法,实现空间矢量数据的可视化与管理的融合,能够在对矢量数据集中各要素进行空间索引编码的同时,表达出其几何轮廓特征,从而实现高效的空间矢量数据管理。

发明内容
本发明的目的是在固定的数据量的基础上,对矢量数据集中的要素进行尺度自适应的位图嵌入式编码,改进现有的空间索引编码方式,实现对空间要素索引编码的同时,表达其几何轮廓特征。本发明的技术方案是尺度适应的矢量数据集位图嵌入式编码方法,包含以下的步骤步骤I初始化矢量数据集参数通过对矢量数据集外接矩形参数的计算,动态修正外接矩形获得能够将此数据集完全包含的最小正方形;步骤2确定矢量要素的位图嵌入式编码参数遍历矢量数据集中的每个矢量要素,获取其自适应的位图嵌入式编码参数;步骤3获取矢量要素的自适应位图嵌入式编码遍历获取当前矢量要素的顶点坐标数据,结合步骤2中获取的编码参数,生成能够近似表示该要素轮廓的、类似光栅化位图的比特位置编码,并最终生成唯一表示该要素的位图嵌入式编码;步骤4对步骤3已确定的位图嵌入式编码进行反向解析。所述步骤I中初始化矢量要素集参数主要包含获取当前矢量数据集外接矩形的最长边的长度D,按照长度D对数据集的外接矩形进行修正,生成二维向量BBoxDimension作为该数据集的正外接边界。

所述步骤2获取位图嵌入式编码参数的具体参数和方法为A.位图嵌入式编码的层级参数根据矢量数据集的最小外包正方形的边长与当前待编码要素的最小包正方形的边长的比值,得到该要素在一维度量空间上占数据集的大小,并按照unsigned int32数值类型进行取整;按照公式level = (log {percent)}/{log (2)),其中,level表示计算得到的层级参数,percent为当前待编码要素的外接最小正方形占整个要素集的百分比的倒数,通过log(2)为标准来实现以8个行列进行位图光栅化划分,最终获取位图编码的层次参数;B.位图嵌入式编码的行列数参数对矢量数据集中的所有要素都采用8X8的位图光栅化编码,在得到当前待编码要素的层级参数后,通过不断的按照8的倍数来进行空间的离散网格化划分,最终得到该层级的位图行列数参数;C.位图嵌入式编码的位图分辨率尺寸参数与上述B的行列数参数对应的位图分辨率尺寸参数,在将整个数据集位图光栅化划分后,根据此数据集的最小外包正方形的边长,即可获得划分网格的大小,也就是位图分辨率的尺寸;D.位图嵌入式编码的起始行列号参数将整个数据集以8nX8n的位图光栅化划分后,整个数据集中的任一位置就可以通过位图的网格行列号来确定,而待编码的要素始终只占其中的一块8X8的区域,因而需要确定此块区域的起始行列号,从而确定此要素的空间位置。本发明的方法可以实现利用固定数据量的哈希化编码序列,按照数据集中各要素自身的尺度,自适应的表现矢量数据集中各要素的几何轮廓,同时作为其空间索引编码,有效降低GIS系统的数据存储、可视化和空间分析等代价。


图I是本发明方法的流程示意图。图2是位图嵌入式编码方法基本示意图。(a)表示原始矢量数据,(b)表示位图光栅化划分后的数据样式,(C)表示位图光栅化划分之后的编码规则,(d)表示最终存储的编码结构。图3是位图嵌入式编码内存块的组织。图4是尺度适应的矢量要素位图嵌入式编码示意图。(a)表示矢量数据集中面积适中的一个要素的自适应编码,(b)表示矢量数据集中面积较大的一个要素的自适应编码,(C)表示矢量数据集中面积较大小的一个要素的自适应编码。
具体实施例方式下面结合附图和实施例做进一步说明。图I为本发明方法的流程图。所谓位图嵌入式编码,即将连续的矢量数据按照位图离散的网格光栅化的组织方式,实现通过有限的网格来逼近原有矢量数据的几何形态,在编码过程中,表现出一种将矢量数据嵌入到位图中的效果。如图2所示。本发明技术方案的具体说明如下A.首先根据待编码要素最小外包正方形占整个数据集最小外包正方形的比值,确定该要素所属的整数级别,具体计算公式为!et’el = (log(percent))/(!of(2)),其中,level表示计算得到的层级参数,percent为当前待编码要素的外接最小正方形占整个要素集的 百分比的倒数;B.整个数据集范围首先可以划分为8行8列的位图式网格,按照算法步骤A中计算得到的层级结果,将8行8列的网格再次精细划分为8nX Sn的网格,其中η就是待编码要素的层级;由此可以获得此层级网格划分的行列数和网格分辨率尺寸;C.通过待编码要素和整个数据集的最小外包正方形边长、当前划分网格的分辨率尺寸,即可得到待编码要素的起始行列号参数。D.在内存中划出64个byte的空间,用来存储待编码要素的位图嵌入式网格编码(IMAGE);划出8个byte的空间,用来存储待编码要素的层级参数(Level);划出12个byte的空间,用来存储待编码要素所在的8X8区域起始位置X方向的编号(XCode);划出12个byte的空间,用来存储待编码要素所在的8X8区域起始位置Y方向的编号(YCode);划出32个byte的空间,用来存储待编码要素的原有要素ID (FID)0由此,编码的序列确定为IMAGE + Level + XCode + YCode + FID,数据量为 64 + 8 + 12 + 12 + 32 = 128 byte =两个double数值大小=I个⑶ID大小。如图3所示。E.当待编码要素为单类型数据时,即待编码要素为单线、单面时El.当待编码要素为单线时。直接分配128byte的内存,在静态内存中分配,可以有效的降低程序设计语言中的内存分配负担;通过遍历线串的各个顶点,判断各个顶点所在当前网格划分中的行列号,将待编码要素所在的8X8区域按照“通过该网格设为1,反之设为O”的方法,实现对64个网格位二值化;在此8X8区域从下到上,从左至右,将O、I数值连成一串形成一个64位的数值,也就是最终位图嵌入式编码。E2.当待编码要素为单面时。首先判断面状要素是否含岛,如果不包含岛,也就是简单的多边形,则与单线要素的编码实现方法类似,也是通过在静态内存中分配128byte的空间,遍历顶点的位置,确定面域边界所在的网格位置,将确定已经确定的网格内部填充满即可;如果多边形包含岛,则首先获取该面要素的外环,将外环的边界在网格上确定,将内部填充满,再获取内环,将内环内部网格的值取反即可。F.当待编码要素为组合类型数据时,即待编码要素为多线、多面时无论是多线还是多面,最终都是遍历其组合内部每个子要素,再按照El或E2的方式进行位图嵌入式编码。G.将根据本发明所提出的编码方法,对矢量数据集中的各空间要素编码进行反向解析,按照二进制数据流的读取方式,首先读取64位,按照8位为一段,每个位的值为I的即为要素经过位置,反之则为空白位置,即通常意义上所说的二值化图像;再读取8位,转换为unsigned int32数据类型,作为该要素在整个数据集中的层级;再读取12位,转换为unsigned int32数据类型,作为该要素在整个数据集中的X方向起始号;再读取12位,转换为unsigned int32数据类型,作为该要素在整个数据集中的Y方向起始号;再读取32位,转换为unsigned int64数据类型,作为该要素的要素ID。根据层级、X起始号和Y起始号三者即可确定该要素在数据集中的位置,根据64位的二值化编码,即可确定该要素的近似几何轮廓,根据32位的要素ID即可唯一确定该要素。位图嵌入式编码主要是针对线串、面域这种连续的空间实体的要素表达,而对于 点状要素而言,由于其本身几何形状的单一性(在不考虑符号化方法的前提下仅为圆形一种),因而利用位图嵌入式编码方法对点状要素进行编码就显得没有必要,所以在本发明的编码体系下,对点状要素的编码采用原有FID的方式来实现。实施例对一个要素类型为多边形面的数据集实施本发明的编码方法,首先确定该数据集的正方形外包围盒,再依次遍历整个数据集中的所有矢量要素,根据该要素自身的尺度,确定位图光栅化网格的大小,再确定当前待编码要素所占的8X8区域,从而生成64位的位图编码;将生成的位图编码加上当前位图光栅化层级、待编码要素的X方向和Y方向的起始数、待编码要素的要素ID,即为该要素的最终尺度适应的位图嵌入式编码。如图4。下面是用软件方法,在C++语言环境下,实现尺度适应的矢量数据集位图嵌入式编码(I)定义结构体
struct GQINDEX {
u32 LEVEL: 8;/78位的紀级数u32 X: 12; //12位的X方向起始数u32 Y: 12; //12位的Y方向起始数
unsigned .—int64 BIIGE;//64 位_隹_编碼
};表示位图嵌入式编码结构。(2)定义结构体I ο ιρ I aIo <iypename T>
Btruct CJVec tor2d {
I γ ·
L·^
m
T y;
I;表示空间二维向量。(3)定义结构体
template <typcoanie T>struct GRectangIeM
{
T IaxEdge;//最人边I' MinHdge;//S小边
};表示二维的包围盒。定义类型typedefGRectangle2d<f32> GRectangle2dd;表不 32 位整型的二维
包围盒。(4)定义类
c Ians (JCJI ntluχRiistur %νγ
{public:
GQIndexRaslerizer(void); //!构造函数 GQIndexiasteriger (toΜ) ; //! Iirft Wl ft void iiiitiaiiζo (const GRectangic2dA bbojc) ; //! _始化 void Uninl tlaiize () ;// !结束
const GRectangle2dd GetMjustedBoundingBox (); //!得到修.if.:过
tt包围盒
f 6 4 Ge I Le voll)ixeiSIze(u 32 L e v el) ; / /!得到不 Pl M 次单 TC K' + u32 GatLevalDimensioi (u32 level); /7!得到 JC小 Πφ NIM*:X RhKter i zeCleomet ry ( KIeomet. ry幸 p(;Bame t ry) ; //!光機化 static boo I (let index Pi xe IIHag (Cit) IpQI ndcx, oH Xj uH y);
slatic void Sei IndoxiM xol Plag(GQI NDIiXt pOindex, uH x, u8 y, bool flag) ; //!设置像尜索引标E private:
i n I i nuvoidIiastcr i zoCJccnnutry ((Id i p I us::CJraph i cs*
graphics! const GfeetorZddi iiinEdge, GLinaString^ IifleStringi ffl4 d);
ini inuvoidIhmivrtiAqGwmvI ry (Gd i plus: ;(Jraph ck*
i^raphics, CDHSt GVocior2dd& HihiHd肌 WWy_本 rx>lygofh 1.64 d);private;
Ckfi p Ius:: IW I map*I map;
(ki i f) I us: :(iraph i cs* CVichecKiraph i cs;
Gdiplus;:Point拿 CachadPoiiits; u32GiehcxIPoi nlCmin I;
<;cli p I us:: Pcn lCachedPcn;
Gd IpI;: Brush#CachedBrush;
GRoc Utrtg I u2ddAdjustudBBox;
GVccto r2ddBBoxMi nlklgo;
CVcctor2(J<JBBoxDi mens ion;
};在此类中实现将适量数据集中的某一要素进行位图嵌入式编码,并可以将编码后的类二值图输出。调用的方法和流程为(A)实例化GQIndexRasterizer类;(B)调用Initialize函数进行初始化操作;(C)调用RasterizeGeometry函数获取编码结果。
权利要求
1.尺度适应的矢量数据集要素位图嵌入式编码方法,其特征是,该方法包括下列步骤 步骤I初始化矢量数据集参数通过对矢量数据集外接矩形参数的计算,动态修正外接矩形获得能够将此数据集完全包含的最小正方形; 步骤2确定矢量要素的位图嵌入式编码参数遍历矢量数据集中的每个矢量要素,获取其自适应的位图嵌入式编码参数; 步骤3获取矢量要素的自适应位图嵌入式编码遍历获取当前矢量要素的顶点坐标数据,结合步骤2中获取的编码参数,生成能够近似表示该要素轮廓的、类似光栅化位图的比特位置编码,并最终生成唯一表示该要素的位图嵌入式编码; 步骤4对步骤3已确定的位图嵌入式编码进行反向解析。
2.根据权利要求I所述的尺度适应的编码方法,其特征是,所述步骤I中初始化矢量要素集参数主要包含获取当前矢量数据集外接矩形的最长边的长度D,按照长度D对数据集的外接矩形进行修正,生成二维向量BBoxDimension作为该数据集的正外接边界。
3.根据权利要求I所述的尺度适应的编码方法,其特征是,所述步骤2获取位图嵌入式编码参数的具体参数和方法为 A.位图嵌入式编码的层级参数根据矢量数据集的最小外包正方形的边长与当前待编码要素的最小包正方形的边长的比值,得到该要素在一维度量空间上占数据集的大小,并按照unsigned int32数值类型进行取整;按照公式lei’e! = (log (percent))/(log (2)),其中,level表示计算得到的层级参数,percent为当前待编码要素的外接最小正方形占整个要素集的百分比的倒数,通过log(2)为标准来实现以8个行列进行位图光栅化划分,最终获取位图编码的层次参数; B.位图嵌入式编码的行列数参数对矢量数据集中的所有要素都采用8X8的位图光栅化编码,在得到当前待编码要素的层级参数后,通过不断的按照8的倍数来进行空间的离散网格化划分,最终得到该层级的位图行列数参数; C.位图嵌入式编码的位图分辨率尺寸参数与上述B的行列数参数对应的位图分辨率尺寸参数,在将整个数据集位图光栅化划分后,根据此数据集的最小外包正方形的边长,即可获得划分网格的大小,也就是位图分辨率的尺寸; D.位图嵌入式编码的起始行列号参数将整个数据集以8nX8n的位图光栅化划分后,整个数据集中的任一位置就可以通过位图的网格行列号来确定,而待编码的要素始终只占其中的一块8X8的区域,因而需要确定此块区域的起始行列号,从而确定此要素的空间位置。
全文摘要
本发明涉及GIS领域中空间数据的索引编码技术,给出了一种尺度适应的矢量数据集要素位图嵌入式编码方法,实现了基于该方法的矢量数据集中各要素的位图嵌入式自适应编码。该方法包括以下步骤初始化矢量数据集参数,确定矢量要素的位图嵌入式编码参数,获取矢量要素的自适应位图嵌入式编码,对已确定的位图嵌入式编码进行反向解析。根据待编码要素自身的尺度,将整个要素集进行了8n×8n的网格划分,待编码要素确定只占其中一块连续的8×8区域。稳定的生成128byte的编码序列,实现根据要素自身尺度,自适应的将其几何轮廓作为空间数据索引的一部分进行编码,达到高效的矢量数据管理。
文档编号G06F17/30GK102841926SQ20121024208
公开日2012年12月26日 申请日期2012年7月12日 优先权日2012年7月12日
发明者乐松山, 温永宁, 陶虹 申请人:南京师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1