私は、かなりの量のデータをヒート マップの形で要約する必要があるプロジェクトに取り組んでいます。このデータは、可能な限りデータベースに保持されます。ある時点で、ヒート マップのブロックを画面に描画する前に、サマリーをマトリックスに保存する必要があります (おそらく?)。C#でWindowsフォームアプリケーションを作成しています。
ヒート マップが、Google マップなどのオンライン マッピング プログラムのログ ファイルを要約するとします。特定の住所または地域に対してリクエストが行われた回数に基づいて、特定の住所または地域に色を割り当てます。さまざまな詳細レベルでデータを要約できます。つまり、ヒート マップ上の各ブロックは、特定の住所のデータを要約したり (最大の詳細、したがって数十億/数百万のブロック)、道路、都市、または国への要求を要約したりできます (最小の詳細 -- 数ブロック)。それぞれが国を表しています)。何百万ものアドレスのリクエストが行われたと想像してください。これをデータベースにまとめることを検討しました。問題は、非常に多くのブロックを画面に描画する必要があることです (最大で数十億ですが、通常ははるかに少ない)。させて' このデータは、より大きな領域へのヒット数を格納するデータベース テーブルに要約されていると仮定します。各領域のオブジェクトを構築したり、db テーブルからすべての情報を取り込んだりすることなく、ブロックをウィンドウに描画できますか? マトリックスを作成すると、要求の厳しい要求に対して約 10 GB になる可能性があるため、これが私の主な関心事です。
画面に描画できるブロックの数と、これに対する最善のアプローチ (つまり、direct3d、XNA) を知りたいと思っています。上記から、範囲が大幅に変化することがわかります。数十億の正方形を描画する必要がある可能性が予想されます。他のブロックを表示するためにすばやく下にスクロールするための垂直スクロール バーがあります。
全体として、C# でこれをどのように達成できるのだろうか? 要求の厳しい要求のマトリックスを作成するには、約 10 ギガバイトが必要になる場合があります。大量のメモリを必要としない画面に描画する方法はありますか (つまり、ブロックごとにオブジェクトを作成します)。SQL クエリの結果を画面上にレンダリングされたブロックに直接変換できれば理想的です (つまり、オブジェクトを構築しないなど)。必要なのは正方形だけで、その唯一のプロパティは色であり、各ブロックの数を維持する必要がある場合があります。
注: ヒート マップをどのように描画するか (ズーム、スクロールなどがユーザーにどのように表示されるか) についてはかなり確信があります。明確にするために、私は私たちのアイデアをどのように実装するかについてもっと心配しています。10 億のオブジェクトを構築せず、ギガバイトのデータを使用せずに、これほど多くのオブジェクトを描画できるライブラリまたはメソッドはありますか? 各ブロックは基本的に、同じ色のピクセル (20x20) のグループです。これが 10 億個のオブジェクトを構築する必要があるとは思いません。
ありがとう!