麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

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-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)