我有一个由浮动的2D数组表示的高程图。
此地图的某些区域的边缘包含在一个向量中,该向量包含边缘单元格列表(由x
和y
坐标标识)。
边缘单元不知道它们与哪个区域相关联,在向量内连续的边缘单元也不一定在地图中彼此相邻。
我希望能够根据这些信息唯一地识别每个区域(整个地图的边缘单元列表,也可能不相邻)。
我曾考虑过尝试从一个边缘单元开始并遍历边缘,但随后封闭空间可能包含应排除的区域(岛屿周围的湖泊本身包含一个湖泊)。我考虑使用某种铲斗填充,但这会破坏有价值的高程数据,我不想创建第二个数组来存储信息。
有关有效方法的任何想法吗?
答案 0 :(得分:0)
理查德,
这是一个经典的连通组件标签问题,不是吗?
当您被允许存储“状态”地图时,确实存在几种解决方案,即可以为像素分配离散值的辅助图像。在这些方法中,您确实可以绘制边缘像素,然后填充封闭区域。在这种情况下,每个像素一位就足够了。
如果您不想为此位提供额外的存储空间,您可以从浮点值“窃取”它。例如,如果所有高程均为正值,则可以为此目的贪图符号位(并在之后重置);通过在浮点上映射位域,可以在C中轻松完成。