建立有效的热图?


65

使用ArcGIS,QGIS,Grass和/或GVSIG:

  • 建立有效的热图涉及哪些工具和过程?
  • 涉及哪些插件?
  • 主要数据要求是什么?
  • 现有热点图有哪些缺陷?
  • 热点图无法有效解决哪些问题?
  • 怎么不做热图?
  • 在相同的情况下,是否有比热图更好的替代方法来表示数据?

尽管它不使用您指定的任何工具,但您可能还想看看这个Python脚本jjguy.com/heatmap
radek 2010年

1
Dassouki,您能否阐明“热图”的含义? 维基百科似乎认为这是一系列值的chorospleth形式。这是微妙的,但重要的是,与该线程中的所有答复不同,后者假定它仅表示任何基于网格(或图像)的属性的映射,尤其是已从点数据内插到网格上的属性。对于真正的热点图,每个项目符号问题的答案都将有所不同。
ub

Answers:


74

该问题已转换为“社区Wiki”,并且Wiki已锁定,因为它是一个问题的示例,它寻求答案列表,并且似乎很受欢迎,可以防止其被关闭。应该将其视为特殊情况,并且不应将其视为鼓励在此站点或任何Stack Exchange网站上使用的问题类型,但是如果您希望向其中提供更多内容,请随时编辑此答案。


至少有两种不同的热图:

  1. 表示点集中的热图,以及
  2. 表示属性值分布的热图

每种方法都有其优点和问题,恐怕要详细介绍远远超出此问答。

我将尝试列出一些QGIS和GRASS的方法和功能。

点集中

如果要跟踪野生生物,车辆等的移动,则对评估位置信息高度集中的区域可能很有用。

工具:例如QGIS Heatmap插件(版本> 1.7.x中可用)或GRASS v.neighborsv.kernel

属性值的分布

在这里,我们基本上或多或少地谈论插值方法。方法包括:

  1. IDW

    根据实现的不同,它可以是全局的(使用集合中的所有可用点)或局部的(受点数或点与插值位置之间的最大距离的限制)。

    工具:QGIS插值插件(全局),GRASS v.surf.idwr.surf.idw(本地)

  2. 花键

    同样,大量可能的实现。B样条曲线很受欢迎。

    工具:GRASS v.surf.bspline

  3. 克里格

    具有各种子类型的统计方法。

    工具:GRASS v.krige(感谢om_henners提供技巧)或使用R。


1
通过GRASS,有一个用于kriging v.krige的接口(grass.osgeo.org/wiki/V.krige_GSoC_2009),但是它仍然需要R以及GRASS Wiki页面上提到的各种R包和绑定。
om_henners

从QGIS 2.8开始,有一个用于点层的Heatmap渲染器。无需创建新数据。
亚历山大·内图

34

从统计上讲,这是制作热图的方法:

1)集成点功能。集成的想法是获取应该被视为重合的点,并将它们合并为一个位置。我喜欢使用最近邻居分析并从那里使用适当的值。(例如,在制作犯罪热点图时,我对犯罪进行地理编码的基础宗地数据集使用平均最近第一个邻居)。

2)收集事件。这会为您的所有积分点创建空间权重。例如,如果您在一个位置上有5个事件,则权重为5将变为1分。这对于接下来的两个步骤至关重要。如果您需要在合并的事件中聚合属性,即不同事件的权重较高,则可以使用一对一的空间连接。使用“收集事件”输出作为目标,并使用原始的集成事件作为联接功能。设置字段映射合并规则,以统计方式将合并事件上的属性组合在一起(通常可以使用SUM,尽管您可以使用其他统计信息)。

3)使用Global Moran's I确定峰值空间自相关。就像它说的那样,以不同的时间间隔运行全局moran的I,以适合您正在执行的分析的比例确定空间自相关的峰带。您可能希望对收集到的事件再次运行最近的邻居,以确定您的ran鼠I测试的起始范围。(例如,将最大值用于第一个最近的邻居)

4)运行Getis-Ord Gi *。根据您的moran的I分析使用固定的距离带,或将固定的距离带用作无差异区域。来自收集事件的空间权重是您的数字计数字段。这将为您的集合中的每个事件点提供z得分。

5)针对Getis-Ord Gi *的结果运行IDW

这个结果与内核密度得到的结果明显不同。它会向您显示高值和低值在哪里聚在一起,而不是高值在哪里,而无需考虑聚类,例如内核密度。


20

当我喜欢热图时,我意识到它们经常被滥用。

