制作热区图 (QGIS3)¶
热图是用于密集点数据的最佳可视化工具之一。热图是一种插值技术,可用于确定输入要素的密度。热图最常用于可视化犯罪数据,交通事故,房屋密度等。QGIS具有可用于设置点层样式的热图渲染器以及可用于处理 热图(内核密度估计) 的处理算法从点图层创建栅格。
取得资料¶
data.police.uk 以简单的CSV格式提供了街道一级的犯罪,结果,停止和搜索数据。下载 Surrey Police 的数据,并解压缩下载的档案以提取CSV文件。
为了方便起见,你也可以直接用下面的连结下载数据集:
资料来源 [POLICEUK]
操作流程¶
我们将首先从OpenStreetMap加载底图图层,然后导入CSV数据。单击 Open Data Source Manager 按钮。
在左侧面板中选择 Browser 标签,然后在 XYZ Tiles 下找到 OpenStreetMap 图层。右键单击并选择 Add Selected Layer(s) to Canvas 以在QGIS中添加该图层。
切换到 Delimited Text 标签。在这里,我们将导入CSV格式文本文件中的犯罪数据。单击文件名旁边的 … 按钮,然后浏览至 File name 并且下载
2019-02-surrey-street.csv
文件。要在 Geometry Definition 部分的 X field 和 Y field 中自动填充经度
和纬度
列。几何标签CRS应该保留默认的EPSG:4326-WGS 84
定义。确保数据在 Sample data 面板中看起来正确,然后单击 Add ,然后单击 Close。
您将看到2层,在QGIS图层面板中加载的
OpenStreetMap
和2019-02-surrey-street
。右键单击2019-02-surrey-street
图层,然后选择 Zoom to Layer。
您将看到犯罪事件点图层叠加在OpenStreetMap底图上。缩放和平移以浏览数据。数据非常密集,很难了解犯罪高度集中的地方。这是热图可视化将派上用场的地方。选择
2019-02-surrey-street
图层,然后单击 Open the Layer Styling panel 面板按钮。
在下拉框菜单中选择
Heatmap
作为渲染器。Layer Styling panel 面板是交互式的,您可以立即在画布上看到更改的效果。现在,该图层将以默认的灰度彩色渐变显示。
热图通常是使用黄色到红色或白色到红色的颜色渐变的渲染器,其中较高的点集中会导致更多的 热量。单击颜色渐变下拉菜单并选择
红色
。
接下来,您需要选择一个 Radius。此参数确定该点将对其产生影响的每个点周围的圆形邻域。此值将在很大程度上取决于输入数据的类型。对于我们的数据,我们假设犯罪事件会在距该地点最高5公里的地方产生影响。请注意,当前项目的CRS在右下角设置为
EPSG:3857
。此CRS的单位为米,因此我们应将半径指定为5000
米。此菜单中隐藏的另一个参数是内核形状。此功能确定点的影响应如何在给定半径上扩展。 Heatmap渲染器使用Quartic
函数进行此计算。当使用本教程后面介绍的其他热图创建方法时,可以指定其他类型的内核,例如Triangular
,Uniform
,Triweight
和Epanechnikov
。有关选择正确的半径和核形状的详细说明和指南,请参见 这个帖子。
热图可视化已准备就绪。我们可以在底部的 Layer Rendering 部分中调整热图的 Opacity。将不透明度设置为
60%
,以便可以看到底图以及热图。
对于许多类型的分析,仅考虑点密度就足够了。但是有时候,您可能希望对每个点赋予不同的重要性。暴力行为比抢劫对犯罪现场的热图影响更大。同样,有时一个点可能代表一个位置上的多个观测值,因此需要在分析中加以考虑。为此,您可以提供一个可选的数字 重量 字段,该字段为每个点指定一个值。让我们添加一个权重字段并将其用于改善热图。右键单击
2019-02-surrey-street
图层,然后选择 Open Attribute Table。
您将在输入数据中看到一个描述犯罪类型的文本字段,称为
犯罪类型
。我们可以使用它们对不同类型的犯罪进行分类,并为较暴力的犯罪赋予更高的权重。
点击 Open field calculator。
现在我们将输入使用
犯罪类型
的公式并确定重量值。QGIS有一种方便的方法可以使用 Virtual Fields 添加此类计算字段。虚拟字段保存在QGIS项目中,并且不会修改源数据。它也是动态计算的,可以像其他任何属性值一样在QGIS中的任何位置使用。输入weight
作为 Output field name 并将 Output field type 设置为整数(整数)
。在 Expression editor 中输入以下表达式。在这里,我们使用 CASE 语句根据不同的条件分配不同的值。点击 OK。
CASE WHEN "Crime type" LIKE 'Violence%' THEN 10 WHEN "Crime type" LIKE 'Criminal%' THEN 5 ELSE 1 END
将为每个具有适当权重值的特征添加一个新属性。
返回 Layer Styling 面板中,单击 Weight points by 的下拉菜单,然后选择新添加的
重量
字段。
您将看到热图渲染更改,以说明weight参数。关闭 Layer Styling 面板。
如果您需要将热图可视化保存为永久栅格图层,或者想使用高级选项(例如不同的内核或动态半径)自定义热图,则可以使用Processing Toolbox中的 Heatmap(内核密度估计)。现在,我们将使用此算法。转到
。
在创建热图之前,我们需要将源数据重新投影到投影的CRS。由于距离在热图的计算中起着重要作用,因此使用地理CRS是不正确的。搜索并找到
算法。
在 Reproject layer 对话框中,为 Target CRS 单击 Select CRS 按钮。搜索并选择
EPSG:27700 OSGB 1936 / British National Grid
CRS。预计的CRS是英国数据的不错选择。点击 Run。
一个名为
Reprojected
的新层将被添加到 Layers 面板中。取消选中旧的2019-02-surrey-street
图层旁边的框以将其隐藏。
搜索并找到
算法。
在 Heatmap (Kernel Density Estimation) 对话框中,我们将使用与之前相同的参数。选择 Radius 为
5000
米,并选择 Weight from field 作为重量
。将 Pixel size X 和 Pixel size Y 设置为50
米。将 Kernel shape 设置为默认值Quartic
。点击 Run。
注解
Radius from field 参数允许您为每个点指定动态搜索半径。这可以与 Weight from field 一起使用,以对每个点的影响如何分布进行精细的粒度控制。
处理完成后,将加载名为
OUTPUT
的新栅格图层。默认的可视化效果很丑陋,因为它使用了单波段灰色
渲染器。单击 Open the Layer Styling panel 按钮。
将渲染更改为
单波段为彩色
,然后选择红色
色带。现在,该层看起来像我们之前创建的热图可视化。
注解
注意 Layers 面板中的 OUTPUT
层有图例,但 2019-02-surrey-street
层没有图例。使用通过热图渲染器创建的热图图层的常见问题是缺少图例。假设您要在打印布局中使用热图并添加图例。使用热图处理算法方法创建的栅格热图使这成为可能。