20. 使用点云

20.1. 点云简介

What is A Point Cloud?

点云是由多个单独的数据点(高达数十亿,甚至数万亿)组成的空间的三维图像。每个点都有一个x、y和z坐标。根据捕获方法的不同,点云通常还具有来自捕获的其他属性,例如颜色值或强度。例如,这些属性可用于以不同的颜色显示点云。在QGIS中,点云可用于生成景观(或其他空间)的三维图像。

Supported Formats

QGIS支持数据格式Entwine Point Tile(EPT)和LAS/LAZ。要使用点云,QGIS始终将数据保存在EPT中。EPT是一种存储格式,由存储在公共文件夹中的多个文件组成。为了能够快速访问数据,EPT使用索引。有关EPT格式的详细信息,请参阅 entwine homepage

如果数据是LAS或LAZ格式,QGIS会在第一次加载时将其转换为EPT。根据文件的大小,这可能需要一些时间。在此过程中,将根据方案在LAS/LAZ文件所在的文件夹中创建子文件夹 ept_ + name_LAS/LAZ_file 。如果这样的子文件夹已经存在,QGIS会立即加载EPT(这会缩短加载时间)。

Worth Knowing

在QGIS中,(目前)还不能编辑点云。如果要操作点云,可以使用 CloudCompare ,一个开源的点云处理工具。也就是 Point Data Abstraction Library (PDAL-类似于GDAL)为您提供了编辑点云的选项(PDAL仅限命令行)。

由于数据点数量较多,无法在QGIS中显示点云的属性表。然而, 识别 Identify tool 支持点云,因此您可以显示所有属性,甚至单个数据点的属性。

20.2. 点云属性

这个 Layer Properties 点云图层的对话框提供了该图层及其渲染的常规设置。它还提供有关该层的信息。

要访问 Layer Properties 对话框:

  • Layers 面板中,双击该图层或右键单击并选择 Properties... 从上下文菜单中;

  • Layer ► Layer Properties... 选定层时的菜单。

点云 Layer Properties 对话框提供以下部分:

元数据 Information

系统 Source

符号学 Symbology :sup:` [1] `

三维 3D View :sup:` [1] `

渲染 Rendering

高程比例尺 Elevation :sup:` [1] `

编辑元数据 Metadata

基本统计数据 Statistics

[1] Also available in the Layer styling panel

备注

点云图层的大多数属性都可以保存到或从加载 .qml 文件中使用 Style 属性对话框底部的菜单。更多详细信息请访问 保存和共享图层属性

20.2.1. 信息属性

这个 元数据 Information 选项卡是只读的,表示快速获取当前层上的汇总信息和元数据的有趣位置。提供的信息包括:

  • 一般信息,如项目中的名称、源路径、上次保存的时间和大小、使用的提供者

  • 基于层的提供者:范围和点数

  • 坐标参考系:名称、单位、方法、精度、参考(即它是静态的还是动态的)

  • 提供者提供的元数据:创建日期、版本、数据格式、比例X/Y/Z、...

  • 选自 编辑元数据 Metadata 选项卡(可在其中编辑它们):访问、范围、链接、联系人、历史记录...

../../../_images/point_cloud_information.png

图 20.1 点云信息标签

20.2.2. 源属性

系统 Source 选项卡可以查看和编辑有关点云图层的基本信息:

../../../_images/point_cloud_source.png

