shademgydF4y2Ba文档gydF4y2Ba

伟大的罗杰·米勒曾经唱着,gydF4y2Ba只要有一座小山上有一个山谷/只要有一个山谷河水可以自由流动/只要有太阳的影子/只要有阴影的地方你和我。gydF4y2Ba虽然它是可能的,他指的是sneakin周围有小情人,只是可能,他唱歌的赞扬gydF4y2BashademgydF4y2Ba,新的计算机Matlab函数。gydF4y2Ba

shademgydF4y2Ba调整照明给一种深度的显示网格高程数据。虽然这是设计用于与Matlab的映射工具箱,这个函数很容易可以用于gydF4y2BapcolorgydF4y2Ba或gydF4y2Ba表面gydF4y2Ba任何类型的情节和映射工具箱gydF4y2Ba不gydF4y2Ba必需的。gydF4y2Ba

Matlab工具箱的映射是打包和几个低功能旨在创建阴影地形图,但是内置的阴影函数很难使用,创建的地图,用colorbar不能使用。gydF4y2Ba

在哪里gydF4y2BasurflsrmgydF4y2Ba,gydF4y2BasurflmgydF4y2Ba,gydF4y2BashaderelgydF4y2Ba,gydF4y2BameshlsrmgydF4y2Ba每个需要一个迭代过程的guess-and-check确定视觉吸引力的照明方位角和仰角,gydF4y2BashademgydF4y2Ba允许从鼠标和键盘与地图交互:阳光来自哪里你点击你的地图,和阴影效应的强度可以通过按上下键调整。gydF4y2Ba

内容gydF4y2Ba

语法gydF4y2Ba

shadem shadem (ui) shadem (…, LightAngle) shadem (…, LightingType) shadem (…, MaterialType) shadem(…,增益)shadem(…,“太阳”)shadem (…, obj, ObjectHandle) [lighth MaterialType,增益,LightingType, LightAngle] = shadem (…) shadem(“重置”)gydF4y2Ba

描述gydF4y2Ba

shademgydF4y2Ba简单的照明适用于表面和补丁对象在当前轴。gydF4y2Ba

shadem (ui)gydF4y2Ba阐明当前轴和打开一个用户界面。当用户界面运行时,控制如下gydF4y2Ba

LightAngle shadem (…)gydF4y2Ba指定gydF4y2BaLightAnglegydF4y2Ba作为一个双元素数组形式gydF4y2Ba(阿兹el)gydF4y2Ba,在那里gydF4y2Ba阿兹gydF4y2Ba的方位(水平)旋转光源和gydF4y2Ba埃尔gydF4y2Ba是光源的垂直高度。0方位位于6点钟位置在地图上移动逆时针地图和积极度。海拔90度位置上方光源直接映射,创建一个“正午”类型的影子,而高度角接近0度创建“朝阳”或“夕阳”的阴影。方位和仰角的解释是一样的gydF4y2Ba视图gydF4y2Ba或gydF4y2BalightanglegydF4y2Ba命令。默认的gydF4y2BaLightAnglegydF4y2Ba是gydF4y2Ba45 [90]gydF4y2Ba。任何双元素数组的输入gydF4y2BashademgydF4y2Ba函数被认为是一个宣言gydF4y2BaLightAnglegydF4y2Ba。gydF4y2Ba

LightingType shadem (…)gydF4y2Ba选择算法用于计算光的影响对象在所有表面和补丁对象在当前轴。选项是gydF4y2Ba

MaterialType shadem (…)gydF4y2Ba集照明表面和补丁对象的特征。gydF4y2BaMaterialTypegydF4y2Ba可以gydF4y2Ba

增益shadem (…)gydF4y2Ba指定材质强度通过夸大或者减少gydF4y2BazgydF4y2Ba组件的活性表面。这是有益的gydF4y2BaxgydF4y2Ba和gydF4y2BaygydF4y2Ba坐标数据映射可能范围从-0.5到0.5地图单位,gydF4y2BazgydF4y2Ba数据范围从-4000到3000米。默认的gydF4y2Ba获得gydF4y2Ba是gydF4y2Ba0gydF4y2Ba。负gydF4y2Ba获得gydF4y2Ba值减少hillshading效果;积极的价值增加的效果。任何标量的输入gydF4y2BashademgydF4y2Ba被解释为一个gydF4y2Ba获得gydF4y2Ba价值。gydF4y2Ba

