0

浮動小数点数の2次元配列で表される立面図があります。境界からの領域セット

エッジセルのリストを含む単一のベクトルに含まれるエッジ(このマップの領域は、xyの座標で識別されます)があります。

エッジセルは、それらが関連付けられている領域を認識しておらず、マップ内で互いに隣接しているベクトル内で連続しているエッジセルも認識していません。

私は、この情報に基づいて各領域を一意に識別できるようにしたいと考えています(マップ全体のエッジセルの一覧。隣接していない可能性もあります)。

私は1つのエッジセルから始まりエッジを横断しようと考えていましたが、囲まれたスペースには除外すべき領域(それ自体が湖を含む島の周りの湖)が含まれることがあります。私は何らかの種類のバケツを使用することを検討しましたが、これは貴重な標高データを混乱させ、私は情報を格納するために2番目の配列を作成したくありません。

効率的な方法について考えていますか?

答えて

0

リチャード、

これは古典的な接続コンポーネントのラベリングの問題ですか?そうではありませんか?

「状態」マップ、つまりピクセルに離散値を割り当てることができる補助画像を保存することが許可されている場合は、確かにいくつかの解決策があります。これらのメソッドの中で、実際にエッジピクセルを塗りつぶして、囲まれた領域を塗りつぶすことができます。この場合、1ピクセルあたり1ビットで十分です。

このビットに余分な記憶容量を必要としない場合は、おそらく浮動小数点値から「盗む」ことができます。たとえば、すべての標高が正の場合は、この目的のために符号ビットを使いこなすことができます(後でリセットします)。浮動小数点数にビットフィールドをマッピングすることによってC言語で簡単に行えます。

+0

私はもともと問題を解決するために追加のメモリを使用することに抵抗していましたが、これは問題を解決する最も洗練された方法です(ビットフィールドを使用)。 – Richard

+0

浮動小数点値を否定するよりも、符号付きビットをビット演算子でトグルするほうが安全でしょう。-0はまだ0です。 –

+0

ああ、私は2dブール値配列を使用することを意味していました。しかし、あなたは私が間違いなく見落としてしまった素晴らしい点を作っています! – Richard

関連する問題