我正在做一个项目,我们需要以热图的形式汇总大量数据。这些数据将尽可能长时间地保存在数据库中。在某些时候,我们需要将摘要存储在矩阵中(可能?),然后才能将热图的块绘制到屏幕上。我们正在使用 C# 创建一个 Windows 窗体应用程序。
假设热图将为在线地图程序(如谷歌地图)总结一个日志文件。它将根据向该区域/地址发出请求的次数为特定地址或区域分配颜色。它可以汇总不同详细级别的数据。也就是说,热图上的每个区块都可以汇总特定地址的数据(最大细节,因此数十亿/百万个区块),或者它可以汇总对街道、城市或国家的请求(最小细节 - 几个区块,因为它们每个代表一个国家)。想象一下,有数百万个地址请求。我们已经考虑用数据库来总结这一点。问题是我们需要在屏幕上绘制这么多块(最多数十亿,但通常少得多)。让' s 假设这些数据汇总在一个数据库表中,该表存储了对较大区域的命中数。我们可以在不为每个区域构造对象的情况下将块绘制到窗口,甚至不从 db 表中引入所有信息吗?这是我最关心的问题,因为如果我们确实构建了一个矩阵,那么对于要求苛刻的请求,它可能会达到 10 GB 左右。
我很想知道我们可以在屏幕上绘制多少块以及最好的方法是什么(即direct3d、XNA)。从上面,您可以看到范围会有很大差异,我们预计需要绘制数十亿个正方形的潜力。我们将有一个垂直滚动条来快速向下滚动以查看其他块。
总的来说,我想知道我们如何使用 C# 来实现这一点?为要求苛刻的请求创建矩阵可能需要大约 10 GB。有没有一种方法可以在不需要大量内存的情况下绘制到屏幕上(即为每个块创建一个对象)。如果我们可以将 SQL 查询的结果直接翻译成屏幕上的渲染块,那将是理想的(即不构造对象等)。我们需要的只是正方形,它们唯一的属性是颜色,我们可能需要为每个块维护一个数字。
注意:我们非常确定我们将如何绘制热图(缩放、滚动等应该如何呈现给用户)。澄清一下,我更关心我们将如何实施我们的想法。是否有一个库或某种方法允许我们在不构造十亿个对象和使用千兆字节数据的情况下绘制这么多对象。每个块本质上是一组相同颜色的像素 (20x20)。我不认为这需要构建 10 亿个对象。
谢谢!