什么是矢量数据 矢量的特征通常表示为点(points)、线(lines)或多边形(polygons)。虽然它们是很常见的矢量类型,但它们并不是唯一的!也有更复杂的矢量几何类型,比如圆环(donuts),弧(arcs),甚至被称为梭形曲线(clothoids)的曲线。这还只涵盖了二维几何。如果数据的每个坐标对(coordinatepair)都有一个z坐标,那么就需要考虑一组全新的几何。但是出于本文的需要,让我们保持简单,并且坚持使用三个基本的二维几何。 
· 点:一组单一的X/Y坐标。 · 线:一系列形成链(chain)的连接点(connected points)。 · 多边形:一系列连接点,其第一个点和最后一个点为同一点以形成一个封闭形状(enclosed shape)。 好了!这三个基础的几何图形,可能您小时候在学校里学过,是最常用的空间几何图形(spatialgeometries)。 点表示个体资产(individualassets),比如公交车站,地址(比如您最爱的餐厅),或者是一个路灯。线表示着形成网络(network)的线状物体(linear objects),比如电力线,道路中线(road centerlines),甚至是水平线,线上的每一个节点(node)或连接点(connection)都为线上的一个顶点(vertex)。多边形表示边界(boundary),比如建筑的轮廓(building outline)或土地、城市、洲的领土边界(territorialboundaries)。 如上图所示,这些特征所描述出来的实际形状是由顶点(verticles)的数量(X/Y坐标集)所控制的。相比于有较少顶点的线或多边形,具有多个顶点的线或多边形显得不那么锯齿状(jagged)。 以上涵盖了矢量几何方面的基础知识,让我们来讨论一下光栅(rasters)“方”面。 什么是光栅数据 和矢量几何一样,光栅几何也很简单。它本质上是统一的(uniform),遵循由列(columns)和行(rows)组织形成的正方形单元格(cells)网格(grid)。当您观察一个带有数值和色值(numeric or color values)的单独的单元格时(比如一张在手机上呈现的图像),光栅数据就变得复杂起来。单元格的数值取决于用于记录数据的传感器(sensor)(在手机上则为相机传感器),传感器可以有多个信道(channel)以记录更多单元格的信息。激光雷达(LiDAR)与航空图像(aerial imagery)就是典型的例子,摄像机和传感器记录了颜色,温度,海拔等一切定性信息(qualitative information)。 
光栅(Raster):一个由多行多列数值有组织地形成的网格。网格中的每一个行与列的交点称之为一个单元格或像素(pixel)。 光栅数据可能看起来简单,但在其本质上可以变得相当复杂。出于教学的目的,我们将坚持通过用一个简单的彩色光栅(colourrasters)的例子来解释光栅是如何运作的。彩色光栅通常来自卫星数据或图像,记录数据在3个通道:红色(R),绿色(G)和蓝色(B)。每个信道也记录一个亮度值(brightness value),这样当所有三个通道覆盖在同一个网格上时,它们就展示出我们看到的独特颜色。 不同几何模型之间的转换(Transforming) 光栅化(Rasterization)(即从矢量转换为光栅) 现在让我们来考虑从一种几何模型类型转换到另一种的问题。当然,比较容易的切入点是从一个点开始然后添加另一个顶点以创造一条线。然后,您猜的不错,再加上另外一个顶点,您就能得到一个多边形要素(polygon feature)。 但是,在我们想将矢量要素(vector feature)转换为光栅要素(raster feature)时,需要考虑到以下几个关键因素: · 您需要的分辨率(resolution)/文件大小规格是什么(即列、行、单元格间距cell spacing) · 您是否将会压缩(compressing)或者平铺(tiling)输出(output)以便减少文件大小和改善加载时间 · 您的目标格式支持阿尔法波段(alpha band)吗 
每种几何类型都有好处与弊端,因为它们是为了特定的目的而构建的。然而,取决与您想要用数据集(dataset)完成的目的是什么,可能需要在在矢量几何与光栅几何之间进行转换。 一般情况下,任何在这两种几何类型之间的转换都会使数据出现某种程度上的退化(degradation)。这只是因为一个光栅单元格(raster cell)的大小可能比一个矢量要素的分辨率(resolution)要高,并且,根据光栅的类型,一个单元格可能代表着其覆盖了单元格里最大区域(largest area),或者是单元格内所有东西的集合(combination)。(在上图的示例中,矢量多边形(vector polygons)的边(edges)在转换为光栅时被表示为整个的单元格) 
上面的例子比较简单,然而在显示中您的输出(output)可能看起来像这样: (左图为矢量,右图为光栅) 很容易就能看出区别吧?好吧,也许不是从这个范围来看,但让我们仔细放大看看。 
(左图为矢量,右图为光栅) 好多了对吧。现在您能观察出一个矢量数据集被转化成100m单元格大小的光栅数据集之间的区别了。

使上图中的多边形非常基础,您也能清楚地观察到在光栅中一些单元格完全包含在矢量多边形之中(下图中像素4),而其他单元格只有部分重叠(overlap)(下图中像素1-3)。由于重叠的程度不同,我们的转换产生了具有从与指定单元格100%重叠区域到小于100%重叠的平滑渐变(smooth gradient)的单元格。 这就是一个“模糊的”结果的例子。它被认为是“模糊的”,因为像素值(pixels values)构成了不同程度的绿色阴影。正如您在上面的截图中所看到的,重叠最大的区域呈现出最深的绿色,而重叠较低的区域则呈现出较浅的绿色。然而,光栅数据集也可以遵循布尔逻辑(Boolean logic),就像下面的截图所示,无论有什么程度的重叠,单元格都是相同的颜色(尽管这在光栅数据集中不常见)。