图 20.2 点云源选项卡

  • Settings :设置不同于将用于标识项目中的层的层文件名的层名称(在层面板中,带表达式,在打印布局图例中,...)

  • Assigned Coordinate Reference System (CRS) :您可以在此处更改指定的层 Coordinate Reference System ,在下拉列表中选择最近使用过的选项,或单击 集合投影 设置投影选择CRS按钮(请参见 坐标参考系选择器 )。仅当应用到层的CRS是错误的或未应用CRS时,才使用此过程。

  • Provider Feature Filter :允许使用PDAL数据提供程序级别的函数和表达式将当前项目中使用的数据限制为子集。按下按钮 Query Builder 按钮开始设置滤镜。

    ../../../_images/point_cloud_querybuilder.png

    图 20.3 将点云层过滤到特定高度的建筑物

    在该对话框的底部,您可以键入 Provider specific filter expression 。这样的表达可以建立起来,这要归功于:

    • Fields :该列表包含点云层的所有属性。要将属性添加到表达式,请双击其名称或直接将其键入文本框中。

    • Values :Frame列出当前选定属性的值或统计信息,作为 key:value 一对。要将值添加到表达式字段,请在列表中双击其名称:根据属性的类型,键或值将添加到表达式中。或在“表达式”文本框中键入值。

    • Operators :此工具栏包含所有可用的运算符。要将运算符添加到表达式字段,请单击相应的按钮。关系运算符( => ,...)AND逻辑运算符 (ANDOR ,...)都是可用的。

    这个 Test 按钮帮助您检查查询的语法。使用 Clear 按钮擦除查询并将层恢复到其原始状态(即,完全加载层中的所有点)。这是可能的 Save... 将查询作为 .QQF 文件,或 Load... 从文件到对话框中的查询。

    应用过滤器时,QGIS会将生成的子集视为整个图层。例如,如果您将 filter above 对于过滤建筑物,您无法显示、查询、保存或编辑植被分类的点,因为它们不是子集的一部分。

    小技巧

    Filtered layers are indicated in the Layers Panel

    Layers 面板中,过滤后的层将与 指示器过滤器 Filter 旁边的图标指示当鼠标悬停在按钮上时使用的查询。双击该图标将打开 Query Builder 用于编辑的对话框。这也可以通过 Layer ► Filter... 菜单。

20.2.3. 符号系统属性

符号学 Symbology 选项卡进行了点云渲染的设置。在上面的部分,可以找到不同特征渲染器的设置。在下面的部分中,有一些部分可以对整个层进行常规设置,并且这些部分适用于要素渲染器。

20.2.3.1. 要素渲染类型

There are different options for rendering point clouds that can be selected using the drop-down menu at the top of the Symbology tab (see 图 20.4):

  • 点云扩展 Extent Only :只显示数据范围的边界框;便于查看数据范围。像往常一样, Symbol widget 帮助您配置任何属性(颜色、笔触、不透明度、子层等)你想要这个盒子吗?

  • 单波段伪彩色 Attribute by Ramp :在颜色渐变上绘制数据。看见 渐变渲染器的属性

  • 多波段颜色 RGB :使用红色、绿色和蓝色颜色值绘制数据。看见 RGB渲染器

  • 已选项板 Classification :对于不同的类别,使用不同的颜色绘制数据。看见 分类呈现器

加载点云后,QGIS将遵循选择最佳渲染器的逻辑:

  • 如果数据集包含颜色信息(红色、绿色、蓝色属性),则将使用RGB渲染器

  • 否则,如果数据集包含 Classification 属性,则将使用分类的呈现器

  • 否则将回退到基于Z属性的渲染

如果您不知道点云的属性, 基本统计数据 Statistics tab 很好地概述了点云中包含的属性以及值所在的范围。

../../../_images/point_cloud_symbology_overview.png

图 20.4 点云符号系统选项卡

渐变渲染器的属性

使用 单波段伪彩色 Attribute by Ramp 数据可以通过颜色渐变上的数值来显示。例如,这样的数值可以是现有的强度属性或Z值。根据最小值和最大值,其他值通过内插扩散到颜色渐变。不同的值及其分配给某一种颜色的值称为“颜色映射表”,如表所示。有各种设置选项,如下图所示。

../../../_images/point_cloud_attribute_by_ramp.png

图 20.5 点云符号系统选项卡:按坡道属性

  • MinMax 定义应用于色带的范围: Min 值表示左侧, Max 值位于色带的右端,将对介于两者之间的值进行内插。默认情况下,QGIS检测选定属性中的最小值和最大值,但可以修改它们。更改这些值后,您可以通过单击 Load 纽扣。

  • 这个 Interpolation 条目定义了如何为值指定颜色:

    • Discrete (A) <= 符号出现在 Value 列):颜色取自具有相同或更高值的最接近的颜色映射表条目

    • Linear 颜色根据像素值上方和下方的色彩映射表条目进行线性内插,这意味着每个数据集值对应一种唯一的颜色

    • Exact (A) = 符号出现在 Value 列):只有值等于颜色映射表条目的像素才会应用颜色;其他像素不会呈现。

  • 这个 Color ramp 小部件帮助您选择要分配给数据集的色带。像往常一样 this widget ,您可以创建一个新文件,然后编辑或保存当前选定的文件。

  • 这个 Label unit suffix 在图例中的值之后添加标签,并且 Label precision 控制要显示的小数位数。

