制作热区图¶
警告
本教学已经过时,如需阅读新的版本请前往 制作热区图 (QGIS3)。
热区图(Heatmap)最适合用来呈现高密度的点资料。它可用于识别点资料中的高度密集区域,在丛集分析或热点分析的操作中也非常有用。
取得资料¶
data.police.uk 以 CSV 档格式,提供街头犯罪与其结果,以及街头拦检的资料。
从 Surrey Police 下载资料并解压后,就可得到 CSV 档。
为了方便起见,你也可以直接用下面的连结下载:
资料来源 [POLICEUK]
操作流程¶
首先,要把 CSV 档汇入 QGIS 中 (细节请参考 汇入工作表或 CSV 档)。选择 。
找到并开启
2015-08-surrey-street.csv
(如果你是从他们网站直接下载的话,档名可能会有些许不同)。档案格式选择 CSV (逗号分栏值) 后,可以看到Longitude
和Latitude
栏位自动带入到 X 和 Y 座标了。勾选 使用空间索引,可以加快在此图层上操作的速度,最后按下 确定。
载入时可能会看到一些错误,在本教学中可以先忽略它们。按下 关闭 即可。
资料被读到 QGIS 后,你会看到一个警告框写着 CRS was undefined: defaulting to CRS EPSG:4326 - WGS84。这是因为 CSV 载入程式的设定是如果你的座标是经纬度,那么预设会用 EPSG:4326 来处理投影。在其他状况下,会有一个视窗跳出来问你资料所使用的座标系统。因为我们的资料是以 EPSG:4326 投影,所以尽管忽略此警告没关系。(译按:随着 QGIS 版本不同,也有可能会要求你输入座标系统,这时选 EPSG:4326 即可。)
注解
如果要改变自动指定的 CRS,可以到 menuselection:向量 –> 资料管理工具 –> 定义目前投影 中修改。
稍微放大检视资料,可以发现资料相当密集,很难快速判断哪个区块的点密度最高。这种情形下,就是热区图派上用场的时候。
如果你是要制作纯粹用来视觉化或是列印出来的热区图,QGIS 有个内建的图例样式就叫做 热区图,先来试试看这个吧。在
2015-08-surrey-street
图层上按右键,选择 属性。
在 属性 视窗中切换到 样式 的分页,样式类别设定成 热区图,你会看到有许多种不同的色阶可以选,这里我们来选个
Oranges
色阶。其他参数保持不变,按下 确定 即可。
如此一来就可以看到资料的热区图,换句话说就是犯罪密集度高的地方比较「热」。在刚才的参数页面中有非常多的选项,可以调整到最适合某笔资料的情况。如果你只是要弄一个视觉化或列印版本的热区图,那么就已经完成了!不过,我们在这边还要再看看另一种更强大的热区图制作方法,它可以让你使用热区图的输出资料进行后续分析。
启用核心附加元件
热区图
,可参考 使用附加元件 进行操作。启用后,选择 。
在 Heatmap附加元件 的视窗中,输出影像 栏位填上
crime_heatmap
当作输出档名,半径 栏位填上 1000。这里的「半径」是指对每个像素而言,要使用多大的圆来计算有多少点涵盖在内。把 进阶设定 选项打开,这样我们就能进一步设定输出热区图的尺寸。在 行 栏位中输入2000
,你会看到 列 栏位会自动更新。按下 确定后 就会开始制作热区图。
程式跑完后,会有一个叫做
crime_heatmap
的图层出现在画布上。现在可以把2015-08-surrey-street
图层取消勾选了。
让我们来把这它弄得更像热区图,就像是早些时候的版本那样。在热区图图层上按右键选择 属性。
在 样式 分页中,绘图类型 选择 单波段伪彩色,然后在 载入最小/最大值 栏位下方的 精确程度,勾选 估算(较快),接着按下 载入。程式会找出热区图的像素最小值和最大值,以供我们制作适当的色阶。接下来在 产生新的色彩对映表 栏位中,选择 YlOrRd (黄-橘-红) 当作色阶,接着按下 分类,最后按 确定。
现在就可以看到这个图层变得比较像是热区图的感觉了。你可以使用 识别图征 工具,在热区图上的任一区点一下,就可以在结果视窗里面看到这个像素的值。这个值代表图层中有多少点落在这个像素周围指定的区域内 (我们的例子是方圆 1000 公尺)。
这张热区图可以储存下来供未来使用,在许多时候,我们要找的是那些地方有相当高的点密度(也就是热点,Hotspot),接下来我们就来看要怎么操作。选择
,
第一步是要决定一个门槛值,值比这个门槛还高的像素,会被当作位于高浓度区域。对于此笔资料,我们先来试试看
10
吧。在 影像计算 视窗中,把输出图层命名为crime_hotspots
,然后按两下在 影像波段 栏位中的cirme_heatmap@1
,它就会被加入到下方的 影像计算表示式 当中。依照如下所示完成表示式,然后勾选 将结果加入专案,最后按下 确定。
"crime_heatmap@1" > 10
接着
crime_hotspots
这个新图层就会被加到 QGIS 中。这个图层的像素值不是 0 就是 1,他们分别表示像素值小于等于10
或大于10
。下一步选择 。
把输出档命名为
crime_hotspots_vector
,勾选 栏位名称 以及 处理完成后载入 QGIS 地图中,最后按 确定。(译注:栏位名称 请填上 DN。)
转换完成后,QGIS 就会载入
crime_hotspots_vector
。这是我们在前一步骤所制作的热点分布图的向量化表示法。目前此图层包含了 0 与 1 的集合,所以我们还要把 0 的集合滤掉之后,剩下 1 的集合才是热点的分布区。在图层上按右键,选择 开启属性表格。
在 属性表格 视窗中按下 使用表示式选取图征 的按钮。
输入如图所示的表达式,按下 选取,然后 关闭。
"DN" = 0
在属性视窗中,可以看到符合条件的图征被选取了。按下工具列的 切换编辑模式,然后再按下 删除已选取图征 (DEL) 按钮。
把选取的图征删除后,按下 储存编辑 钮,然后再按下 切换编辑模式 钮把此图层再次设定为唯读。现在可以关闭属性表视窗了。
在 QGIS 主视窗中,取消
crime_hotspots
图层的勾选。我们的最终图层crime_hotspot_vector
现已包含从热区图中撷取出来的热点。至此为止,我们已从原始资料中使用精巧的方法收集了热点,或许你可以从中发现什么洞见,或是为这些资料做进一步的处理分析。