shadem(…,“太阳”)gydF4y2Ba集光照明的颜色对象作为函数仰角模拟阳光的颜色在日出/日落,中午,或任何角度。gydF4y2Ba

shadem (…, obj ObjectHandle)gydF4y2Ba指定一个对象作为目标当多个物体表面存在表面在当前组轴。这种用法有点笨重,可能导致奇怪的地图,和不完全赞同作者的功能。尽管如此,有时能够指定一个活跃的表面有助于这个函数的作者,他认为也许有时它也能帮助你。gydF4y2Ba

[lighth, MaterialType,增益,LightingType, LightAngle] = shadem (…)gydF4y2Ba返回的句柄gydF4y2BalightanglegydF4y2Ba对象gydF4y2BalighthgydF4y2Ba,gydF4y2BaMaterialTypegydF4y2Ba,gydF4y2Ba获得gydF4y2Ba值,gydF4y2BaLightingTypegydF4y2Ba,gydF4y2BaLightAnglegydF4y2Ba方位角和仰角。gydF4y2Ba

shadem(“重置”)gydF4y2Ba重置材质通过删除对象。注意,这可能不完全还原所有设置到位之前调用的gydF4y2BashademgydF4y2Ba。在某些情况下,这个程序改变gydF4y2BazgydF4y2Ba数据值,gydF4y2Ba“重置”gydF4y2Ba命令不返回gydF4y2BazgydF4y2Ba值到原来的状态。gydF4y2Ba

视频教程gydF4y2Ba

这个视频中包含的一个例子使用的用户界面:gydF4y2Ba

示例1:2 dgydF4y2BapcolorgydF4y2Ba

假设我们有一些网格表面是这样的:gydF4y2Ba