分类 Mode 帮助您定义值在类中的分布方式:

  • Continuous :从色带停靠点获取类编号和颜色;根据色带中的停靠点分布设置限制值(有关停靠点的详细信息,请参阅 设置色带 )。

  • Equal interval :类的数量由 Classes 字段;定义限制值,以便所有类都具有相同的大小。

类别是自动确定的,并显示在颜色映射表中。但您也可以手动编辑这些类:

  • 在窗口中双击 Value 允许您修改类值

  • 在中双击 Color 列将打开 颜色选择器 小部件,您可以在其中选择要应用于该值的颜色

  • 在中双击 Label 列以修改类的标签

  • 在颜色表中的选定行上单击鼠标右键可显示以下上下文菜单 Change Color...Change Opacity... 对于所选内容

该表下方有用于恢复默认类的选项 Classify 或手动 符号系统添加 Add 值或 符号系统移除 Delete 从表中选择的值。

由于自定义色彩映射表可能非常复杂,因此还可以选择 文件打开 Load 现有的色彩映射表或 文件另存为 Save 它用于其他层(作为 txt 文件)。

如果您已选择 LinearInterpolation ,您还可以配置:

  • 复选框 Clip out of range values 默认情况下,线性方法会将第一个类(分别是最后一个类)颜色分配给数据集中低于集合的值 Min (分别大于集合 Max )价值。如果不想渲染这些值,请选中此设置。

  • Legend settings ,以显示在 Layers 面板,并在 layout legend 。自定义的工作方式与栅格图层相同(有关详细信息,请参阅 自定义栅格图例 )。

RGB渲染器

多波段颜色 RGB 渲染器中,从点云中选择的三个属性将用作红色、绿色和蓝色分量。如果相应地命名了属性,则QGIS会自动选择它们并提取 MinMax 值,并相应地缩放颜色。但是,也可以手动修改这些值。

A Contrast enhancement 方法可以应用于以下值: No EnhancementStretch to MinMaxStretch and Clip to MinMaxClip to MinMax

备注

这个 Contrast enhancement 工具仍在开发中。如果您对其有问题,则应使用默认设置 Stretch to MinMax

../../../_images/point_cloud_rgb.png

图 20.6 点云RGB渲染器

分类呈现器

已选项板 Classification 渲染时,点云显示为基于属性的不同颜色。可以使用任何类型的属性(数字、字符串等)。点云数据通常包括一个名为 Classification 。这通常包含由后处理自动确定的数据,例如关于植被的数据。使用 Attribute 您可以从属性表中选择将用于分类的字段。默认情况下,QGIS使用LAS规范的定义(请参阅上的PDF中的表‘ASPRS标准点类 ASPRS home page )。然而,数据可能会偏离这个模式;如果有疑问,您必须向您从其获得数据的个人或机构询问定义。

../../../_images/point_cloud_classification.png

图 20.7 点云分类渲染器

在该表中,所有使用的值都以相应的颜色和图例显示。在每一行的开头有一个 复选框 复选框;如果未选中,则该值不再显示在地图上。通过在表中双击表, Color vt.的. Value 以及 Legend 可以修改(对于颜色, 颜色选择器 微件打开)。

该表下方有一些按钮,您可以使用这些按钮更改QGIS生成的默认类:

  • Classify 按钮数据可以自动分类:所有出现在属性中但尚未出现在表中的值都会被添加

  • 使用 符号系统添加 Add符号系统移除 Delete ,可以手动添加或删除值

  • Delete All 从表中删除所有值

提示

Layers 面板中,可以在层的类叶条目上单击鼠标右键以快速配置相应要素的可见性。

20.2.3.2. 点符号

在……下面 Point Symbol 可以设置显示每个数据点的大小和单位(例如毫米、像素、英寸)。要么 CircleSquare 可以选择作为点的样式。

20.2.3.3. 层渲染