通常,我所看到的是一个过程,其中每个像素的颜色基于应用于点集合的反距离加权函数的结果。每当地图上有很多重叠的点标记时,我认为都值得考虑使用热图。

这是一个基于Web的api

GeoChalkboard有一个很好的教程

您可以在ArcGIS中使用IDW


7
请注意,IDW对数据收集位置非常敏感。例如,如果数据是聚类的,则可能会出现不良的数学异常。
里德·科普西

@Reed Copsey您会提出什么选择?
fmark

2
@fmark:有很多内插程序,你可以改用IDW的,包括自然邻居/基于三角测量方法,克里格,花键加工/最低紧张等
里德科普塞

@Reed我从来没有真正关心过热图的数学正确性(也许我应该这样)。但是我确实认为它们在许多情况下都可以有效地交流集群。这是我认为可以有效地绘制为热图的地图示例:www2.clustrmaps.com/counter/maps.php?url=http
Kirk Kuykendall,2010年

2
我认为它们是一个很好的工具。仅当您将结果用于决策时,数学/统计的正确性才可能很重要,但是如果要传达分布的一般意义,IDW可能会很好。(更多的是由于数学异常,群集会在热图结果中引起较大的“偏斜”,尤其是群集之间。)
Reed Copsey 2010年

12

对于简单的热图和生成countour线,我在Grass积分中使用了QGis:

  1. 加载数据点
  2. 加载极限形状–例如县境
  3. 创建草图集
  4. 打开草工具箱,然后单击模块列表以搜索每个工具
  5. 加载v.in.ogr.qgis模块并加载点数据和边界形状,每次都记得单击每个视图的单击输出 –给每个提供有用的名称,如pointdatamaskshape
  6. maskshape转换为栅格,以将其用作v.to.rast的蒙版,然后将其添加到地图集中 -称为maskraster之类的东西-这可能会花费一些时间来处理复杂多边形。
  7. 加载r.mask模块以强制将下一个动作限制在缓冲区内。
  8. 运行v.surf.rst以从pointdata生成插值的网格–选择适当的列作为进行插值的属性字段,然后将其称为rastersurface。这是花费时间并生成栅格的位,该栅格可用作热图的对象或3D阴影。
  9. 关闭草工具箱
  10. 使用GDAL Raster Contours插件,选择GRASS栅格作为输入;将默认级别值保留为10,然后选择一个将保存轮廓shapefile的输出目录。检查“属性名称”并输入名称。

注意:要使此工作有效,数据集应该在同一投影中!


4

我认为这个问题已经得到了很大的回答,但关于该问题有几点。

热图可能很棒,但是经典的缺陷和问题在于解释。取犯罪事件的热图与犯罪率/比例的图(热或其他)之间的差。尽管事件热图在识别总体事件密度方面可能很有用,但它作为风险的估计是盲目的,但通常会以这种方式被解释或滥用。考虑在相同大小和形状,但人口不同的区域中发生的事件数量相同,而犯罪可能集中在某个区域,这可能仅仅是因为该空间中有更多的人。此外,事件数据的比率(例如犯罪)可能难以建模,因为要生成热图栅格,它们可能需要像人口模型一样的事件,但人们并不会停滞不前。

第二个问题是,热图仅限于考虑单个空间比例,选择该空间比例即内核大小或衰变速率可能很复杂,并取决于研究目标,但必须证明其合理性。 。如果重点是确定最强集群的中心及其发生的规模(也许是确定疾病暴发的源头及其传播因素),那么更好的选择可能是考虑多个尺度。使用与比例尺/区域成比例的适当权重以生成3维栅格,其中3D空间比例尺栅格中的局部最大值表示群集中心及其各自大小的位置以及比例尺之间的持久性。


1
您提出了一些非常有效的观点。这两个问题实际上是地理学的经典问题。第一个问题与对潜在的空间不均匀性的解释有关,即,由于人的分布不均匀(某些地区人烟稀少),犯罪机会也不均匀。一个模式受另一个模式的强制。规模的第二个问题是可修改的地域单位问题(MAUP)的一部分,该问题将影响任何依赖于度量区域的度量,例如密度。这是大多数地理工作中的经典问题。
WhiteboxDev 2014年

还应将蒂森多边形视为对空间模式的第一眼观察。它们非常简单,但是也能够显示很多细节,是精确的插值器,并且似乎可以解决困扰其他更复杂的插值方法的比例尺问题-gislandscapeecology.blogspot.com/2016/04/…
汤姆·迪尔茨
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.