1

我正在研究创建分布在建筑物内各个位置的数值数据的热图。我花了几个小时研究数据映射等,并正在寻找一些建议。我是 GIS 新手。可用的大多数选项主要是使用 lat/long 的 tile API,并且对于我的要求来说太过分了......

最终,我只想输出一张背景图像(平面图),上面的热图覆盖展示了高强度区域。数据绑定到特定位置(例如,活动级别:14,位置:接待入口),因此不会随机分布在地图上。数据有时间戳,最终目标是为动画打印每小时活动的 PNG。

我觉得我有两个选择。

我喜欢这个教程(http://dylanvester.com/post/Creating-Heat-Maps-with-NET-20-%28C-Sharp%29.aspx),因为它提供了极大的灵活性并且最终的图像非常类似于我想要的 - 这是一个很好的开端。也就是说,我需要将诸如“接待入口”之类的位置分配给 x,y 坐标,甚至是多个 x,y 坐标。然后我需要在每个热图之前处理一个矩阵,从我的 CSV 文件中获取数据并将活动值放置在适当的坐标中。

我认为我拥有的另一个选择是从平面图创建一个自定义 shapefile(?)。也就是说,创建一个具有已定义区域的矢量图形,其中每个区域都归属于一个可标记的位置。这似乎是最灵活的选择,但我真的非常非常想知道如何创建 shapefile?

我对 GIS 术语的不熟悉使搜索变得困难。后者似乎是最明智的解决方案(将 shapefile 与https://gist.github.com/1370472之类的东西一起使用)随着时间的推移更改活动值。

找到的链接:

  • guthcad.com/cad2shape.htm(但没有 CAD 图纸,只有光栅平面图)
  • stackoverflow.com/questions/4014072/arcgis-flex-overlay-floor-plan-png(无用,不想平铺)
  • Oliverobrien.co.uk/2010/01/simple-choropleth-maps-in-quantum-gis/
  • gis.stackexchange.com/questions/20901/using-gis-for-interactive-floor-plan(看起来不错)

总结一下:我想映射绑定到建筑物内位置的数据。我想使用的 C# 教程中有非常好的代码,但是活动数据与坐标的链接可能很混乱(尽管可以允许描述位置之间的活动转换,因为可以使用坐标之间的向量.. .)。另一种选择是创建一个图像,其区域可以通过 QGIS 之类的东西链接到 CSV 数据。有更多经验的人能否提出最佳方向,甚至替代方案?

谢谢!

4

1 回答 1

0

我最近为美国某些事件的热图做了类似的事情。

我的输入数据只是一个包含三列的 CSV 文件:纬度、经度和事件数。

在检查了可用选项后,我最终使用了GHeat.Net。它非常易于使用,只需稍作修改即可满足我的需求。

输出是一个透明的 PNG,然后我将其覆盖到 Google 地图上。

尽管您的规模完全不同,但我想相同的解决方案应该适用于您的情况。

更新

如果 x,y 值是相当小的范围内的整数,并且如果您有足够的样本,则可以简单地创建一个(稀疏?)数组,每个数组元素的值是该坐标处的样本数。识别“最热”的数组元素(样本最多的元素)并将其等同于热图中的“白色”,较小的值对应较冷的颜色(或者换句话说,使用最高值对数组中的所有值进行归一化并将归一化值映射到色标)。将数组映射到 PNG。

像 GHeat 这样的热图会围绕每个数据点创建一个影响范围。根据您的数据,您可能不需要它。

如果您的采样率不够高,您可以将影响范围代码从 GHeat 中提取出来并将其应用到您自己的阵列中。

影响范围的东西基本上是在数据样本中的特定坐标上加上一个“1”的值,并且还给地图中的相邻像素加上一个较小的值,以提供更平滑的地图。我不知道 GHeat 中使用的特定算法,但基本思想是使用如下模式添加特定的 x、y 值以及邻居:

0.25 | 0.5 | 0.25
-----------------
 0.5 | 1.0 | 0.5
-----------------
0.25 | 0.5 | 0.25
于 2012-07-03T21:25:12.070 回答