Layer Rendering 部分,您可以使用以下选项来修改层的渲染:

  • Draw order :用于控制点云在2D地图画布上的渲染顺序是否应取决于它们的Z值。可以呈现以下内容:

    • Default 点在层中的存储顺序,

    • 从… Bottom to top (Z值较大的点覆盖较低的点,使其具有真实正射照片的外观),

    • 或来自 Top to bottom 从下面看场景的位置。

  • Maximum error :点云包含的点数通常多于显示所需的点数。通过此选项,您可以设置点云的显示密度或稀疏程度(这也可以理解为点之间的最大允许间距)。如果您设置了一个较大的数字(例如5 mm),则点之间会有明显的间隙。较低的值(例如0.1毫米)可能会强制渲染不必要的点数,从而使渲染速度变慢(可以选择不同的单位)。

  • Opacity :您可以使用此工具使地图画布中的底层可见。使用滑块调整您的层的可见性以满足您的需要。您还可以在滑块旁边的菜单中精确定义可见性百分比。

  • Blending mode :您可以使用此工具实现特殊的渲染效果。覆盖层和基础层的像素通过中介绍的设置混合 混合模式

  • Eye dome lighting :这会将着色效果应用于贴图画布,以获得更好的深度渲染。呈现质量取决于 draw order 属性; Default 绘图顺序可能会得出不太理想的结果。可以控制以下参数:

    • Strength :增加对比度,从而获得更好的深度感知

    • Distance :表示使用的像素远离中心像素的距离,并具有使边缘更粗的效果。

20.2.4. 三维视图属性

三维 3D View 选项卡,您可以设置在3D地图中渲染点云。

20.2.4.1. 3D渲染模式

可以从选项卡顶部的下拉菜单中选择以下选项:

  • No Rendering :不显示数据

  • Follow 2D Symbology: Syncs features rendering in 3D with symbology assigned in 2D

  • 单色 Single Color :所有点都显示在相同的 color 无论属性如何

  • 单波段伪彩色 Attribute by Ramp :在色带上对给定属性进行插补,并将其匹配的颜色指定给要素。看见 渐变渲染器的属性

  • 多波段颜色 RGB :使用要素的不同属性来设置要分配给它们的红、绿和蓝颜色分量。看见 RGB渲染器

  • 已选项板 Classification :根据属性按颜色区分点。看见 分类呈现器

../../../_images/point_cloud_3d_view.png

图 20.8 包含分类渲染器的点云3D视图选项卡

20.2.4.2. 三维点符号

