热图算法?

esh*_*han 12 algorithm heatmap

我有一个值列表,每个值都有纬度和经度.我正在寻找创建一个半透明的热图图像以覆盖在谷歌地图上.我知道已经有服务器端和基于闪存的解决方案,但我想使用canvas标签在javascript中构建它.

但是,我似乎无法找到用于将坐标和值转换为热图的算法的简明描述.任何人都可以提供或链接到一个?

谢谢.

Con*_*tah 9

基本的想法是创建一个网格并将每个lat,lng coord项目投射到该网格.我会使用一个二维数组的整数.

伪代码将是:

for each coord
  cell = coord projected to grid
  increment cell value
end

for 0 to # of passes
  for each row
   for each col
     if grid[row,col] > 0 then
       grid[row,col] += 1
       increment_adjacent_cells(row, col)
     end
   end
  end
end
Run Code Online (Sandbox Code Playgroud)

因此,我们的想法是,int值越高,单元格越热.increment_adjacent_cells应该递增所有8个相邻单元格中的值.

  • 这是基本思想;但是,与其进行多次遍历以“散布”热量,不如让它像圆形高斯蒙版那样,可以将其添加到每个数据点的网格中更好。另外,这个问题可能会有有用的答案:http://stackoverflow.com/questions/1117048/creating-heatmaps-using-canvas-element (2认同)