QGIS热力图具体怎么做?权重字段如何选?
引言:很多同学在做人口、POI、案件、事故点或采样点可视化时,都会问:QGIS热力图具体怎么做?权重字段如何选? 这个问题看似只是点几下工具,实际关键在于三件事:点数据是否适合做热力图、半径和像元大小是否合理、权重字段是否表达了你想展示的“强度”。
本文以 QGIS 中常见的点数据热力图为例,说明从数据检查、工具参数设置、权重字段选择到结果验证的完整流程。读完后,你应该能判断什么时候用普通点密度热力图,什么时候需要使用权重字段,以及哪些参数会让热力图结果失真。

背景:QGIS热力图适合解决什么问题
背景:QGIS热力图本质上是把点要素的空间分布转换为连续栅格表面,用颜色表达某个位置附近点的密集程度或累计强度。它常用于观察空间集聚,而不是精确计算行政区统计值。
常见适用场景包括:
- 分析交通事故点、报警点、投诉点的空间热点。
- 展示餐饮、学校、医院、商铺等 POI 的分布密度。
- 观察采样点污染值、客流量、订单量等强度分布。
- 辅助确定巡查重点区、设施布局重点区或风险聚集区。
但要注意,热力图不是万能图。如果你的目标是“每个街道有多少事故”“每个区县平均值是多少”,更适合使用空间连接、分区统计或面图层分级设色,而不是直接做热力图。
原理:QGIS热力图不是简单把点变成颜色
原理:QGIS热力图通常基于核密度思想。简单理解,就是每个点会向周围一定半径范围内“扩散影响”,离点越近影响越大,离点越远影响越小,超过半径后影响为零。所有点的影响叠加后,就形成一张连续栅格。
因此,QGIS热力图结果主要受以下参数影响:
- 输入点图层:只能用点数据或点状事件数据,线和面需要先转换为合适的点。
- 半径:决定每个点影响范围。半径过小,图面碎;半径过大,热点被过度平滑。
- 像元大小:决定输出栅格分辨率。像元太小,文件大且处理慢;像元太大,细节丢失。
- 权重字段:决定每个点贡献的强度是否相同。没有权重字段时,默认每个点权重相同。
- 坐标系单位:半径和像元大小通常与图层坐标单位有关,如果图层是经纬度坐标,直接设置米级半径容易出错。
判断热力图是否可信的第一步,不是看颜色好不好看,而是确认坐标系、半径、像元大小和权重字段是否符合业务含义。
步骤:QGIS热力图具体怎么做
步骤:下面以 QGIS 桌面端为例,演示常规点数据生成热力图的流程。不同版本菜单名称可能略有差异,但核心参数基本一致。
第一步:准备点数据并检查字段
打开 QGIS 后,将点图层加载到工程中。常见格式包括 Shapefile、GeoPackage、GeoJSON、CSV 转点图层等。
先右键图层,打开属性表,重点检查:
- 每条记录是否对应一个真实点事件。
- 是否存在重复点、空几何或异常坐标。
- 是否有可用于权重的数值字段,例如 population、count、sales、cases、flow。
- 权重字段是否为数值类型,而不是文本类型。
- 字段中是否存在空值、负值或极端异常值。
如果你的数据只是“每个事故点一条记录”,且每个事故点重要性相同,可以不设置权重字段。如果每个点代表不同数量,例如一个小区点包含人口数、一个门店点包含订单量,就应该考虑设置权重字段。
第二步:检查坐标系,优先使用投影坐标系
在图层属性中查看坐标参考系。如果数据是 EPSG:4326 这类经纬度坐标系,单位是度,不建议直接用它设置热力图半径。
更稳妥的做法是把数据另存为适合本区域的投影坐标系,例如:
- 中国范围较小的城市项目,可使用当地常用投影坐标系或 CGCS2000 高斯投影分带。
- Web 地图展示可临时使用 EPSG:3857,但做严肃距离分析时要谨慎。
- 跨大范围区域时,不要用一个局部投影处理全国尺度的距离问题。
操作方式通常是右键点图层,选择导出或另存为,设置目标坐标系为合适的投影坐标系,再用导出的图层制作热力图。
第三步:打开热力图工具
在 QGIS 中可以通过处理工具箱查找热力图工具。常见路径为:
- 打开菜单中的处理工具箱。
- 搜索“Heatmap”或“热力图”。
- 选择用于从点图层生成热力图的工具。
- 在参数面板中选择输入点图层。
如果你使用的是较新版本 QGIS,也可以通过图层样式中的热力图渲染快速查看效果。但如果要生成可保存、可分析、可发布的栅格结果,建议使用处理工具箱输出热力图栅格。
第四步:设置半径
半径是 QGIS热力图最重要的参数之一。它表示每个点向周围影响的距离范围。
半径可以按以下思路估算:
- 城市街区级 POI 分布:可从几百米到一两公里开始测试。
- 交通事故点:可结合道路密度、路口间距或管理单元尺度设置。
- 区县尺度事件分布:半径可能需要设置为几公里到十几公里。
- 采样点较稀疏的数据:半径过小会出现孤立斑块,需要适当放大。
不要只试一个半径。建议至少输出三版结果,例如 500 米、1000 米、2000 米,对比热点位置是否稳定。如果热点位置随半径变化完全不同,说明数据密度或参数选择需要重新评估。
第五步:设置像元大小
像元大小决定热力图栅格的空间分辨率。像元越小,图像越细,但文件更大,处理更慢;像元越大,图像更粗,细节更少。
一个实用经验是:像元大小可以设置为半径的十分之一到二十分之一作为初始值。例如半径为 1000 米,像元大小可先试 50 米或 100 米。
如果热力图只是用于报告制图,不需要过细像元。如果后续还要做栅格计算、阈值提取或热点区域矢量化,就需要根据分析尺度选择更合理的像元大小。
第六步:选择权重字段
权重字段决定每个点对热力图的贡献大小。QGIS热力图权重字段如何选,核心原则是:字段必须表示该点自身的数量、强度、规模或重要程度,而不是分类标签或无关编号。
适合作为权重字段的例子:
- 人口点数据中的人口数量字段。
- 门店点数据中的销售额、订单量、客流量字段。
- 事故点数据中的伤亡人数、损失金额、事故等级数值化字段。
- 采样点数据中的污染浓度、温度、指标值。
- 公交站点或客流点中的上车人数、下车人数、换乘量。
不适合作为权重字段的例子:
- ID、编号、OBJECTID、FID。
- 名称字段、地址字段、行政区名称。
- 分类编码,除非你已经明确把它转换为业务权重。
- 经度、纬度字段。
- 含大量空值、负值或明显异常值的字段。
如果不设置权重字段,QGIS 会把每个点视为同等贡献。这适合表达“点密度”。如果设置权重字段,结果表达的是“加权强度”,例如人口强度、订单强度或风险强度。
第七步:运行工具并渲染结果
设置输出路径后运行工具,得到一张栅格热力图。刚生成的栅格可能是灰度或默认样式,需要进一步设置渲染。
常见渲染步骤:
- 右键输出栅格,打开图层样式。
- 选择单波段伪彩色。
- 设置颜色带,例如蓝色到黄色到红色。
- 根据数据分布调整最小值和最大值。
- 必要时设置透明度,让底图或行政区边界可见。
红色区域通常表示热度值较高,但不一定意味着绝对数量最多。它取决于半径、权重、像元大小和颜色分级方式。因此在报告中应说明热力图参数,避免读者误解。
常见坑:QGIS热力图为什么做出来不对
常见坑:如果 QGIS热力图结果看起来奇怪,通常不是软件坏了,而是数据、坐标系或参数出了问题。
坑一:用经纬度图层直接设置米级半径
经纬度坐标单位是度,不是米。如果你在 EPSG:4326 图层上直接输入 1000,以为是 1000 米,结果往往会严重错误。制作热力图前,应尽量把点图层转换到合适的投影坐标系。
坑二:把 ID 字段当成权重字段
ID 只是记录编号,数值大不代表事件更强。如果把 ID 当权重,后生成的记录会被赋予更高热度,结果完全没有业务意义。
坑三:半径设置过大导致热点被抹平
半径过大时,很多局部热点会被融合成一大片平滑区域。对于城市内部分析,这会掩盖真实的街区差异。
坑四:半径设置过小导致结果像散点图
半径过小时,热力图会出现很多孤立小斑块,看起来只是点的模糊版本,无法体现连续集聚趋势。
坑五:权重字段存在极端值
如果某个点的订单量、人口数或污染值远高于其他点,热力图可能被这个点主导。处理前应查看字段统计,必要时进行分位数截断、对数变换或异常值核查。
坑六:把热力图当成精确边界
热力图显示的是平滑后的强度表面,不是行政边界,也不是精确影响范围。不能直接说红色边缘就是风险边界,除非你有明确的阈值规则和验证依据。
方法比较:普通点密度热力图、加权热力图和分区统计怎么选
方法比较:同样是分析空间集聚,不同方法回答的问题不一样。下面这张表可以帮助你判断是否应该用 QGIS热力图,以及是否需要选择权重字段。
| 方法 | 适合回答的问题 | 是否需要权重字段 | 典型场景 |
|---|---|---|---|
| 普通热力图 | 哪里点更多、点更密集 | 不需要 | 事故点、投诉点、POI 分布密度 |
| 加权热力图 | 哪里累计强度更高 | 需要 | 人口强度、订单量、客流量、污染值 |
| 分区统计 | 每个行政区或网格内有多少、平均多少 | 可选 | 街道统计、区县汇总、规则网格统计 |
| 点聚合 | 地图缩放时减少点数量、提升显示性能 | 通常不需要 | WebGIS 点位展示、移动端地图 |
| 空间插值 | 根据采样点估计未知位置数值 | 使用观测值字段 | 污染、降雨、温度等连续现象 |
如果你的数据是事件点,且每条记录代表一次事件,优先用普通热力图。如果每个点背后有数量或强度差异,才使用加权热力图。如果你要输出表格指标或按行政区排名,应该使用分区统计,而不是只看热力图颜色。
检查清单:生成QGIS热力图前后要确认什么
检查清单:在正式出图或交付成果前,建议按下面清单逐项检查。
数据检查
- 点图层坐标是否正确,没有明显偏移到海上或其他城市。
- 输入图层是否为点要素,而不是面中心点误用或错误转换结果。
- 是否存在重复点、空几何、异常坐标。
- 属性表中权重字段是否为数值型。
- 权重字段是否有空值、负值、异常大值。
参数检查
- 图层是否使用合适的投影坐标系。
- 半径是否符合业务尺度。
- 像元大小是否与半径和输出用途匹配。
- 是否对比过不同半径下的热力图结果。
- 是否记录了热力图工具参数,便于复现。
结果检查
- 热点位置是否与原始点分布大体一致。
- 高值区是否被单个异常权重点控制。
- 颜色分级是否造成误导。
- 是否叠加底图、道路、行政区边界辅助解释。
- 报告中是否说明这是热度表面而非精确边界。
FAQ:QGIS热力图权重字段和参数常见问题
FAQ:下面整理几个做 QGIS热力图时最常见的问题。
QGIS热力图一定要选权重字段吗?
不一定。如果每个点代表同等事件,例如每一条记录都是一次投诉或一次事故,可以不选权重字段,这时结果表达点密度。如果每个点代表不同数量,例如一个点代表一个小区人口数或一个门店订单量,就应该选择合适的权重字段。
QGIS热力图权重字段可以选分类字段吗?
通常不建议直接选分类字段。分类编码只是类别,不一定有大小含义。例如类型 1、类型 2、类型 3 并不代表 3 比 1 强三倍。如果确实要表达类别权重,应先根据业务规则生成一个新的数值权重字段。
为什么我的热力图只有一大片红色或一大片蓝色?
可能原因包括半径过大、颜色分级范围不合理、权重字段有极端值、像元大小过粗,或者点数据本身分布过于集中。建议先叠加原始点图层查看,再调整半径和渲染最大最小值。
QGIS热力图半径应该设置多少?
没有固定答案。半径应与分析尺度匹配。城市街区级分析可以从几百米到一两公里试起;区县尺度可以尝试更大半径。建议输出多组半径结果,对比热点是否稳定,而不是只凭视觉选择最好看的一张。
热力图可以用来计算每个行政区的热点值吗?
可以进一步进行栅格分区统计,但如果你的目标本来就是行政区统计,直接对点数据做空间连接或分区汇总通常更清晰。热力图更适合看连续空间趋势,而不是替代表格统计。
为什么热力图和原始点看起来不完全一致?
这是正常的。热力图经过半径扩散和平滑处理,不会逐点显示原始数据。它强调空间集聚趋势,而不是每个点的精确位置。解释结果时,应同时查看原始点和热力图。
结论:先明确热力图表达什么,再选择权重字段
结论:QGIS热力图具体怎么做,操作上并不复杂:准备点数据,检查坐标系,打开热力图工具,设置半径、像元大小和权重字段,最后进行栅格渲染。真正容易出错的是对参数含义的理解。
如果你只是想看“哪里点更密”,不需要权重字段。如果你想看“哪里强度更高”,就要选择能代表数量、规模或强度的数值字段。不要把 ID、名称、分类编码、经纬度当成权重字段。
做一张可信的 QGIS热力图,建议记住一句话:先检查坐标系,再确定分析尺度,最后根据业务含义选择权重字段。这样得到的热力图才不仅好看,而且能解释、能复现、能用于后续 GIS 分析。