7

SpatialKey生成了一些非常漂亮的热图,我们正在研究为内部项目执行此操作以可视化大量点所涉及的内容。我正在寻找关于从哪里开始的一些想法的反馈(这只是一个非常有趣的问题)。

SpatialKey 热图 http://img697.imageshack.us/img697/7964/resolutiondays508x17550.jpg

我们知道他们使用的是 Flash,据我们所知,热图是交互式的,而不是从图块服务器呈现的。我们对如何实现的第一个猜测是服务器为他们的 Flash 客户端提供了一个网格——每个单元格都有一个由服务器计算的计数。Flash 客户端然后根据网格中的单元格值进行一些插值,以生成您在上面看到的漂亮输出。

在这个阶段,我只是对他们如何在服务器端有效地生成网格感兴趣(如果我们对他们实现的假设是正确的)。似乎它会涉及:

  1. 查询当前地图范围内的内容
  2. 对这些范围内的每个单元格执行聚合子查询(如上例所示进行计数、求和或平均)。

以合理的网格分辨率在多个缩放级别上执行此操作,您似乎需要一个自定义空间索引来提高效率。

任何人解释替代路线?如果重要的话,我们在这里习惯于使用 PostGIS 将数据存储在 PostgreSQL 中作为空间索引,但我愿意尝试任何事情。

4

2 回答 2

5

作为一个猜测,我想他们已经在客户端的 Flash 中实现了一个 GIS 库,并使用它来将纬度和经度坐标投影到像素空间中。然后它们按像素聚合以确定每个像素的“高度”并像渲染圆形一样渲染它,但使用具有透明度的渐变填充,渐变填充的开始和结束颜色由高度决定像素。多个圆圈相互叠加会产生更亮的像素。

另一种方法可能是以灰度执行此操作,然后将亮度值映射到色标。这可能是最有效的。

我们销售更传统的树形图热图,用于可视化分析应用程序的集成(例如:热图 SDK),现在有为区域着色的地理热图。我们阅读标准的 ESRI Shapefile 地图并在客户端进行所有投影和渲染(在 Java 中,不是 Flash,但相同的概念)。我认为 SpatialKey 也在做同样的事情,因为它们支持区域填充渲染,如果您使用的是像谷歌地图这样的瓦片服务器,这是无法做到的。

我们还没有做这样的密度热图,但已经使用静态图像作为背景进行了几次测试。如果您想了解更多信息,请告诉我,我可以询问我的开发人员我们是如何做到的。我知道我们目前正在开发更多基于点的功能,但我不知道密度热图在计划中的位置。

SpatialKey 实际上写了一篇关于区域填充热图(即:专题图)和密度热图之间差异的好帖子。您可以在http://blog.spatialkey.com/2010/02/comparing-thematic-maps-with-density-heatmaps/查看。

如果您确实找到了制作密度热图的好方法,我很想了解您是如何做到的,因为这将是我们可视化分析 SDK 的一个有价值的补充。祝你好运。

于 2010-02-06T02:34:54.943 回答
0

MapReduce 用于您的实际聚合地图总数,以及用于数据库的地理空间索引 - 以提供这些 MapReduce 作业。我正在研究实现这种完全相同的方法,但是对于接口而不是映射 :) MongoDB 目前似乎很合适。

于 2010-12-21T07:15:17.440 回答