2012-07-03 24 views
1

我正在创建散布在建筑物内各个位置的数值数据的热图。我花了几个小时研究数据映射等,并正在寻找一些建议。我是GIS新手。大多数可用的选项是使用纬度/长,而且是大材小用我的要求大多是砖的API ...建议:矩阵的自定义shapefile或C#热图

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

我觉得我有两个选择。

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

我想我的另一个选择是从平面图创建一个自定义shapefile(?)。也就是说,创建一个带有定义区域的矢量图形,其中每个图标都归属于可标记的位置。这似乎是最灵活的选择,但我真的很努力地找出如何创建shapefile文件?

我对GIS术语的不熟悉使搜索变得困难。后者似乎是最明智的解决方案(使用类似https://gist.github.com/1370472的shapefile)来随时间改变活动值。发现

链接:

  • guthcad.com/cad2shape.htm(但不具备CAD图纸,只是光栅平面布置图)
  • stackoverflow.com/questions/4014072/arcgis-flex-overlay-平面布置图,PNG(无益的,不希望瓷砖)
  • oliverobrien.co.uk/2010/01/simple-choropleth-maps-in-quantum-gis/
  • gis.stackexchange.com/questions/ 20901 /使用gis-for-interactive-floor-plan(看起来很棒)

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

谢谢!

回答

0

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

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

在检查可用选项后,我结束了使用GHeat.Net。使用起来非常简单,只需稍作修改即可满足我的需求。

输出是一个透明的PNG,然后叠加到Google地图上。

虽然你的规模是完全不同的,我想同样的解决方案应该适用于你的情况。

UPDATE

如果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 
+0

谢谢,我将有一个看看(真的)。我试图摆脱他/多拉的解决方案,因为这不是我所需要的。我试图确定是否应该手动识别我的位置的x,y坐标并编写数据匹配代码,或者使用类似shapefile的东西,在这种情况下,关于在何处找到教程的建议将会很有用... – user969670

+0

添加了另一个根据你刚才所说的来思考。形状文件iirc定义矢量形状。如果是这样的话,我不知道它们会非常适合热图。 –