在下半部分, 三维 3D View 选项卡,您可以找到 Point Symbol 一节。在这里,您可以为整个层进行常规设置,这些设置对所有渲染器都是相同的。有以下选项:

  • Point size :可以设置显示每个数据点的大小(以像素为单位

  • Maximum screen space error :通过此选项可以设置点云显示的密集或稀疏程度(以像素为单位)。如果设置较大的数值(例如10),点之间将出现明显的间隙;较低的值(例如0)可能会强制渲染不必要的点数,从而使渲染速度变慢(有关详细信息,请参阅 Symbology Maximum error )。

  • Point budget :为避免长时间渲染,您可以设置将渲染的最大点数

  • 检查 复选框 Render as surface (Triangulate) 在三维视图中使用通过三角剖分获得的实体曲面来渲染点云层。您可以控制计算三角形的尺寸:

    • 复选框 Skip triangles longer than 阈值:在水平平面中设置要考虑的三角形边的最大长度

    • 复选框 Skip triangles taller than 阈值:在垂直平面中设置要考虑的三角形边的最大高度

  • 复选框 Show bounding boxes :对调试特别有用,显示层次结构中节点的边界框

20.2.5. 渲染属性

在.之下 Scale dependent visibility 组框中,您可以设置 Maximum (inclusive)Minimum (exclusive) 比例,定义要素将可见的比例范围。在这个范围之外,他们是隐藏的。这个 地图标识 Set to current canvas scale 按钮帮助您使用当前地图画布比例作为范围可见性的边界。看见 可见性比例选择器 以获取更多信息。

备注

您还可以从中激活图层上的比例相关可见性 Layers 面板:在层上单击鼠标右键并在上下文菜单中选择 Set Layer Scale Visibility

../../../_images/point_cloud_rendering.png

图 20.9 点云渲染选项卡

20.2.6. 高程属性

高程比例尺 Elevation 选项卡中,您可以设置对数据的Z值的校正。这对于调整3D地图中数据的高程及其在中的外观可能是必要的 profile tool charts 。有以下选项:

  • 在……下面 Elevation 组别:

    • 您可以设置一个 Scale :如果 10 在此输入,则值为Z=的点 5 的高度显示。 50

    • 一个 offset 可以输入到z级。这对于匹配高度不同的数据源非常有用。默认情况下,数据中包含的最低z值用作此值。该值也可以使用 刷新 Refresh 位于行尾的按钮。

  • 在……下面 Profile Chart Accuracy vt.的. Maximum error 帮助您控制在高程纵断面中渲染点的密集或稀疏程度。值越大,生成速度越快,包含的点越少。

  • 在……下面 Profile Chart Appearance ,您可以控制点显示:

    • Point size :渲染点的大小,支持的单位(毫米、贴图单位、像素等)

    • Style: whether to render the points as Circle or Square

    • 应用单一的 Color 到纵断面图中可见的所有点

    • 检查 复选框 Respect layer's coloring 属性指定的颜色来显示点 2D symbology

    • 未选中 Apply opacity by distance from curve effect ,降低距离轮廓曲线较远的点的不透明度

../../../_images/point_cloud_elevation.png

图 20.10 点云高程选项卡

20.2.7. 元数据属性

这个 编辑元数据 Metadata 选项卡提供了在您的层上创建和编辑元数据报告的选项。看见 元数据 以获取更多信息。

20.2.8. 统计信息属性

基本统计数据 Statistics 选项卡,您可以获得点云的属性及其分布的概述。

在顶部,你会发现这一部分 Attribute Statistics 。此处列出了点云中包含的所有属性及其部分统计值: MinimumMaximumMeanStandard Deviation

如果有一个属性 Classification 然后在下部有另一张桌子。此处列出了该属性中包含的所有值及其绝对值 Count 和相对的 % 富足。

../../../_images/point_cloud_statistics.png

图 20.11 点云统计数据选项卡

20.3. 虚拟点云

对较大区域的激光雷达调查通常是具有数十亿个点的数万亿字节的数据集。由于存储、传输、显示和分析的困难,将如此大的数据集表示为单个点云文件是不现实的。因此,点云数据通常被存储和分布为正方形的瓦片(例如 1km x 1km ),每个区块具有更易于管理的文件大小(例如,压缩时约为200MB)。

数据平铺解决了数据大小的问题,但在处理或查看不完全适合单个平铺的感兴趣区域时,它会带来问题。用户需要开发考虑多个块的工作流,并且需要特别小心地处理块边缘附近的数据,以避免在输出中出现不需要的伪影。同样,查看点云数据时,加载多个单独的文件并应用相同的符号系统会变得很麻烦。

以下是在QGIS中加载的几个点云分片的示例。每个瓷砖都基于瓷砖的最小/最大Z值设置样式,从而在瓷砖边缘创建可见的瑕疵。必须为每个层分别调整样式:

../../../_images/point_cloud_individual_tiles.png

图 20.12 加载单个点云平铺,边缘带有瑕疵

在地理信息系统领域,很多用户都熟悉虚拟栅格的概念。虚拟栅格是只引用具有实际数据的其他栅格文件的文件。通过这种方式,然后,地理信息系统软件将包含多个文件的整个数据集视为单个栅格层,使得虚拟文件中列出的所有栅格的显示和分析变得容易得多。

借用GDAL中虚拟栅格的概念, virtual point cloud (VPC) 是参照其他点云文件的文件格式。支持虚拟点云的软件将整个平铺数据集作为单个数据源进行处理。

../../../_images/point_cloud_vpc.png

图 20.13 虚拟点云

显示和操作虚拟点云更加流畅和容易。

../../../_images/point_cloud_vpc_2d.gif

图 20.14 二维上的虚拟点云输出:放大时显示详细信息

实质上,虚拟点云文件是一个简单的JSON文件,包含 .vpc 扩展名,包含对实际数据文件的引用(例如 .LAS.LAZ.COPC 文件)和从文件中提取的附加元数据。尽管可以手动编写VPC文件,但强烈建议使用自动化工具创建它们,例如:

  • 加工过程 Build virtual point cloud 演算法

有关更多详情,请参阅 VPC specification 其中还包括最佳做法和可选的扩展(如概述)。