什么是矢量数据

矢量的特征通常表示为点(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…

如果您需要他人的一些意见或是感到有些迷茫,欢迎来和我们一起讨论。

矢量数据光栅数据: 在不同的几何模型之间转换相关推荐

  1. Redis配置主从数据,实现主从库之间数据同步

    一.背景 需求来源:在现代网络时代,随着用户访问量增加,网站并发量增加,数据库面临压力倍增,当并发到达一个巅峰值,服务器会宕机,那么如何避免这种现象出现呢? 下面是个人总结的几点解决方案: 1.增加服 ...

  2. 他用几个公式解释了现金贷业务的风控与运营 (下) 2017-09-18 22:04 风控/运营/违约 “金额如此小的业务,成本极度敏感,刚开始的时候我们在数据成本和坏账成本之间特别纠结。” 以上是许

    他用几个公式解释了现金贷业务的风控与运营 (下) 2017-09-18 22:04风控/运营/违约 "金额如此小的业务,成本极度敏感,刚开始的时候我们在数据成本和坏账成本之间特别纠结.&qu ...

  3. a人工智能b大数据c云计算_你清楚5G物联网、大数据、云计算、人工智能之间的关联吗?...

    同属于高新技术发展领域的物联网.大数据.云计算.人工智能之间有着割舍不开的联系,成其一都离不开其他技术的支撑辅佐,特别是落地应用的时候,在不同的场景中,这个几个技术之间不同的方式配合,成就了现如今的高 ...

  4. python变量类型之间转换_python学习笔记5—数据类型转换

    数据类型转换 16进制和10进制之间转换In [18]: int('a',16) 把16进制的a转换为10进制的10,16说明a是16进制数 Out[18]: 10 In [13]: int('0xa ...

  5. vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据

    vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据 在vue项目中组件间相互传值或者后台获取的数据需要供多个组件使用的情况很多的话,有必要考虑引入vuex来管理这些凌乱的状态,今 ...

  6. 物联网、大数据、云计算、人工智能之间的关系如何?

    物联网.大数据.云计算.人工智能之间的关系如何? 物联网是指通过 各种信息传感器.射频识别技术.全球定位系统.红外感应器.激光扫描器等各种装置与技术,实时采集任何需要监控. 连接.互动的物体或过程,采 ...

  7. 数据建模实战:方寸之间玩转购物篮分析

    购物篮分析是零售行业里非常重要经典的一个模型,曾经被大家津津乐道的啤酒与尿布的故事,相信大家都还记忆犹新,这个故事很好地诠释了商品关联性对销售额的提升作用,时至今日,仍有很强的现实指导意义.这种通过研 ...

  8. C++ 笔记(05)— 变量(变量定义、声明、初始化、extern关键字、变量之间转换)

    1. 变量定义 变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储.变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示: type variable_list; ...

  9. 能在不同的深度学习框架之间转换模型?微软的MMdnn做到了

    Microsoft/MMdnn:深度学习框架随心切换 学习深度学习的各位同学都希望自己的模型能在不同的深度学习框架之间随意转换,比如,斯坦福大学CVGL实验室的Saumitro Dasgupta就做过 ...

最新文章

  1. AO安装需要Microsoft Visual Studio 2013?
  2. AbstractQueuedSynchronizer 原理分析 - Condition 实现原理
  3. RTMP代理的协议规范(RtmpProxy)
  4. 同步与阻塞的区别与联系
  5. shell脚本 猜数字游戏并计数比较次数
  6. Oracle12c 的安装教程图解(安装系统:windows 2008R2)
  7. Android技术专家 高焕堂 推荐这本书
  8. Vue:安装Vue Devtools调试工具简便方法解决Cannot find module webpack-cli,@vue-devtools/build-tools等
  9. Java零基础到进阶(真的零基础,也可以当笔记看~)
  10. Parsing error: No Babel config file detected for ....
  11. 什么是透明数据加密(TDE)?
  12. 《Java并发编程的艺术》-方腾飞、魏鹏、程晓明
  13. 以太坊 2.0:验证者详解
  14. 炼数成金--支持向量机 笔记
  15. 2018大疆校招软件岗位笔试题目(求有效工作时间)——未在线验证
  16. php图片的编码是什么,jpeg是什么图像压缩编码标准
  17. c语言 乱码转化为16进制_C语言版的16进制与字符串互转函数
  18. mysql下载安装包及安装步骤
  19. 冷笑话大集合,越往后越冷哦
  20. 网络安全职业_我如何开始网络安全职业

热门文章

  1. 我的爆款算法题解是如何创作的?
  2. SpringMVC从入门到精通(终结版)
  3. Python学海无涯路【第01回】初始Python
  4. ker矩阵是什么意思_如何理解CAN通信矩阵
  5. 无线路由器有几种工作模式
  6. 让Octave支持中文
  7. 分批处理list中的数据_如何分批次处理List集合中的数据
  8. 深度学习,误检率,漏检率计算
  9. 十速单片机学习归纳总结(四):LED闪烁实验
  10. autojs实现的百度云网盘登录上传下载创建文件夹重命名删除文件等功能