GIS基础-使用DEM生成地貌晕渲图

晕渲图是通过模拟实际地面本影与落影的方法反映实际地形起伏特征的一种重要的地形图。通过晕渲图,可以很好地反应地形地势的变化,有较好的立体感,方便用图者的使用。随着数字地图处理技术的发展,利用DEM(数字高程模型)数据作为信息源,以地面光照通量为依据,来计算相应栅格所输出的灰度值,通过灰度(明亮程度)的变化,得到相当逼真的立体效果。

地貌晕渲图的生成原理

地貌晕渲主要利用色调的明暗变化和人的视觉心理来得到地貌立体感,提供交互环境对制图范围内局部区域使用的光源进行调整,以改善其晕渲效果,采用统计功能来确定计算出光源的方向,重新计算出灰度值。结合分层设色的概念和地貌类型特点。设计符合要求的色彩表,绘制彩色立体晕渲图。为了在计算机中自动生成晕渲,首先要进行地形建模。地形模型由描述地形起伏变化的DEM构建,同时晕渲还受光源位置的影响。地貌晕渲采用的光源通常有3种:直照光源、斜照光源和综合照

光源。直照光源有助于表现地表的细部特征,斜照光源利于表示地表的起伏,而综合光照结合直照和斜照的特点,表现地表的特征介于二者之间。

算法实现

晕渲图自动生成算法的核心是:通过相邻的格网,由米字剖分法构造三角面,通过三角面向量得到当前格网面中心点的法向量;由法向量与光源方向的夹角,确定当前格网的亮度值。具体流程如图4所示:首先根据日照光线的高度角和方向角计算日照光线的单位向量;然后遍历DEM图层中所有格网点,计算格网点的法向量;根据法向量和日照光线计算出晕渲图上各点的像素值,根据该像素值设置不同的颜色进行显示。

1.计算日照光线的单位法向量

fAltitude为光源高度角,fAzimuth为光源方向角。用数组arrayvector[3]存放单位向量值则

arrayvector[0]=cos(fAltitude )×cos(fAzimuth )
arrayvector[1]=cos(fAltitude )×sin(fAzimuth )
arrayvector[2]=sin(fAltitude

2.遍历DEM图层中的所有像素点计算法向量

对于DEM图层一定区域中的像素点,可以分为普通点、左上角点、右上角点、右下角点、左下角点、首行、末行、左列和右列共9类,分别计算其法向量d_vectorvalue[3]。

3.计算晕渲图上各点的像素值

根据日照光线和当前格网点的法向量计算当前格网点的像素值i_cellvalue _hillshade ,首先计算当前格网点法向量与日照光线单位向量的夹角d_raytovector _angle ,方法如下:

详细内容请参考论文:地貌晕渲图的生成原理与实现

GIS基础-平面晕渲图和剖面分析 GIS基础-可视性基础地形分析

作者:,GIS爱好者。
分享本文,请您带上本文链接
分享到:

发表评论