矢量数据几何属性解耦的瓦片编码方法

文档序号:1504918 发布日期:2020-02-07 浏览:11次 >En<

阅读说明:本技术 矢量数据几何属性解耦的瓦片编码方法 (Tile coding method for decoupling geometric attributes of vector data ) 是由 张一鸣 蒉露超 郭奇 程默 于辉 陈佰权 丁茜 于 2019-10-18 设计创作,主要内容包括:本发明公开了一种矢量数据几何属性解耦的瓦片编码方法,包括如下步骤:(1)初始化矢量数据切片参数;(2)瓦片属性信息入库;(3)矢量数据切片;(4)几何信息编码;(5)瓦片几何信息入库。本发明提出了一种几何属性解耦的矢量瓦片数据组织方法,基于经纬度相对坐标来存储几何信息,利用瓦片关联策略来实现几何信息和属性信息的单独、关联存储,从而满足应用端的动态投影绘制需求,并且降低了数据存储压力。(The invention discloses a tile coding method for decoupling geometric attributes of vector data, which comprises the following steps: (1) initializing vector data slice parameters; (2) storing the tile attribute information; (3) slicing vector data; (4) encoding geometric information; (5) and (5) putting the geometrical information of the tiles into a storage. The invention provides a vector tile data organization method with decoupled geometric attributes, which stores geometric information based on longitude and latitude relative coordinates and realizes independent and associated storage of the geometric information and the attribute information by using a tile association strategy, thereby meeting the dynamic projection drawing requirements of an application end and reducing the data storage pressure.)

矢量数据几何属性解耦的瓦片编码方法

技术领域

本发明涉及GIS空间数据的切片技术领域,尤其是一种矢量数据几何属性解耦的瓦片编码方法。

背景技术

矢量数据是表达地理空间信息的有效载体,随着观测和测量技术的不断发展,大规模的矢量数据成为诸多实际应用的数据基础。为了能够将大规模的矢量数据进行高效的地图可视化表达,矢量瓦片技术成为当前最为认可的解决方案。

现有的矢量瓦片在数据组织层面主要是围绕着静态可视化需求的,因而其内部几何信息按照屏幕像素坐标进行存储,并且每个瓦片都将几何和属性进行集中式的存储,导致了难以利用矢量瓦片进行动态投影转换绘制,也使得同一空间实体在不同级别的矢量瓦片中重复存储了其属性信息,增加了存储的负担。

发明内容

本发明所要解决的技术问题在于,提供一种矢量数据几何属性解耦的瓦片编码方法,针对数据源为Spatialite空间数据库的情况时,对Spatialite空间数据库中的矢量数据实现几何与属性解耦的切片方法,同时通过瓦片内部相对坐标的类型转换,辅以相应的坐标缩放系数,实现矢量瓦片几何信息的压缩存储。

为解决上述技术问题,本发明提供一种矢量数据几何属性解耦的瓦片编码方法,包括如下步骤:

(1)初始化矢量数据切片参数,设置矢量数据切片的主要参数;

(2)瓦片属性信息入库;遍历空间数据库的每条记录,获取每条记录的几何信息在当前层级的瓦片范围,包括左下角瓦片LXY和右上角瓦片LXY,修正该范围获得能够将此范围完全包含的最小层级瓦片,计算该最小层级瓦片IDCode为属性瓦片的唯一ID,然后依次获取当前记录的目标字段属性值,将属性值临时存入以属性瓦片ID为标识的属性值存储器中,最后将属性瓦片的ID作为瓦片属性信息的唯一ID,将瓦片属性信息导入数据库;

(3)矢量数据切片;初始化瓦片计算器,计算当前矢量数据图层范围的瓦片范围,包括左下角瓦片LXY和右上角瓦片LXY,遍历该瓦片范围内的每个瓦片,通过空间数据库的拓扑运算求出与当前瓦片相交的所有空间数据库的记录,利用当前瓦片的范围裁剪每条记录的几何数据得到瓦片数据;

(4)几何信息编码;依据步骤(1)中的坐标精度参数设置将瓦片中的几何信息按照局部坐标的方式进行组织,由于瓦片中的几何信息可能来源于数据库中的多条记录,因此每个几何信息需要与源数据记录的ID、瓦片属性信息的ID绑定;

(5)瓦片几何信息入库;计算当前瓦片的IDCode为瓦片几何信息的唯一ID,将步骤(4)中的编码完成的瓦片几何信息导入数据库。

优选的,步骤(1)中,矢量数据切片的主要参数包括目标图层、切片层级、投影、坐标精度、切割方式以及设置每个图层的目标属性字段。

优选的,步骤(2)中,瓦片属性信息入库具体包括如下步骤:

