GIS地图界面和计算机图形学填充算法
一 GIS地图界面
GIS程序最常见的界面就是,不同区域被边界隔开,填充为不同的颜色;
如下三个;是超图iServer自带;
京津地区土地利用现状,京津地区人口分布,京津地区地貌分布;用于学习是很好资源;
如果对计算机图形学了解的话,你就知道这种不同区域填充为不同颜色,底层算法是用计算机图形学填充算法实现的;
下面来看一下填充算法的基本概念;
二 计算机图形学区域填充算法
区域填充概念
区域:指已经表示成点阵形式的填充图形,是象素的集合。
区域填充:将区域内的一点(常称【种子点】)赋予给定颜色,然后将这种颜色扩展到整个区域内的过程。
区域填充算法要求区域是连通的,因为只有在连通区域中,才可能将种子点的颜色扩展到区域内的其它点。
区域有两种表示形式
1)内点表示:枚举出区域内部的所有象素,内部所有象素着同一个颜色,边界像素着与内部象素不同的颜色。
2)边界表示:枚举出区域外部的所有象素,边界上的所有象素着同一个颜色,内部像素着与边界象素不同的颜色。
区域连通
1)四向连通区域:从区域上一点出发可通过【上、下、左、右】四个方向移动的组合,在不越出区域的前提下,到达区域内的任意象素。
2)八向连通区域:从区域上一点出发可通过【上、下、左、右、左上、右上、左下、右下】八个方向移动的组合,在不越出区域的前提下,到达区域内的任意象素。
简单种子填充算法基本思想
给定区域G一种子点(x, y),首先判断该点是否是区域内的一点,如果是,则将该点填充为新的颜色,然后将该点周围的四个点(四连通)或八个点(八连通)作为新的种子点进行同样的处理,通过这种扩散完成对整个区域的填充。
看一下图形学填充算法VC++版的效果;
这个是孔令德老师教材VC++源码的运行效果;网上花积分下的;有没有盗孔老师的版不知道;
就说如果了解一些计算机图形学内容,对于GIS开发也是很有帮助;
一般做GIS开发是你传边界线像素宽度、边界线颜色、内部要填充的颜色值给GIS系统,它会帮你画好;如果能了解一些底层算法也是很有帮助的;