pcolor (repmat(山峰,2)阴影gydF4y2Ba插值函数gydF4y2BacolorbargydF4y2Ba

给表面深度,电话gydF4y2BashademgydF4y2Ba。的gydF4y2BashademgydF4y2Ba函数是用于地形图,所以默认值gydF4y2BaMaterialTypegydF4y2Ba是gydF4y2Ba“无聊”gydF4y2Ba。但是,对于gydF4y2Ba山峰gydF4y2Ba数据集,让表面光泽:gydF4y2Ba

shadem (gydF4y2Ba“闪亮”gydF4y2Ba)gydF4y2Ba

示例2:3 dgydF4y2Ba冲浪gydF4y2Ba

这个程序也适用于三维数据。为了调节一下气氛,我将使用gydF4y2Ba天派gydF4y2Bacolormap:gydF4y2Ba

图(山峰)colormap冲浪(派(256))阴影gydF4y2Ba插值函数gydF4y2Ba

应用gydF4y2BashademgydF4y2Ba与Matlab的gydF4y2Ba“默认”gydF4y2Bapropterties材料。让光线进入的水平在50度海拔60度:gydF4y2Ba

shadem (gydF4y2Ba“默认”gydF4y2Ba,50 [60])gydF4y2Ba

示例3:映射工具箱:2 d灰度gydF4y2Ba

让我们使用映射toobox及其内置DEM数据来说明gydF4y2BashademgydF4y2Ba。首先,创建一个平坦的灰度图片:gydF4y2Ba

% gunzip旧金山南部民主党文件到一个临时目录中gydF4y2Ba文件名= gunzip (gydF4y2Ba“sanfranciscos.dem.gz”gydF4y2Ba,tempdir);(纬度,经度,Z) = usgs24kdem(文件名{1},1);图worldmap ([min (lat(:))马克斯(lat (:))], [min(朗(:))max(朗(:))))班gydF4y2Ba%摆脱干扰gydF4y2Bapcolorm(纬度,经度,Z) colormap caxis(灰色(256))((-200 1200))gydF4y2Ba

现在有一个简单的命令,适用gydF4y2BashademgydF4y2Ba:gydF4y2Ba

shademgydF4y2Ba

示例4:映射工具箱:3 dgydF4y2BademcmapgydF4y2Ba

的gydF4y2BashademgydF4y2Ba函数也可以很好的用于创建3 d数据显示。从上面的例子中,使用旧金山数据我们做一个gydF4y2BasurfmgydF4y2Ba图片:gydF4y2Ba

图worldmap ([min (lat(:))马克斯(lat (:))], [min(朗(:))max(朗(:))))班gydF4y2Ba%摆脱干扰gydF4y2Basurfm(纬度,经度,Z)视图(90年,30)demcmap (Z, 256)变焦(1.5)gydF4y2Ba

现在申请gydF4y2BashademgydF4y2Ba。得到gydF4y2BaLightAnglegydF4y2Ba值我进入下面,我第一次使用gydF4y2Bashadem (ui)gydF4y2Ba和点击,直到映射了我想要的方式。gydF4y2Ba

shadem (50 [-30])gydF4y2Ba

示例5:模仿阳光gydF4y2Ba

的gydF4y2Ba“太阳”gydF4y2Ba选项可以用来模拟gydF4y2Ba颜色gydF4y2Ba阳光光源高度的函数(有效,一天的时间)。我们比较两个2 d地图,一个默认的白色光源,另一个稍微瞬间间自然色:gydF4y2Ba

图(gydF4y2Ba“pos”gydF4y2Ba[10 10 830 420])次要情节(121)worldmap ([min (lat(:))马克斯(lat (:))], [min(朗(:))max(朗(:))))cla surfm(纬度,经度,z - 80) demcmap (z - 80256) shadem(3,[-60] 15日)标题(gydF4y2Ba默认的白光的gydF4y2Ba)次要情节(122)worldmap ([min (lat(:))马克斯(lat (:))], [min(朗(:))max(朗(:))))cla surfm(纬度,经度,z - 80) shadem (3 [-60 15]gydF4y2Ba“太阳”gydF4y2Ba)标题(gydF4y2Ba“太阳”选项选中gydF4y2Ba)gydF4y2Ba

示例6:映射工具箱:MatlabgydF4y2BasurflmgydF4y2Ba失败gydF4y2Ba

Matlab的内置gydF4y2BasurflsrmgydF4y2Ba,gydF4y2BasurflmgydF4y2Ba,gydF4y2BashaderelgydF4y2Ba,gydF4y2BameshlsrmgydF4y2Ba有点笨拙的使用,因为他们需要迭代光方位角和仰角的价值观和重新呈现地图几次直到它看起来正常。内置函数也往往使斯塔克,低分辨率的阴影,缺乏细节。为了说明这一点,我们创建一个地图使用的例子gydF4y2BasurflmgydF4y2Ba文档:gydF4y2Ba

图(gydF4y2Ba“pos”gydF4y2Ba,100 100 900 500)负载gydF4y2Ba威尼斯平底渔船gydF4y2BaaxesmgydF4y2Ba米勒gydF4y2Ba轴gydF4y2Ba从gydF4y2Ba;framemgydF4y2Ba在gydF4y2Ba;gridmgydF4y2Ba在gydF4y2Ba;(纬度、经度)= meshgrat(威尼斯平底渔船,topolegend);surflmtrash = surflm(纬度,经度,威尼斯平底渔船);colormap(灰色)海岸=负载(gydF4y2Ba“海岸”gydF4y2Ba);plotm (coast.lat coast.long马克斯(威尼斯平底渔船(:)),gydF4y2Ba…gydF4y2Ba“线宽”gydF4y2Ba,1.5,gydF4y2Ba“颜色”gydF4y2Ba,gydF4y2Ba“黄色”gydF4y2Ba)gydF4y2Ba

讨厌的东西!如何查看器应该任何意义?的阴影gydF4y2BasurflmgydF4y2Ba带来了视觉上的混乱,但提供的纹理。让我们删除产生的垃圾gydF4y2BasurflmgydF4y2Ba首先,将使用gydF4y2BasurfmgydF4y2Ba,再试一次使用gydF4y2BashademgydF4y2Ba。小修补通过gydF4y2Ba“用户界面”gydF4y2Ba命令,我发现gydF4y2Ba获得gydF4y2Ba的gydF4y2Ba-13年gydF4y2Ba和gydF4y2BaLightAnglegydF4y2Ba的gydF4y2Ba(210 75)gydF4y2Ba好好澄清地图:gydF4y2Ba

删除(surflmtrash) surfm(纬度,经度,威尼斯平底渔船);caxisgydF4y2Ba汽车gydF4y2Bashadem(-13年,75 [210])gydF4y2Ba

底层数据仍然相当低分辨率的,但至少现在有某种意义上的纹理。我想我已经给了这个数据一个期待已久的释然的感觉。gydF4y2Ba

示例7:映射工具箱:MatlabgydF4y2BameshlsrmgydF4y2Ba失败gydF4y2Ba

除了创建忙,分散阴影地形图,Matlab的内置地形倾向于创建不准确的彩色照明功能。事实上,Matlab的gydF4y2Ba例子gydF4y2Ba的gydF4y2BameshlsrmgydF4y2Ba展览这个问题如果你想添加一个colorbar:gydF4y2Ba

负载gydF4y2Ba韩国gydF4y2BaZ =地图;R = georasterref (gydF4y2Ba“RasterSize”gydF4y2Ba、大小(Z),gydF4y2Ba…gydF4y2Ba“Latlim”gydF4y2Ba45,[30],gydF4y2Ba“Lonlim”gydF4y2Ba135年[115]);图worldmap (Z, R) meshlsrm (Z, R, [45 65]) cb = colorbar;ylabel (cb、gydF4y2Ba“高度?”gydF4y2Ba)gydF4y2Ba

现在这是一个古怪的colorbar !与gydF4y2BasurflmgydF4y2Ba,阴影像素化和鲜明的。让我们试着用gydF4y2BashademgydF4y2Ba而不是通过整个gydF4y2BameshlsrmgydF4y2Ba冗长的废话。首先创建一个地图:gydF4y2Ba

图worldmap (Z, R) geoshow (Z, R,gydF4y2Ba“displaytype”gydF4y2Ba,gydF4y2Ba“texturemap”gydF4y2Ba)cb = colorbar;ylabel (cb、gydF4y2Ba“高度”gydF4y2Ba)demcmap (Z, 256)gydF4y2Ba

colorbar是准确的,但形象相当平坦。让我们gydF4y2BashademgydF4y2Ba它!当我在写这个例子中,我使用gydF4y2Bashadem([45 65],“用户界面”)gydF4y2Ba初始化gydF4y2BashademgydF4y2Ba用户界面与相同的方位和仰角的照明gydF4y2BameshlsrmgydF4y2Ba上面的例子,但从点击似乎周围光线应该来自更高的仰角。我还在处理gydF4y2Ba获得gydF4y2Ba值使用向上和向下箭头,直到我发现我更喜欢gydF4y2Ba获得gydF4y2Ba约gydF4y2Ba8gydF4y2Ba:gydF4y2Ba

shadem ((90 80), 8)gydF4y2Ba

注意完整colorbar。和底层数据仍Atari-game-like的空间分辨率,但它肯定比策划相同的数据通过视觉吸引力gydF4y2BameshlsrmgydF4y2Ba。gydF4y2Ba

例8:Bedmap2gydF4y2Ba

…和所有你Bedmap极客,我们可以使用gydF4y2BashademgydF4y2Ba与gydF4y2BaBedmap2 Matlab工具箱gydF4y2Ba重新创建的标志性图9gydF4y2BaFretwell et al ., 2013。gydF4y2Ba

(纬度,经度,z) = bedmap2_data (gydF4y2Ba“床上”gydF4y2Ba,gydF4y2Ba“res”gydF4y2Ba,gydF4y2Ba3公里的gydF4y2Ba);图(gydF4y2Ba“pos”gydF4y2Ba,10 1090 940)antmap (gydF4y2Ba“northernlimit”gydF4y2Ba,-60)pcolorm(纬度,经度,z);cb = colorbar (gydF4y2Ba“位置”gydF4y2Ba,gydF4y2Ba“westoutside”gydF4y2Ba);ylabel (cb、gydF4y2Ba“床上海拔(m asl)”gydF4y2Ba)colormap (jet (22)) caxis (2000 [-2000]) antmap (gydF4y2Ba“朗”gydF4y2Ba0:30:150,gydF4y2Ba背阔肌的gydF4y2Ba80:10:-60年,gydF4y2Ba“线型”gydF4y2Ba,gydF4y2Ba“:”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba,gydF4y2Ba“关闭”gydF4y2Ba)gydF4y2Ba%应用shadem阳光来自左上角:gydF4y2Bashadem (45 [225], -18)gydF4y2Ba

已知问题gydF4y2Ba

我已经收到反馈的gydF4y2BaLightAnglegydF4y2Ba使用映射时不能调整与Matlab工具箱R2014b发布。据我所知,这个错误只影响映射Toobox释放R2015a 2014 b和固定。gydF4y2Ba

作者信息gydF4y2Ba

的gydF4y2BashademgydF4y2Ba是由功能和支持文档万博1manbetxgydF4y2Ba乍得a。格林gydF4y2Ba德克萨斯大学奥斯汀分校的gydF4y2Ba地球物理研究所(UTIG)gydF4y2Ba。2015年1月。gydF4y2Ba