0

我有一个由二维浮点数组表示的高程图。

该地图的某些区域的边缘我包含在单个向量中,该向量包含边缘单元的列表(由它们的xy坐标标识)。

边缘单元不知道它们与哪个区域相关联,在向量内连续的边缘单元也不一定在地图中彼此相邻。

我希望能够根据这些信息唯一地识别每个区域(整个地图的边缘单元列表,同样,它可能不相邻)。

我曾考虑尝试从一个边缘单元开始并穿过边缘,但随后封闭空间可能包含应排除的区域(岛屿周围的湖泊本身包含湖泊)。我考虑过使用某种桶填充,但这会破坏有价值的高程数据,我不想创建第二个数组来存储信息。

关于有效的解决方法的任何想法?

4

1 回答 1

0

理查德,

这是一个经典的连通分量标注问题,不是吗?

当您被允许存储“状态”图时,确实有几种解决方案,即可以为像素分配离散值的辅助图像。在这些方法中,您确实可以绘制边缘像素,然后填充封闭区域。在这种情况下,每个像素一个比特就足够了。

如果您不想为此位提供额外的存储空间,您可能可以从浮点值中“窃取”它。例如,如果所有高程都是正数,您可以为此目的盗用符号位(然后将其重置);通过在浮点数上映射位域可以在 C 中轻松完成。

于 2012-02-13T21:41:45.943 回答