热力图生成算法及其具体实现腾讯云开发者社区

以前一直觉得热力图非常高大上,现在终于有机会研究并总结这个问题了。其实从图像处理的角度上来说,热力图生成算法并没有什么特别的,要得到非常漂亮的效果,数据以及配色方案的也很重要。这里就用OpenCV简单实现一下,用什么工具不重要,重要的是其中的原理。

我们没有数据,但是可以通过随机数算法,生成一个热力点的集合:

这段代码的意思是,我们根据给定的热力图宽高的范围,生成热力图范围内一定权值范围的热力点;并且,根据热力点影响范围求出其外包矩形。这里的随机数并没有给时间种子,所以每次运行的结果都是固定的。

我们绘制的目的是一个包含透明度的彩色图片,所以需要创建4波段的图片。通过直接操作图片的内存buffer,首先我们将背景设置成黑色;然后遍历热力点,将热力点的范围涂成白色:

上面绘制的是热力点的外接矩形范围,现在我们绘制热力图真正影响范围。原理其实很简单,就是判断点是否在圆内:

接下来就让热力范围根据与热力点的距离渐变:距离越近,就越白,距离越远,就越黑:

立体感到是不错,但是问题在于我们需要将热力点的影响叠加起来,也就是每次遍历热力点之后,像素值也要叠加起来:

看起来略具意思了,但是有个问题是没有体现每个点的权值的影响,因此我们加上权值的影响,让热力的效果更真实一点:

最后就是给这个黑白热力图上色了。配色是非常重要的,需要一点美术功底才行,我们直接采用参考2中的颜色值进行配色。首先创建一个颜色映射表,将之前的黑白色映射到一个BGR渐变色集合:

通过这个颜色映射表,在填充像素的时候,将计算的Alpha映射成一个BGR值,填充到前三个波段中:

THE END
0.度进行地貌分类划分之对地貌类型赋值新建字段,命名地貌类型。 将重分类后的DEM和地形起伏度栅格的值,两两对应的地貌类型分别用字段计算器赋值。 前九步按照上面文章中的链接可以做出来。 1.打开联合后结果图层的属性表,【添加字段】(文本型):Landforms,长度可以自定。 2.进入【按属性选择】,按照重分类(步骤3和步骤7)的赋值结果进行选择。 jvzquC41dnuh0lxfp0tfv8HUFPOE497433691jwvkerf1mjvckrt1:8322<17<