3

オープン レイヤーを使用して、ベース マップにオーバーレイするヒート マップ スタイルのタイルをいくつか作成したいと考えています。基本的に、いくつかのバウンディング ボックスをグリッドに分割し、そのグリッドの正方形内にサンプルのポイントがいくつあるかに基づいて、異なる色を使用してグリッドの各正方形を表示したいと考えています。

関連するテクノロジは、C#、OpenLayers、SQL Server 2008、および GeoServer です。

私の質問は基本的に一般的なアプローチの 1 つです。ノミの先端をどこに置くべきかよくわかりません。

私の最終的な目標は、任意のバウンディング ボックスを取得し、そのバウンディング ボックス内に収まる x マイルごとのグリッドを計算し、個々のポイントのコレクションを反復処理して、それらを 1 つのグリッド スクエアまたは別のグリッド スクエアに割り当てることができるようにすることです。グリッド スクエアごとのポイント密度を計算し、密度に応じてグリッドに色を付けてから、Open Layers を使用して CloudMade ベース マップに重ねることができます。

全体またはその一部について、どんな助けでも大歓迎です。

4

3 に答える 3

4

境界ボックスが軸に揃えられている場合、これは非常に簡単です。画像を作成し、そのワールド ファイルを手動で作成するだけです。ワールド ファイルはわずか 6 行のテキストであり、必要なものはすべて既にわかっています (x & y ピクセル サイズ、左上隅の座標)。

ボックスの角ではなく、左上隅のピクセルの CENTER を使用していることを確認してください。

------ ワールド ファイルの作成方法は次のとおりです -------

境界ボックスの左上隅が 203732x598374 で、幅が東<->西 200m、高さが北<->南 300m の長方形を含む画像が必要だとします。

適切なピクセル数の画像を作成してから、次の 6 行を含むワールド ファイルを作成します。

200
0
0
-300
203632
598524

これは以下に対応します。

200 == size of one pixel in X
0 == shear1
0 == shear2
-300 == size of one pixel in Y (from top down)
203632 == left edge - 1/2 pixel size (to center on pixel instead of edge of box)
598524 == top edge - 1/2 pixel size (to center on pixel instead of edge of box)

.png 画像を使用する場合は、これを同じ名前で保存しますが、.pgw として保存します。.jpg を使用する場合は、.jgw などになります。

詳細については、次を参照してください: Wiki on World Files

于 2009-03-10T20:41:11.343 に答える
2

「いくつかのバウンディング ボックスをグリッドに分割し、そのグリッド スクエア内にサンプルのポイントがいくつあるかに基づいて、異なる色を使用してグリッドの各スクエアを表示します。」これはラスターであり、GeoServer にはこれらをカラー シェーディングや凡例などで表示する機能があります。C# で画像タイルを作成するよりも、これらの機能を使用する方がより柔軟になると思います。

GeoServer のドキュメントから:

ラスター データは単なる画像ではなく、グラフィックが視覚情報のグリッド (赤、緑、青の組み合わせ) であるのと同様に、ジオリファレンスされた情報のグリッドと考えることができます。ビジュアル データのみを含むグラフィックスとは異なり、ラスター グリッド内の各ポイント/ピクセルは多くの異なる属性を持つことができ、本質的にビジュアル コンポーネントを持たない可能性があります。

これは、他の GIS パッケージでは、テーマ マッピング、コンター プロット、ヒートマップ、または 2.5D プロットとも呼ばれます。

Grassのような無料の GIS を使用してラスター グリッドを作成することもできますが、説明から補間する必要がないため (すべてのセルに少なくとも 1 つのポイントが含まれているため)、独自のコードをロールするのと同じくらい簡単です。

編集:さまざまな形式でラスター ファイルを書き込むために使用できるオープン ソース ライブラリGDALがあります。C# バインディングがあります。

于 2009-03-12T09:57:37.770 に答える
0

左上のピクセルの中心を計算する式が間違っていると思います。この例では、左上のピクセルの中心は (203732,598374) の右下になります。では、次のようにすべきではありませんか?

203832 == left edge + 1/2 pixel size (to center on pixel instead of edge of box)
598224 == top edge - 1/2 pixel size (to center on pixel instead of edge of box)
于 2009-04-24T19:11:29.327 に答える