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

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

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

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

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

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

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

有帮助吗?

解决方案

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

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

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

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

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

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

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top