正如您所看到的一样,当将数据从矢量转换为光栅时,直线看起来会更像是一个阶梯(staircase)。楼梯最终的细节程度(coarse or fine)取决于光栅化数据时最终使用的分辨率或单元格大小。 光栅化矢量数据的一个更加常见的实际应用是地图制作。FME中使用一个称为MapnikRasterizer的单一转换器(single transformer)让这件事可以很轻松的完成与复制,但这只是众多将矢量数据转换为光栅数据方式中的一种! 矢量化(Vectorization)(即从光栅转换为矢量) 您可能会有一个光栅数据集无意间出现在您的桌面上,并且您需要从数据集中提取(extract)一些要素(features)并产出一系列矢量数据集。也许您打算从DEM文件中创建轮廓线(contourlines),或者从光栅数据集中提取道路/建筑。根据任务要求的不同,有几种不同的提取要素的方式您可以采用。 让我们来看一下一个1m GeoTIFF文件,并使用单元格值提取方法(cell value extraction)提取道路和建筑。通过单元格值提取要素可以定义可接受的单元格值的范围(acceptable cell values),以便转换为矢量要素。这可以用一点平衡做法(balancing act),因为您会希望范围足够广泛,能够找到尽可能多的感兴趣的要素(featuresof interest)。同时,这个范围应该是专一的(exclusive),以防止不需要的要素混进结果。在下面的例子中,感兴趣的单元格值为灰色,每个波段(band)(R, G, B)的单元格值介于100-160之间。 
考虑一下源数据集(source dataset)的分辨率,这会是一个不错的入手点。我们已经能够从水泥灰色的单元格值中提取出相当一部分道路。然而这种方法也不是万无一失的,因为提取出的道路还需要进一步清理(cleaned up)和QA’d,以确保结果的准确性。如果我们有一个更高的分辨率的图像,我们可以尝试提取道路中间的黄色条纹——这展示了单元格的大小如何极大程度地提高/降低输出矢量要素。 我们如何改善结果?也许我们可以利用计算机视觉工作流(computervision workflow)使用RasterObjectDetector或者连接到Picterra来提高准确性。或者使用Potrace追踪(tracing)光栅数据集。无论使用哪种方法,在矢量化时需要记住的一件事是,虽然您可以自动提取要素,但在某些情况下,您或许只能自动提取过程的一部分,而剩余部分需要通过数字化(digitizing)手工提取(manually extracted)。QA您的数据,确保数据的准确性以及输出中没有错误的负值/正值(negatives/positives)总会是个好主意。 
例如,您可以在GeoTIFF的左下角看到,由于树冠的覆盖,我们缺少了一些路段。不论您使用的特征提取方法是什么(例如按单元格值提取,计算机视觉等等),像这样的区域都需要手动数字化(manually digitized)。 我们可以通过增加数据集的透明度(transparency)然后在FME数据检查器(Data Inspector)中将其覆盖在底图(basemap)的顶部就可以看到:虽然这个树冠覆盖的区域看起来像个公园或绿地,但它实际上是一段叫做Barclay街的道路。 
请您不要误解我,本文章并不是说要素提取(feature extraction)不能完全自动化。它当然可以完全自动化,但其产出(output)的质量完全取决于元数据的质量(单元格大小、阴影、云/树冠的覆盖等等)。与任何事情一样,低质量的输入=低质量的产出。这道理既适用于源数据集,也适用在用于对象检测(objectdetection)的模型。 矢量数据和光栅数据的整合 我们必须要讨论一下在处理矢量数据与光栅数据时的第三个领域(the third sphere)。您可以使用不同的模式(schemas)、坐标系统(coordinate systems)以及我们已了解过的几何类型(geometry types)来处理各种格式(formats)。但这并不意味着您在您的工作流程只能中使用一个几何模型。 其他的一些光栅化的方法包括了矢量光栅叠加(vectoron raster overlay),这样您就可以在光栅数据集的顶部制作矢量几何图形的印记(imprint)。另一种选择是,光栅和矢量数据集都可以在相同的工作流程中使用,比如将数据修剪(clipping)到所需要的程度。即使是在三维方面,矢量要素也可以覆盖(drapedover)在三维表面(3D surfaces)上,光栅数据集能作为外观(appearances)来提供关于该要素的更多内容! 其它需要考虑的因素 在您准备将数据从矢量化或光栅化之前,需记住的最重要一点是您所需要的输出格式是否支持该几何类型(geometrytype)。并不是所有的格式都是一样的。有些只支持特定类型的矢量,而某些光栅格式则需要设置特定的频道解释(bandinterpretations)。也有些格式甚至同时支持两种几何类型!说的就是你们俩,PDF和KML… 如果您需要他人的一些意见或是感到有些迷茫,欢迎来和我们一起讨论。 版权声明:本文为CSDN博主「fmechina」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/fmechina/a ... 1001.2014.3001.5501
|