0

我有一個由二維浮點數組表示的高程圖。來自邊界的區域集合

有此地圖,其邊緣我已經包含在其中包含的邊緣的小區的列表的單個載體(由它們的xy座標值確定)的區域。

邊緣單元不知道它們與哪個區域相關聯,也沒有在矢量內連續的邊緣單元必須在地圖中彼此相鄰。

我希望能夠根據這些信息(整個地圖的邊緣單元列表,它們可能不會相鄰)唯一地標識每個區域。

我曾想過嘗試從一個邊緣單元開始並遍歷邊緣,但是封閉空間可能包含應該排除的區域(本身包含湖泊的島嶼周圍的湖泊)。我曾考慮過使用某種桶填充,但這會破壞寶貴的高程數據,我不想創建第二個數組來存儲信息。

任何思考一個有效的方式來解決它?

回答

0

Richard,

這是一個經典的連接組件標籤問題,不是嗎?

當您允許存儲「狀態」映射時,確實存在幾種解決方案,即可以爲像素指定離散值的輔助映像。在這些方法中,您確實可以繪製邊緣像素,然後填充封閉區域。在這種情況下,每像素一位就足夠了。

如果你不想爲這個位提供額外的存儲空間,你可能可以從浮點數值中「偷走」它。例如,如果所有標高都是正值,則可以爲此目的而盜用標誌位(並在之後重置);通過在浮點上映射一個位域在C中輕鬆完成。

+0

我原本不願意使用額外的內存來解決問題,但似乎這將是解決問題的最優雅和最快捷的方式(使用位域),所以我會使用它。 – Richard 2012-02-23 06:40:34

+0

是的,可能更安全的切換符號位與位運算符比否定浮點值,因爲-0仍然是0. – 2012-02-23 08:23:55

+0

哦,我的意思是我會使用2d布爾數組。但你提出了一個很好的觀點,我可能會忽略這一點! – Richard 2012-02-25 22:25:23