一种将矢量数据转换为栅格切片的方法及装置与流程

文档序号:17160770发布日期:2019-03-20 00:40阅读:380来源:国知局
一种将矢量数据转换为栅格切片的方法及装置与流程

本发明涉及计算机技术领域,特别涉及一种将矢量数据转换为栅格切片的方法及装置。



背景技术:

现在最常用的地图底图技术是栅格切片底图,本质上是将空间数据分别渲染为不同缩放级别的地图图片,然后将各个级别的图片按照一定规则切分,按照一定的“规则组织”,存储到硬盘或数据库中,构成一幅完整的地图。

在现有技术中,切片转换的过程都是在同一个处理设备上来完成的,由于处理设备的处理能力有限,需要较长的时间才能完成转换。



技术实现要素:

本发明实施例提供了一种将矢量数据转换为栅格切片的方法及装置,能够更快的完成转换。

第一方面,本发明实施例提供了一种将矢量数据转换为栅格切片的方法,包括:

获取待处理的矢量数据;

利用分布式处理的方式,将所述矢量数据转换为至少一个矢量切片;

利用分布式处理的方式,将所述至少一个矢量切片转换为栅格切片。

优选地,

所述将所述至少一个矢量切片转换为栅格切片,包括:

针对每个所述矢量切片执行:

确定当前矢量切片中每个点的矢量坐标;

根据每个点的矢量坐标,确定每个点在栅格切片中的行值和列值,实现从所述当前矢量切片到所述栅格切片的点的转换;

确定所述当前矢量切片中每一对相邻的点,确定每一对相邻的点的连线经过的所述栅格切片中的每个栅格的行值和列值,实现从所述当前矢量切片到所述栅格切片的线的转换;

对所述栅格切片上的边界进行跟踪,实现从所述当前矢量切片到所述栅格切片的面的转换。

优选地,

所述根据每个点的矢量坐标,确定每个点在栅格切片中的行值和列值,包括:

确定所述当前矢量切片中横坐标的最小值xmin和纵坐标的最大值ymax;

确定所述栅格切片中每个栅格的边长δx和δy;

根据公式一,确定当前点在所述栅格切片中的行值,其中,所述公式一为:

根据公式二,确定当前点在所述栅格切片中的列值,其中,所述公式二为:

其中,i为当前点在所述栅格切片中的行值,j为当前点在所述栅格切片中的列值,δx和δy为所述栅格切片中每个栅格的边长,xmin为所述当前矢量切片中横坐标的最小值,ymax为所述当前矢量切片中纵坐标的最大值,interger()为取整运算,x和y是当前点的矢量坐标。

优选地,

所述确定每一对相邻的点的连线经过的所述栅格切片中的每个栅格的行值和列值,包括:

确定所述当前矢量切片中横坐标的最小值xmin和纵坐标的最大值ymax;

确定所述栅格切片中每个栅格的边长δx和δy;

针对任意一对相邻的点,依次执行s1和s2:

s1:根据点a的行值和点b的行值,确定点a与点b的连线经过的每个栅格的行的行值,其中,点a和点b是任意一对相邻的点;

s2:针对点a与点b的连线经过的每个行,执行:

根据公式三,确定当前行对应的y0,其中,公式三为:

根据公式四,确定当前行对应的x0,其中,公式四为:

根据公式五,确定点a与点b的连线经过的位于当前行中的栅格的列值,其中,公式五为:

其中,m为当前行的行值,n为点a与点b的连线经过的位于当前行中的栅格的列值,δx和δy为所述栅格切片中每个栅格的边长,xmin为所述当前矢量切片中横坐标的最小值,ymax为所述当前矢量切片中纵坐标的最大值,interger()为取整运算,x1和y1是点a的矢量坐标,x2和y2是点b的矢量坐标。

优选地,

所述将所述矢量数据转换为至少一个矢量切片,包括:

确定所述矢量数据的空间坐标数据;

确定需要的至少一个缩放级别;

针对每个所述缩放级别,执行:根据当前缩放级别,将所述矢量数据的空间坐标数据进行坐标简化,生成所述当前缩放级别对应的至少一个矢量切片。

