计算线段的长度和统计资讯¶
警告
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]
操作流程¶
选择
。
选择
ne_10m_railroads_north_america.zip
并按下 确定。
在 选择加入的图层… 对话框中,选择
ne_10m_railroads_north_america.shp
。(译注:较新的 QGIS 版本不会出现这个步骤)
图层载入后,会显示所有北美的铁道线段。我们的目标是只计算美国的铁路长度,所以必须要先选择那些位于美国境内的铁路才行。以右键点选此图层,然后 开启属性表格。
这个图层含有一个叫做 sov_a3 的属性,其值使用三个英文字母来代表这段图征位在哪个城市。我们要利用这个属性来选择位于美国境内的铁路。
在 属性表格 视窗中按下 使用表示式选取图征 的按钮。
以表示式选取图征 的视窗出现后,在 函数列表 中的 栏位与值 的分类中找到 sov_a3 属性,然后按两下以加入到 表示式 区中,补完这个表达式
"sov_a3" = 'USA'
,好了以后按下 选取 然后 关闭。
回到 QGIS 主视窗,现在在美国境内的线段都被选取,并标为黄色了。
现在来把选取区域另存新档吧。在
ne_10m_railroads_north_america
图层上按右键然后选择 储存选取区域为… (或是 存档为…),
选择 浏览 然后把输出档命名为
usa_railroads.shp
。这里我们顺便转换一下图层的 CRS,请按下在 CRS 旁边的 浏览 图示。
注解
QGIS 的内建函数是使用图层的座标参考系统 (CRS) 的预设单位来计算线段长度。因为 EPSG:4326 这个 CRS 使用角度当作单位,计算线段或面积的结果也会是角度或是平方度,以此作单位的数值其实并不实用。所以这里必须要使用以公尺作为单位的专案座标参考系统来做计算。
因为我们是要计算长度,这里来选一个等距离投影试试。在 过滤条件 栏位输入 north america equ 后,底下的结果就会出现 North_America_Equidistant_Conic EPSG:102010,选择它作为新的 CRS 之后,按下 确定。
回到刚才的 储存向量图层为… 视窗,勾选 加入储存档案至地图中`(译注:如果有 :guilabel:`储存仅选取的图征,也应一并勾选),最后按下 确定。
操作完成后,QGIS 中会出现叫做
usa_railroads
的新图层。现在已经用不到旧图层,可以取消ne_10m_railroads_north_america
的勾选,把它隐藏起来了。
在
usa_railroads
图层上按右键,选择 开启属性表格,
接下来就来为所有图征新增一个长度的属性看看。按下 切换编辑模式 钮以进入编辑模式,在此模式中,按下 开启栏位计算 钮。
在 栏位计算器 中,先勾选 建立新栏位,在 输出栏位名称 中输入 length_km,在 输出栏位类别 中选择 十进位数(实数),精确度 调到 2,然后在底下的 函数列表 框中,找出位于 几何栏位 分类中的 $length,并且点两下以加入 表达式 区块。因为我们想要以公里为单位但图层的 CRS 使用公尺为单位,所以这里公式要改成:
$length / 1000
。最后按下 确定。
回到 属性表格,新的 length_km 属性就会出现。再次按下 切换编辑模式 以储存刚才所做的修改。
现在每个线段都有自己个长度了,我们只需简单的加总,就能知道全线段总长。选择
,
然后在 输入向量图层 中选择
usa_railroads
,在 目标栏位 中选择 length_km。按下 确定 后,就可以看到许多的统计资讯出现,其中的 总和 数值就是我们这次要找的铁道总长度。
注解
铁道总长度在不同的投影下会有些微的不同。实务上,线段、道路等长度一般会在制作资料库时一并测量,并作为图征的其中一个属性。本教学介绍的方法可以当作真实线段长度的近似估计,使用在那些没有这个属性的图征上。