我正在创建一个散落在建筑物内不同位置的数值数据的热图。我花了几个小时研究数据映射等,并寻求一些建议。我是地理信息系统的新手。大多数可用的选项都是使用lat/long的平铺API,而且对我的需求来说是过分的.
最后,我只想输出一个背景图像(一个平面图)与热图叠加显示地区的高强度。数据被绑定到特定的位置(例如,活动级别: 14,位置:接收入口),因此不会在地图上随机分布。数据有时间戳,最后的目标是为动画打印每小时活动的PNG。
我觉得我有两个选择。
我喜欢这个教程(http://dylanvester.com/post/Creating-Heat-Maps-with-NET-20-%28C-Sharp%29.aspx),因为它提供了巨大的灵活性,最终的图像与我想要的非常相似--这是一个很好的开端。也就是说,我需要给一个x,y协调点指定“接收入口”,甚至是一些x,y坐标。然后,我需要在每个热图之前处理一个矩阵,从我的CSV文件中获取数据,并将活动值放在适当的协调中。
另一个选项是创建一个自定义的shapefile (?)从平面图上。也就是说,创建一个具有定义区域的向量图形,其中每个区域都可归因于一个可缩小的位置。这似乎是最灵活的选择,但我真的,真的很难找到如何创建shapefiles?
我对地理信息系统术语的不熟悉使搜索变得困难。后者似乎是最明智的解决方案(使用shapefile和类似于https://gist.github.com/1370472的内容)来随着时间的推移更改活动值。
找到的链接:
概括地说:我想把数据绑定到建筑物内的位置。在我想要使用的C#教程中有非常好的代码,但是活动数据与协调器的链接可能会很麻烦(尽管可以将活动在不同位置之间的转换描述为可以使用协同向量)。另一种选择是创建一个区域的映像,这些区域可以通过QGIS之类的方法链接到CSV数据。有更多经验的人能提出最好的方向,甚至是其他的选择吗?
谢谢!
发布于 2012-07-03 21:25:12
最近,我做了一些类似的事情,在美国的某些事件的热点地图。
我的输入数据只是一个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.25https://stackoverflow.com/questions/11319366
复制相似问题