(21)确定每条记录的几何信息在当前层级的瓦片范围,根据瓦片切割方式计算地图图层的瓦片行列总数,通过图层的瓦片行列总数计算每个瓦片的尺寸,利用几何信息的包围盒,计算包围盒左下角和右上角点坐标与地图左下角的偏移,通过偏移与瓦片尺寸的比值得到包围盒左下角和右上角点坐标点坐在的瓦片,即左下角瓦片LXY和右上角瓦片LXY;

(22)确定能够将此范围完全包含的最小层级瓦片;对当前层级的瓦片范围的行列进行右移运算,层级做递减运算,直到左下角瓦片行列等于右上角瓦片行列,得到能够将此范围完全包含的最小层级瓦片LXY;

(23)计算瓦片IDCode;瓦片的IDCode值为INT64类型,能够唯一标识瓦片,通过瓦片的层级、列值和行值计算得到;前56Bit存储瓦片的行列信息,后8位存储瓦片的层级信息,按照公式width*(_int64)Y+(_int64)X+(((_int64)L)<<56)计算瓦片IDcode,其中width为瓦片的宽度,X和Y分别表示瓦片的列值与行值,L为瓦片的层级。

优选的,步骤(4)中,几何信息编码具体包括如下步骤:

(41)瓦片中的几何信息按照局部坐标的方式进行组织;按照显示精度的配置,将瓦片内部的相对坐标进行类型转换,辅以相应的坐标缩放系数,将坐标值从8个字节的双精度浮点数double类型转变为2个字节的短整型short类型或者4个字节的整型integer类型,从而达到矢量瓦片几何信息的压缩存储,按照公式d*(x-CurrentVertexTileBound.x0)/CurrentVertexTileBound.width(),其中d为坐标缩放系数,x为坐标X值,CurrentVertexTileBound.x0为当前顶点所在的瓦片范围,CurrentVertexTileBound.width()为当前顶点所在瓦片的宽度,坐标Y值的计算方式与此相同,d的计算公式为(((int)0x1)<<(sizeof(VertexT)*8/2))-1,其中VertexT为坐标压缩后的存储结构;

(42)几何信息需要与源数据记录的ID、瓦片属性信息的ID绑定;瓦片数据库中几何信息以数据流的方式进行组织,数据流中前两个字节保存属性ID信息,第三个字节保存瓦片层级信息,第四个字节保存几何数据是否为多点、多线、多面类型信息,第五个字节保存几何类型信息,第六和第七个字节保存点数信息,之后所有的数据流保存具体的几何信息,若该几何数据为多点、多线、多面类型,则最后一个字节保存结束标记。

本发明的有益效果为:本发明提出了一种几何属性解耦的矢量瓦片数据组织方法,基于经纬度相对坐标来存储几何信息,利用瓦片关联策略来实现几何信息和属性信息的单独、关联存储,从而满足应用端的动态投影绘制需求,并且降低了数据存储压力。

附图说明

图1为本发明的方法流程示意图。

图2(a)为本发明矢量瓦片的层次分块组织结构示意图。

图2(b)为本发明矢量瓦片的层次分块组织结构示意图。

图3为本发明属性信息关联的存储示意图。

图4为本发明瓦片内部相对坐标系示意图。

图5为本发明几何信息编码内存块示意图。

具体实施方式

如图1所示,一种矢量数据几何属性解耦的瓦片编码方法,包括如下步骤:

(1)初始化矢量数据切片参数,设置矢量数据切片的主要参数;

(2)瓦片属性信息入库:遍历空间数据库的每条记录,获取每条记录的几何信息在当前层级的瓦片范围,包括左下角瓦片LXY和右上角瓦片LXY,修正该范围获得能够将此范围完全包含的最小层级瓦片,计算该最小层级瓦片IDCode为属性瓦片的唯一ID,然后依次获取当前记录的目标字段属性值,将属性值临时存入以属性瓦片ID为标识的属性值存储器中,最后将属性瓦片的ID作为瓦片属性信息的唯一ID,将瓦片属性信息导入数据库;

(3)矢量数据切片:初始化瓦片计算器,计算当前矢量数据图层范围的瓦片范围,包括左下角瓦片LXY和右上角瓦片LXY,遍历该瓦片范围内的每个瓦片,通过空间数据库的拓扑运算求出与当前瓦片相交的所有空间数据库的记录,利用当前瓦片的范围裁剪每条记录的几何数据得到瓦片数据;

(4)几何信息编码:依据步骤(1)中的坐标精度参数设置将瓦片中的几何信息按照局部坐标的方式进行组织,由于瓦片中的几何信息可能来源于数据库中的多条记录,因此每个几何信息需要与源数据记录的ID、瓦片属性信息的ID绑定;

