15. 数据转换

[konvert]

从栅格数据(线或者面)创建矢量数据是时常发生的事。相反的情况,矢量数据也能转换为栅格数据,例如为了内插一个地形模型需要将等高线转换为栅格模型。作为混合型GIS,GRASS能够将数据从一种数据模型转换为另一种。

15.1. 栅格数据矢量化

[rtovect]

在GRASS中,栅格数据能够自动转换为矢量模型。转换可以在连续、线性或等值线结构上完成。

[H]

image [abbrtov]

[rtoline]

GRASS提供了两个有趣的模块,用来将线性栅格数据自动转换为线性或等值线矢量,它们是和。

转换为线性矢量时要使用模块。此时该模块支持的几何类型是线、多边形和确定一条线的站点。如果栅格中的线太宽(几个像素),那么在开始矢量化之前,需要用模块将栅格线细化为一个像素的宽度:

r.thin in=raster out=raster\_thin
r.to.vect in=raster\_thin out=raster\_vect feature=line

如果要从地形模型(x,y,z)中创建等高线,那么就要用模块来完成。等高线以一定的”增量”(步长)来计算和矢量化。选择(合理的)增量依赖于坡度和地图比例。

[rtoarea]

要矢量化栅格面,需要使用模块和参数:

[glaetten]

根据选定的像素分辨率,在栅格数据向矢量数据转换的过程中,通常会有一条中心线。因此,GRASS能够以一个精确的容限值来平滑它,该容限值以模块和参数来确定。

image1 [abb:prune]

依赖预设分辨率的中间成果可以在结果图中显示。出现这种情况是因为转换模块在矢量化过程中不”按照”栅格像素的中心来生成线,而是以像素的边界来创建线。

图[abb:prune]显示了矢量化栅格线后的平滑情况,出于演示的目的,我们选择了一个较大的容限值。矢量化后的原始地图以红色显示,用模块平滑后的地图以蓝色重叠其上。

我们可以很清楚地看到,顶点的数目减少了,但地图的拓朴并没有破坏。这样就能够有一个必需的视觉效果,并且也减少了数据量。

需要再次提醒的是,在矢量化过程中几何形状和地图信息都可能改变,因此要小心使用该模块。另一个可能的过程是多次尝试以找到最佳的容限值。

[vtosit]

在认识矢量体系结构的时候我们知道,GRASS 中的已经不复存在了。站点现在用矢量库来处理。已经介绍的模块加参数也能够矢量化栅格点。

15.2. 矢量数据转换为栅格模型

[vtorast]

要将矢量数据(面、线和点)转换为栅格模型,需要使用模块。在此过程中必需指明矢量文件的参数,这些矢量是将在栅格图中出现的。

[H]

image2 [abb:vinr]

可以使用下面的选项:

attr -> 属性表的属性
cat  -> 类别值
val  -> 预定义值
z    -> Z坐标(仅用于点或等高线)

如果要将矢量文件属性表中的数据赋给栅格文件,那么必需指明各自的属性列。得到的栅格的精确度依赖于提前设置的分辨率。该分辨率可以用来改变。

GRASS能够将站点数据插值为栅格表面。

不同的插值方法将在 [sec:interpol]中讨论。