第二方面,本发明实施例提供了一种将矢量数据转换为栅格切片的装置,包括:

获取单元,用于获取待处理的矢量数据;

矢量切片单元,用于利用分布式处理的方式,将所述矢量数据转换为至少一个矢量切片;

栅格切片单元,用于利用分布式处理的方式,将所述至少一个矢量切片转换为栅格切片。

优选地,

所述栅格切片单元,在执行所述将所述至少一个矢量切片转换为栅格切片时,用于:

针对每个所述矢量切片执行:

确定当前矢量切片中每个点的矢量坐标;

根据每个点的矢量坐标,确定每个点在栅格切片中的行值和列值,实现从所述当前矢量切片到所述栅格切片的点的转换;

确定所述当前矢量切片中每一对相邻的点,确定每一对相邻的点的连线经过的所述栅格切片中的每个栅格的行值和列值,实现从所述当前矢量切片到所述栅格切片的线的转换;

对所述栅格切片上的边界进行跟踪,实现从所述当前矢量切片到所述栅格切片的面的转换。

优选地,

所述栅格切片单元,在执行所述根据每个点的矢量坐标,确定每个点在栅格切片中的行值和列值时,用于:

确定所述当前矢量切片中横坐标的最小值xmin和纵坐标的最大值ymax;

确定所述栅格切片中每个栅格的边长δx和δy;

根据公式一,确定当前点在所述栅格切片中的行值,其中,所述公式一为:

根据公式二,确定当前点在所述栅格切片中的列值,其中,所述公式二为:

其中,i为当前点在所述栅格切片中的行值,j为当前点在所述栅格切片中的列值,δx和δy为所述栅格切片中每个栅格的边长,xmin为所述当前矢量切片中横坐标的最小值,ymax为所述当前矢量切片中纵坐标的最大值,interger()为取整运算,x和y是当前点的矢量坐标。

优选地,

所述栅格切片单元,在执行所述确定每一对相邻的点的连线经过的所述栅格切片中的每个栅格的行值和列值时,用于:

确定所述当前矢量切片中横坐标的最小值xmin和纵坐标的最大值ymax;

确定所述栅格切片中每个栅格的边长δx和δy;

针对任意一对相邻的点,依次执行s1和s2:

s1:根据点a的行值和点b的行值,确定点a与点b的连线经过的每个栅格的行的行值,其中,点a和点b是任意一对相邻的点;

s2:针对点a与点b的连线经过的每个行,执行:

根据公式三,确定当前行对应的y0,其中,公式三为:

根据公式四,确定当前行对应的x0,其中,公式四为:

根据公式五,确定点a与点b的连线经过的位于当前行中的栅格的列值,其中,公式五为:

其中,m为当前行的行值,n为点a与点b的连线经过的位于当前行中的栅格的列值,δx和δy为所述栅格切片中每个栅格的边长,xmin为所述当前矢量切片中横坐标的最小值,ymax为所述当前矢量切片中纵坐标的最大值,interger()为取整运算,x1和y1是点a的矢量坐标,x2和y2是点b的矢量坐标。

优选地,

所述矢量切片单元,在执行所述将所述矢量数据转换为至少一个矢量切片时,用于:

确定所述矢量数据的空间坐标数据;

确定需要的至少一个缩放级别;

针对每个所述缩放级别,执行:根据当前缩放级别,将所述矢量数据的空间坐标数据进行坐标简化,生成所述当前缩放级别对应的至少一个矢量切片。

在本发明实施例中,利用分布式处理的方式,将矢量数据转换为至少一个矢量切片,利用分布式处理的方式,将该至少一个矢量切片转换为栅格切片,分布式处理大大提高了将矢量数据转换为栅格切片的速度,能够更快的完成转换。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例提供的一种将矢量数据转换为栅格切片的方法的流程图;

图2是本发明一实施例提供的另一种将矢量数据转换为栅格切片的方法的流程图;

图3是本发明一实施例提供的一种将矢量数据转换为栅格切片的装置的示意图;

图4是本发明一实施例提供的另一种将矢量数据转换为栅格切片的装置的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种将矢量数据转换为栅格切片的方法,该方法可以包括以下步骤:

步骤101:获取待处理的矢量数据;

步骤102:利用分布式处理的方式,将所述矢量数据转换为至少一个矢量切片;

步骤103:利用分布式处理的方式,将所述至少一个矢量切片转换为栅格切片。

在本发明实施例中,利用分布式处理的方式,将矢量数据转换为至少一个矢量切片,利用分布式处理的方式,将该至少一个矢量切片转换为栅格切片,分布式处理大大提高了将矢量数据转换为栅格切片的速度,能够更快的完成转换。

在本发明一实施例中,所述将所述至少一个矢量切片转换为栅格切片,包括:

针对每个所述矢量切片执行:

确定当前矢量切片中每个点的矢量坐标;

根据每个点的矢量坐标,确定每个点在栅格切片中的行值和列值,实现从所述当前矢量切片到所述栅格切片的点的转换;

确定所述当前矢量切片中每一对相邻的点,确定每一对相邻的点的连线经过的所述栅格切片中的每个栅格的行值和列值,实现从所述当前矢量切片到所述栅格切片的线的转换;

对所述栅格切片上的边界进行跟踪,实现从所述当前矢量切片到所述栅格切片的面的转换。

在本发明实施例中,将每个矢量切片转换为对应的栅格切片,具体地,分别进行点的转换、线的转换和面的转换。

在本发明一实施例中,所述根据每个点的矢量坐标,确定每个点在栅格切片中的行值和列值,包括:

确定所述当前矢量切片中横坐标的最小值xmin和纵坐标的最大值ymax;

确定所述栅格切片中每个栅格的边长δx和δy;

根据公式一,确定当前点在所述栅格切片中的行值,其中,所述公式一为:

根据公式二,确定当前点在所述栅格切片中的列值,其中,所述公式二为:

其中,i为当前点在所述栅格切片中的行值,j为当前点在所述栅格切片中的列值,δx和δy为所述栅格切片中每个栅格的边长,xmin为所述当前矢量切片中横坐标的最小值,ymax为所述当前矢量切片中纵坐标的最大值,interger()为取整运算,x和y是当前点的矢量坐标。

在本发明实施例中,一般来说栅格切片为正方形的,δx和δy相等。通过本发明实施例中的公式一和公式二可以准确的确定出每个矢量切片对应的栅格切片的行值和列值。

在本发明一实施例中,所述确定每一对相邻的点的连线经过的所述栅格切片中的每个栅格的行值和列值,包括:

确定所述当前矢量切片中横坐标的最小值xmin和纵坐标的最大值ymax;

确定所述栅格切片中每个栅格的边长δx和δy;

针对任意一对相邻的点,依次执行s1和s2:

s1:根据点a的行值和点b的行值,确定点a与点b的连线经过的每个栅格的行的行值,其中,点a和点b是任意一对相邻的点;

s2:针对点a与点b的连线经过的每个行,执行:

根据公式三,确定当前行对应的y0,其中,公式三为:

根据公式四,确定当前行对应的x0,其中,公式四为:

根据公式五,确定点a与点b的连线经过的位于当前行中的栅格的列值,其中,公式五为:

其中,m为当前行的行值,n为点a与点b的连线经过的位于当前行中的栅格的列值,δx和δy为所述栅格切片中每个栅格的边长,xmin为所述当前矢量切片中横坐标的最小值,ymax为所述当前矢量切片中纵坐标的最大值,interger()为取整运算,x1和y1是点a的矢量坐标,x2和y2是点b的矢量坐标。

在本发明实施例中,矢量数据的线是由点组成的,线的转换换实质上是完成相邻两点之间直线的转换。

在确定点a与点b的连线经过的每个栅格的行的行值时,可以通过以下方式确定:

点a的行值为i,点b的行值为i+n,那么,点a与点b的连线经过的每个栅格的行的行值为:i+1、i+2、···、i+n-1。

点a与点b的连线分别经过i+1、i+2、···、i+n-1;

然后,该连线与每一行相交与一个位于该行中的栅格,确定出这些栅格的列值n。

在本发明一实施例中,所述将所述矢量数据转换为至少一个矢量切片,包括:

确定所述矢量数据的空间坐标数据;

确定需要的至少一个缩放级别;

针对每个所述缩放级别,执行:根据当前缩放级别,将所述矢量数据的空间坐标数据进行坐标简化,生成所述当前缩放级别对应的至少一个矢量切片。

在本发明实施例中,每个缩放级别对应一个包含至少一个矢量切片的切片集合。

将所述矢量数据转换为至少一个矢量切片,具体可以包括以下步骤:

a)确定矢量数据的图层、矢量类型(包括:点、线、面等)。

b)栅格数据底图最大比例尺、比例尺分级设置、缩放级别等信息。

c)确定矢量切片的大小即:某类空间投影坐标系下的坐标范围,即四至范围的大小。

d)根据矢量切片的大小,提取矢量数据:根据矢量数据坐标所在的切片,将矢量进行分布式提取。

e)根据实际要求,确定矢量切片的数据格式:geojson、topojson、mvt等。

f)根据实际要求,确定要提取的属性数据。

g)采用分布式处理的方式,根据不同的缩放级别,将矢量数据的空间坐标数据,根据不同的缩放级别和细节,进行坐标简化。

h)将转换后的数据,生成文件(具体包括至少一个矢量切片),放入分布式文件系统中。

通过将矢量切片放入分布式文件系统中,利用分布式文件系统进行矢量切片向栅格切片的转换,实现分布式处理。

在本发明一实施例中,对所述栅格切片上的边界进行跟踪,实现从所述当前矢量切片到所述栅格切片的面的转换,包括:

采用边界点跟踪法进行转换,该法从边界上某一栅格开始按顺时针方向跟踪边界上各栅格,(对多边形中岛则按逆时针方向跟踪,使岛内不被填充)。将跟踪的每个栅格分别赋予字符r,l或n。其中,r表示该栅格同相邻象素的行数不同,且行数增加;l表示该栅格同相邻象素的行数不同,且行数减少;n表示该栅格极值单元或相邻单元行数相同。

最后,逐行扫描根据填充字符值,填充l→r之间的栅格。

如图2所示,本发明实施例提供了一种将矢量数据转换为栅格切片的方法,包括:

步骤201:获取待处理的矢量数据。

矢量数据的格式包括:shapefile、sde数据源、gdb数据源、geojson数据源。

步骤202:利用分布式处理的方式,将矢量数据转换为至少一个矢量切片。

采用分布式处理的方式进行将矢量数据转换为矢量切片,大大提高了转换的速度。

步骤203:利用分布式处理的方式,针对每个所述矢量切片执行:确定当前矢量切片中每个点的矢量坐标。

具体地,矢量切片中的每个点在xy直角坐标系下有对应的矢量坐标。

步骤204:利用分布式处理的方式,针对每个所述矢量切片执行:根据每个点的矢量坐标,确定每个点在栅格切片中的行值和列值,实现从所述当前矢量切片到所述栅格切片的点的转换。

步骤205:利用分布式处理的方式,针对每个所述矢量切片执行:确定所述当前矢量切片中每一对相邻的点,确定每一对相邻的点的连线经过的所述栅格切片中的每个栅格的行值和列值,实现从所述当前矢量切片到所述栅格切片的线的转换。

步骤206:利用分布式处理的方式,针对每个所述矢量切片执行:对所述栅格切片上的边界进行跟踪,实现从所述当前矢量切片到所述栅格切片的面的转换。

如图3、图4所示,本发明实施例提供了一种将矢量数据转换为栅格切片的装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图3所示,为本发明实施例提供的一种将矢量数据转换为栅格切片的装置所在设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图4所示,作为一个逻辑意义上的装置,是通过其所在设备的cpu将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。本实施例提供的一种将矢量数据转换为栅格切片的装置,包括:

获取单元401,用于获取待处理的矢量数据;

矢量切片单元402,用于利用分布式处理的方式,将所述矢量数据转换为至少一个矢量切片;

栅格切片单元403,用于利用分布式处理的方式,将所述至少一个矢量切片转换为栅格切片。

