Skip to content

06_计算线长度和统计数据 QGIS3

原文链接: https://www.qgistutorials.com/en/docs/3/calculating_line_lengths.html

计算线长度和统计数据 (QGIS3)

QGIS 内置了多种函数和算法,可以根据要素的几何属性(如长度、面积、周长等)进行计算。本教程将展示如何使用 添加几何属性 工具,添加一个代表每个要素长度的列。

任务概述

给定一个北美洲的铁路线图层,我们将确定美国境内的铁路总长度。

你将学到的其他技能

  • 使用表达式筛选要素。
  • 使用统计面板计算和查看列统计信息。

获取数据

Natural Earth 提供了一个公共领域的铁路数据集。

从网站下载 北美补充数据集 压缩包。

为方便起见,你也可以通过下面的链接直接下载数据集的副本:

ne_10m_railroads_north_america.zip

数据来源 [NATURALEARTH]

操作步骤

  1. 在浏览器面板中找到下载好的 ne_10m_railroads_north_america.zip 文件并展开。将 ne_10m_railroads_north_america.shp 文件拖拽到画布中。

../../_images/130.png

  1. 你会看到一个新的图层 ne_10m_railroads_north_america 被加载到图层面板中。该图层包含了整个北美洲的铁路线。现在,我们来计算每条线要素的长度。转到 处理 ‣ 工具箱

../../_images/220.png

  1. 搜索并找到 矢量几何 ‣ 添加几何属性 算法。双击启动它。

../../_images/318.png

  1. 在添加几何属性对话框中,选择 ne_10m_railroads_north_america 作为输入图层。输入图层的坐标系是 EPSG:4326 WGS84。这是一个以经纬度为坐标、以 WGS84 为椭球体、以度为单位的 地理坐标系。由于纬度和经度没有标准长度,你无法使用平面几何函数精确测量距离或面积。幸运的是,QGIS 提供了使用椭球几何计算距离的更好方法,这对于像本教程这样覆盖大面积区域的图层是最准确的方法。选择 椭球面 作为计算依据选项。点击运行。处理完成后,点击关闭。

../../_images/47.png

注意

如果你的输入图层位于 投影坐标系 中,你可以选择 图层 CRS 选项进行计算。地方或区域性的投影坐标系旨在最小化其感兴趣区域内的变形,因此对此类计算更为准确。对于位于 地理坐标系(即经纬度坐标)中的图层,建议使用 椭球面 选项。椭球面长度计算的默认单位是 ,可以通过 项目 ‣ 属性 ‣ 常规 来更改。

  1. 你会看到一个新的图层 Added geom info 加载到图层面板中。这是输入图层的副本,并添加了一个用于存放距离的新列。右键单击 Added geom info 图层并选择 打开属性表

../../_images/57.png

注意

添加几何属性 工具会根据输入图层是点、线还是面来添加不同的属性集。更多详情请参阅 QGIS 文档

  1. 在属性表中,你会看到一个名为 length 的新列。该列包含每个线要素的长度(单位为)。同时请注意 sov_a3 属性,它包含了每个要素的国家代码。关闭属性表窗口。

../../_images/67.png

  1. 现在我们有了每个铁路线段落的长度,可以将它们相加得到铁路总长度。但根据问题描述,我们需要的是美国境内的铁路总长度,因此必须仅使用位于美国境内的线段。我们可以使用 sov_a3 列中的国家代码值来过滤图层。右键单击 Added geom info 图层并选择 过滤

../../_images/77.png

  1. 在查询构建器对话框中,输入以下表达式并点击确定。

bash "sov_a3" = 'USA'

../../_images/87.png

  1. 你会在图层面板中 Added geom info 图层旁边看到一个过滤图标,这表明已对该图层应用了过滤器。你也可以直观地确认该图层现在只包含美国的线段。现在我们可以计算总和了。点击属性工具栏上的 显示统计摘要 按钮。

../../_images/97.png

  1. 一个新的统计面板将会打开。选择 Added geom info 图层和 length 列。

../../_images/1010.png

  1. 你将在面板中看到显示的各种统计数据。统计数据的单位与 length 列的单位相同——。让我们更改计算方式,改用公里。点击统计面板中字段下拉菜单旁边的表达式图标。

../../_images/1113.png

  1. 在表达式对话框中输入以下表达式,将长度转换为公里。

bash length / 1000

../../_images/1211.png

  1. 显示的 总和 值就是美国境内的铁路总长度。

../../_images/139.png


如果你想提供反馈或分享学习本教程的体验,请在下方留言。(需要 GitHub 账户)