计算线段的长度和统计资讯

警告

This tutorial is now obsolete. A new and updated version is available at 计算线长和统计信息(QGIS3)

(Unfinished) QGIS 内建的功能可以计算图征的几何性质,像是长度、面积、周长等等。

内容说明

使用北美铁路网的线段式 shapefile 来计算美国的铁道总长度。

你还会学到这些

  • 使用表达式选择图征。

  • 把图层重新投影到专案的座标参考系统 (CRS) 上。

  • 查阅某图层中某个属性的统计资讯。

取得资料

Natural Earth 上有属于公领域资料的 铁路 资料库,北美的部分 也在此提供下载。

为了方便起见,你也可以直接用下面的连结下载:

ne_10m_railroads_north_america..zip

资料来源 [NATURALEARTH]

操作流程

  1. 选择 图层 ‣ 加入向量图层

../_images/1145.png
  1. 选择 ne_10m_railroads_north_america.zip 并按下 确定

../_images/2101.png
  1. 选择加入的图层… 对话框中,选择 ne_10m_railroads_north_america.shp。(译注:较新的 QGIS 版本不会出现这个步骤)

../_images/353.png
  1. 图层载入后,会显示所有北美的铁道线段。我们的目标是只计算美国的铁路长度,所以必须要先选择那些位于美国境内的铁路才行。以右键点选此图层,然后 开启属性表格

../_images/435.png
  1. 这个图层含有一个叫做 sov_a3 的属性,其值使用三个英文字母来代表这段图征位在哪个城市。我们要利用这个属性来选择位于美国境内的铁路。

../_images/535.png
  1. 属性表格 视窗中按下 使用表示式选取图征 的按钮。

../_images/634.png
  1. 以表示式选取图征 的视窗出现后,在 函数列表 中的 栏位与值 的分类中找到 sov_a3 属性,然后按两下以加入到 表示式 区中,补完这个表达式 "sov_a3" = 'USA',好了以后按下 选取 然后 关闭

../_images/734.png
  1. 回到 QGIS 主视窗,现在在美国境内的线段都被选取,并标为黄色了。

../_images/833.png
  1. 现在来把选取区域另存新档吧。在 ne_10m_railroads_north_america 图层上按右键然后选择 储存选取区域为… (或是 存档为…),

../_images/934.png
  1. 选择 浏览 然后把输出档命名为 usa_railroads.shp。这里我们顺便转换一下图层的 CRS,请按下在 CRS 旁边的 浏览 图示。

注解

QGIS 的内建函数是使用图层的座标参考系统 (CRS) 的预设单位来计算线段长度。因为 EPSG:4326 这个 CRS 使用角度当作单位,计算线段或面积的结果也会是角度或是平方度,以此作单位的数值其实并不实用。所以这里必须要使用以公尺作为单位的专案座标参考系统来做计算。

../_images/1032.png
  1. 因为我们是要计算长度,这里来选一个等距离投影试试。在 过滤条件 栏位输入 north america equ 后,底下的结果就会出现 North_America_Equidistant_Conic EPSG:102010,选择它作为新的 CRS 之后,按下 确定

../_images/1146.png
  1. 回到刚才的 储存向量图层为… 视窗,勾选 加入储存档案至地图中`(译注:如果有 :guilabel:`储存仅选取的图征,也应一并勾选),最后按下 确定

../_images/1234.png
  1. 操作完成后,QGIS 中会出现叫做 usa_railroads 的新图层。现在已经用不到旧图层,可以取消 ne_10m_railroads_north_america 的勾选,把它隐藏起来了。

../_images/1333.png
  1. usa_railroads 图层上按右键,选择 开启属性表格

../_images/1432.png
  1. 接下来就来为所有图征新增一个长度的属性看看。按下 切换编辑模式 钮以进入编辑模式,在此模式中,按下 开启栏位计算 钮。

../_images/1531.png
  1. 栏位计算器 中,先勾选 建立新栏位,在 输出栏位名称 中输入 length_km,在 输出栏位类别 中选择 十进位数(实数)精确度 调到 2,然后在底下的 函数列表 框中,找出位于 几何栏位 分类中的 $length,并且点两下以加入 表达式 区块。因为我们想要以公里为单位但图层的 CRS 使用公尺为单位,所以这里公式要改成:$length / 1000。最后按下 确定

../_images/1628.png
  1. 回到 属性表格,新的 length_km 属性就会出现。再次按下 切换编辑模式 以储存刚才所做的修改。

../_images/1726.png
  1. 现在每个线段都有自己个长度了,我们只需简单的加总,就能知道全线段总长。选择 向量 ‣ 分析工具 ‣ 基本统计

../_images/1826.png
  1. 然后在 输入向量图层 中选择 usa_railroads,在 目标栏位 中选择 length_km。按下 确定 后,就可以看到许多的统计资讯出现,其中的 总和 数值就是我们这次要找的铁道总长度。

注解

铁道总长度在不同的投影下会有些微的不同。实务上,线段、道路等长度一般会在制作资料库时一并测量,并作为图征的其中一个属性。本教学介绍的方法可以当作真实线段长度的近似估计,使用在那些没有这个属性的图征上。

../_images/1920.png