在本发明一实施例中,所述栅格切片单元,在执行所述将所述至少一个矢量切片转换为栅格切片时,用于:

针对每个所述矢量切片执行:

确定当前矢量切片中每个点的矢量坐标;

根据每个点的矢量坐标,确定每个点在栅格切片中的行值和列值,实现从所述当前矢量切片到所述栅格切片的点的转换;

确定所述当前矢量切片中每一对相邻的点,确定每一对相邻的点的连线经过的所述栅格切片中的每个栅格的行值和列值,实现从所述当前矢量切片到所述栅格切片的线的转换;

对所述栅格切片上的边界进行跟踪,实现从所述当前矢量切片到所述栅格切片的面的转换。

在本发明一实施例中,所述栅格切片单元,在执行所述根据每个点的矢量坐标,确定每个点在栅格切片中的行值和列值时,用于:

确定所述当前矢量切片中横坐标的最小值xmin和纵坐标的最大值ymax;

确定所述栅格切片中每个栅格的边长δx和δy;

根据公式一,确定当前点在所述栅格切片中的行值,其中,所述公式一为:

根据公式二,确定当前点在所述栅格切片中的列值,其中,所述公式二为:

其中,i为当前点在所述栅格切片中的行值,j为当前点在所述栅格切片中的列值,δx和δy为所述栅格切片中每个栅格的边长,xmin为所述当前矢量切片中横坐标的最小值,ymax为所述当前矢量切片中纵坐标的最大值,interger()为取整运算,x和y是当前点的矢量坐标。

在本发明一实施例中,所述栅格切片单元,在执行所述确定每一对相邻的点的连线经过的所述栅格切片中的每个栅格的行值和列值时,用于:

确定所述当前矢量切片中横坐标的最小值xmin和纵坐标的最大值ymax;

确定所述栅格切片中每个栅格的边长δx和δy;

针对任意一对相邻的点,依次执行s1和s2:

s1:根据点a的行值和点b的行值,确定点a与点b的连线经过的每个栅格的行的行值,其中,点a和点b是任意一对相邻的点;

s2:针对点a与点b的连线经过的每个行,执行:

根据公式三,确定当前行对应的y0,其中,公式三为:

根据公式四,确定当前行对应的x0,其中,公式四为:

根据公式五,确定点a与点b的连线经过的位于当前行中的栅格的列值,其中,公式五为:

其中,m为当前行的行值,n为点a与点b的连线经过的位于当前行中的栅格的列值,δx和δy为所述栅格切片中每个栅格的边长,xmin为所述当前矢量切片中横坐标的最小值,ymax为所述当前矢量切片中纵坐标的最大值,interger()为取整运算,x1和y1是点a的矢量坐标,x2和y2是点b的矢量坐标。

在本发明一实施例中,所述矢量切片单元,在执行所述将所述矢量数据转换为至少一个矢量切片时,用于:

确定所述矢量数据的空间坐标数据;

确定需要的至少一个缩放级别;

针对每个所述缩放级别,执行:根据当前缩放级别,将所述矢量数据的空间坐标数据进行坐标简化,生成所述当前缩放级别对应的至少一个矢量切片。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

本发明实施例提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行本发明实施例提供的任意一种将矢量数据转换为栅格切片的方法。

本发明实施例提供了一种存储控制器,包括:处理器、存储器和总线;

所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的执行指令,以使所述存储控制器执行本发明实施例提供的任意一种将矢量数据转换为栅格切片的方法。

本发明实施例提供的一种将矢量数据转换为栅格切片的方法及装置可以应用于地理信息系统,提供地图服务。

本发明实施例解决了矢量数据转栅格切片生成速度慢的问题,提高了栅格切片底图的灵活性、实时性。

本发明各个实施例至少具有如下有益效果:

1、在本发明实施例中,利用分布式处理的方式,将矢量数据转换为至少一个矢量切片,利用分布式处理的方式,将该至少一个矢量切片转换为栅格切片,分布式处理大大提高了将矢量数据转换为栅格切片的速度,能够更快的完成转换。

2、本发明实施例解决了矢量数据转栅格切片生成速度慢的问题,提高了栅格切片底图的灵活性、实时性。。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1