制作热区图

警告

本教学已经过时,如需阅读新的版本请前往 制作热区图 (QGIS3)

热区图(Heatmap)最适合用来呈现高密度的点资料。它可用于识别点资料中的高度密集区域,在丛集分析热点分析的操作中也非常有用。

内容说明

我们会使用 2011 年在英国萨里郡(Surrey)的犯罪地点资料,找出郡内犯罪的热点区域。

你还会学到这些

  • 如何为高密度的点资料进行热点分析丛集分析

取得资料

data.police.uk 以 CSV 档格式,提供街头犯罪与其结果,以及街头拦检的资料。

Surrey Police 下载资料并解压后,就可得到 CSV 档。

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

2015-08-surrey-street.csv

资料来源 [POLICEUK]

操作流程

  1. 首先,要把 CSV 档汇入 QGIS 中 (细节请参考 汇入工作表或 CSV 档)。选择 图层 ‣ 加入分隔文字图层

../_images/1149.png
  1. 找到并开启 2015-08-surrey-street.csv (如果你是从他们网站直接下载的话,档名可能会有些许不同)。档案格式选择 CSV (逗号分栏值) 后,可以看到 LongitudeLatitude 栏位自动带入到 X 和 Y 座标了。勾选 使用空间索引,可以加快在此图层上操作的速度,最后按下 确定

../_images/2104.png
  1. 载入时可能会看到一些错误,在本教学中可以先忽略它们。按下 关闭 即可。

../_images/356.png
  1. 资料被读到 QGIS 后,你会看到一个警告框写着 CRS was undefined: defaulting to CRS EPSG:4326 - WGS84。这是因为 CSV 载入程式的设定是如果你的座标是经纬度,那么预设会用 EPSG:4326 来处理投影。在其他状况下,会有一个视窗跳出来问你资料所使用的座标系统。因为我们的资料是以 EPSG:4326 投影,所以尽管忽略此警告没关系。(译按:随着 QGIS 版本不同,也有可能会要求你输入座标系统,这时选 EPSG:4326 即可。)

注解

如果要改变自动指定的 CRS,可以到 menuselection:向量 –> 资料管理工具 –> 定义目前投影 中修改。

../_images/438.png
  1. 稍微放大检视资料,可以发现资料相当密集,很难快速判断哪个区块的点密度最高。这种情形下,就是热区图派上用场的时候。

../_images/538.png
  1. 如果你是要制作纯粹用来视觉化或是列印出来的热区图,QGIS 有个内建的图例样式就叫做 热区图,先来试试看这个吧。在 2015-08-surrey-street 图层上按右键,选择 属性

../_images/636.png
  1. 属性 视窗中切换到 样式 的分页,样式类别设定成 热区图,你会看到有许多种不同的色阶可以选,这里我们来选个 Oranges 色阶。其他参数保持不变,按下 确定 即可。

../_images/736.png
  1. 如此一来就可以看到资料的热区图,换句话说就是犯罪密集度高的地方比较「」。在刚才的参数页面中有非常多的选项,可以调整到最适合某笔资料的情况。如果你只是要弄一个视觉化或列印版本的热区图,那么就已经完成了!不过,我们在这边还要再看看另一种更强大的热区图制作方法,它可以让你使用热区图的输出资料进行后续分析。

../_images/835.png
  1. 启用核心附加元件 热区图,可参考 使用附加元件 进行操作。启用后,选择 影像 ‣ 热区图 ‣ 热区图

../_images/936.png
  1. Heatmap附加元件 的视窗中,输出影像 栏位填上 crime_heatmap 当作输出档名,半径 栏位填上 1000。这里的「半径」是指对每个像素而言,要使用多大的圆来计算有多少点涵盖在内。把 进阶设定 选项打开,这样我们就能进一步设定输出热区图的尺寸。在 栏位中输入 2000,你会看到 栏位会自动更新。按下 确定后 就会开始制作热区图。

../_images/1034.png
  1. 程式跑完后,会有一个叫做 crime_heatmap 的图层出现在画布上。现在可以把 2015-08-surrey-street 图层取消勾选了。

../_images/1150.png
  1. 让我们来把这它弄得更像热区图,就像是早些时候的版本那样。在热区图图层上按右键选择 属性

../_images/1235.png
  1. 样式 分页中,绘图类型 选择 单波段伪彩色,然后在 载入最小/最大值 栏位下方的 精确程度,勾选 估算(较快),接着按下 载入。程式会找出热区图的像素最小值和最大值,以供我们制作适当的色阶。接下来在 产生新的色彩对映表 栏位中,选择 YlOrRd (黄-橘-红) 当作色阶,接着按下 分类,最后按 确定

../_images/1334.png
  1. 现在就可以看到这个图层变得比较像是热区图的感觉了。你可以使用 识别图征 工具,在热区图上的任一区点一下,就可以在结果视窗里面看到这个像素的值。这个值代表图层中有多少点落在这个像素周围指定的区域内 (我们的例子是方圆 1000 公尺)。

../_images/1433.png
  1. 这张热区图可以储存下来供未来使用,在许多时候,我们要找的是那些地方有相当高的点密度(也就是热点,Hotspot),接下来我们就来看要怎么操作。选择 影像 ‣ 影像计算

../_images/1532.png
  1. 第一步是要决定一个门槛值,值比这个门槛还高的像素,会被当作位于高浓度区域。对于此笔资料,我们先来试试看 10 吧。在 影像计算 视窗中,把输出图层命名为 crime_hotspots,然后按两下在 影像波段 栏位中的 cirme_heatmap@1,它就会被加入到下方的 影像计算表示式 当中。依照如下所示完成表示式,然后勾选 将结果加入专案,最后按下 确定

"crime_heatmap@1" > 10
../_images/1629.png
  1. 接着 crime_hotspots 这个新图层就会被加到 QGIS 中。这个图层的像素值不是 0 就是 1,他们分别表示像素值小于等于 10 或大于 10。下一步选择 影像 ‣ 转换 ‣ 转换成多边形 (影像转为向量)

../_images/1727.png
  1. 把输出档命名为 crime_hotspots_vector,勾选 栏位名称 以及 处理完成后载入 QGIS 地图中,最后按 确定。(译注:栏位名称 请填上 DN。)

../_images/1827.png
  1. 转换完成后,QGIS 就会载入 crime_hotspots_vector。这是我们在前一步骤所制作的热点分布图的向量化表示法。目前此图层包含了 0 与 1 的集合,所以我们还要把 0 的集合滤掉之后,剩下 1 的集合才是热点的分布区。在图层上按右键,选择 开启属性表格

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

../_images/2015.png
  1. 输入如图所示的表达式,按下 选取,然后 关闭

"DN" = 0
../_images/2120.png
  1. 在属性视窗中,可以看到符合条件的图征被选取了。按下工具列的 切换编辑模式,然后再按下 删除已选取图征 (DEL) 按钮。

../_images/2218.png
  1. 把选取的图征删除后,按下 储存编辑 钮,然后再按下 切换编辑模式 钮把此图层再次设定为唯读。现在可以关闭属性表视窗了。

../_images/2315.png
  1. 在 QGIS 主视窗中,取消 crime_hotspots 图层的勾选。我们的最终图层 crime_hotspot_vector 现已包含从热区图中撷取出来的热点。至此为止,我们已从原始资料中使用精巧的方法收集了热点,或许你可以从中发现什么洞见,或是为这些资料做进一步的处理分析。

../_images/2414.png