(5)瓦片几何信息入库:计算当前瓦片的IDCode为瓦片几何信息的唯一ID,将步骤(4)中的编码完成的瓦片几何信息导入数据库。

矢量瓦片,根据一定的数学规则,把地图按照固定的多级比例尺分层,分割成固定大小的瓦片矩阵,并按照命名规则存储到数据库中,形成数据详细程度由低到高、瓦片数量由小到大的多层金字塔结构,如图2(a)和图2(b)所示。

通过交互界面获取矢量数据切片的主要参数:目标图层(数据源)、切片层级、投影、坐标精度、切割方式以及设置每个图层的目标属性字段。

创建并初始化瓦片数据库的元数据表,元数据表包含数据库地图范围、瓦片范围、瓦片最大层级、瓦片切割方式等字段;创建图层信息表,图层信息表包含图层名、图层瓦片层级、几何类型、坐标存储格式等字段。

创建并初始化图层属性信息表,图层属性信息表包含属性名、属性类型等信息;创建瓦片属性信息表,瓦片属性信息表包含属性瓦片ID、层级、行、列、属性信息等字段;创建瓦片几何信息表,瓦片几何信息表包含几何瓦片ID、行、列、几何信息等字段;初始化属性瓦片和几何瓦片***SQL语句。

遍历Spatialite空间数据库中数据表中的每条记录,获取几何信息求得当前记录的包围盒,通过包围盒计算能够将当前记录的几何数据完全包含的最小层级瓦片,如图3所示,以该瓦片ID作为瓦片数据库中属性瓦片的ID,ID计算公式为width*(_int64)Y+(_int64)X+(((_int64)L)<<56),其中width为瓦片的宽度,X和Y分别表示瓦片的列值与行值,L为瓦片的层级;获得目标字段属性信息,属性信息保存到能够将当前记录的几何数据完全包含的最小层级瓦片中,并以该瓦片ID作为瓦片数据库中属性瓦片的ID。

创建并初始化图层属性信息表,图层属性信息表包含属性名、属性类型等信息;创建瓦片属性信息表,瓦片属性信息表包含属性瓦片ID、层级、行、列、属性信息等字段;创建瓦片几何信息表,瓦片几何信息表包含几何瓦片ID、行、列、几何信息等字段;初始化属性瓦片和几何瓦片***SQL语句。

瓦片属性信息以数据流的方式组织,由于存在多个数据库记录的属性信息在单个瓦片中的情况,因此数据流中每个的数据库记录的属性信息开头都以fid(该数据库记录的ID)标记,接着为大小定长的属性信息。

依据D中每个数据库记录包围盒计算当前矢量数据图层范围的瓦片范围(左下角瓦片LXY和右上角瓦片LXY),遍历该瓦片范围内的每个瓦片,通过空间数据库的拓扑运算求出与当前瓦片相交的所有空间数据库的记录,利用当前瓦片的范围裁剪每条记录的几何数据得到瓦片数据。

每个瓦片的几何信息按照局部坐标的方式进行组织,按照显示精度的配置,将瓦片内部的相对坐标进行类型转换,如图4所示,辅以相应的坐标缩放系数,将坐标值从8个字节的双精度浮点数double类型转变为2个字节的短整型short类型或者4个字节的整型integer类型,从而达到矢量瓦片几何信息的压缩存储,按照公式d*(x-CurrentVertexTileBound.x0)/CurrentVertexTileBound.width(),其中d为坐标缩放系数,x为坐标X值,CurrentVertexTileBound.x0为当前顶点所在的瓦片范围,CurrentVertexTileBound.width()为当前顶点所在瓦片的宽度,坐标Y值的计算方式与此相同,d的计算公式为(((int)0x1)<<(sizeof(VertexT)*8/2))-1,其中VertexT为坐标压缩后的存储结构。

由于瓦片中的几何信息可能来源于数据库中的多条记录,因此每个几何信息需要与源数据记录的ID、瓦片属性信息的ID绑定,瓦片数据库中几何信息以数据流的方式进行组织,数据流中前两个字节保存属性ID信息,第三个字节保存瓦片层级信息,第四个字节保存几何数据是否为多点、多线、多面类型信息,第五个字节保存几何类型信息,第六和第七个字节保存点数信息,之后所有的数据流保存具体的几何信息,若该几何数据为多点、多线、多面类型,则最后一个字节保存结束标记,如图5所示。

本发明提出了一种几何属性解耦的矢量瓦片数据组织方法,基于经纬度相对坐标来存储几何信息,利用瓦片关联策略来实现几何信息和属性信息的单独、关联存储,从而满足应用端的动态投影绘制需求,并且降低了数据存储压力。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种网络资产确定方法、装置、电子设备和存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!