ArcGIS制图技巧系列(2)地形渲染
ArcGIS制图技巧系列(2)地形渲染
by 李远祥
DEM数据是常见的地形数据,在GIS常规的制图中,DEM一直扮演着增强效果。由于带有高程值,DEM在很多情况下都在三维中显示,但这里主要介绍的是在二维ArcMap下如何增强其显示。
以下是一个非常常见的DEM数据,默认加载到ArcGIS,呈灰白显示。这种原始状态的显示只有专业人员根据图例才能看懂,完全没有任何直观可言。

现在又是要发挥制图人员想象力的时刻了。首先我们希望能够看到地形的明显起伏,虽然眼前的这份数据是一个真实的数据,但某些时候真实的数据还不如处理过的数据看着感受真切。其次就是需要一个比较好的色彩来渲染,避免黑不溜秋的一坨像素点堆积。接下来又是根据我们自己心里面的地图对现在的情况进行分解:
1)必须能看到地形起伏。
2)用好的色彩着色。
关于第一点,在美术透视技术已经告诉我们怎么样在一个二维纸面上表达一个三维立方体了,那就是通过多个侧视的光线汇聚,或者阴影方式来模拟多一个维度。这一原理可以被充分利用在各种制图中。例如我们可以针对这个DEM数据进行【山体阴影】的操作,生成新的DEM数据。如下图,使用【山体阴影】工具处理后的效果


操作过后非常明显的展示了地形的起伏,而且这种模拟,就像太阳过在某一侧照射,产生了另一侧的阴影,使得山脊非常的明显;凹陷的部分是河流,由于河流在地位,所以没有任何的阴影像素产生,所以效果也是比较明显的。人眼对这种做过做出处理的假数据是非常敏感的,比之前的真是DEM辨别起来要容易的多。所以,对于第一点的规则,这一步算是满足了。但黑白的效果对于当前的彩色显示器来说,简直就是一种丑陋。
那么,接下来就需要分解第二个规则了,就是“给熊猫拍一张彩照”。这个本本身不是个难事。很多人都懂的对dem进行配色。例如,直接对原始数据进行配色渲染,效果如下

又或是觉得上图效果过于平面,采用山体阴影效果后的数据进行渲染,效果又如下

这样的效果似乎更加糟糕。这个时候我们又需要从美术的透明和透视上下功夫了。从上面两个图可以看出原始数据和生成的数据各有自己的优势。原始DEM对着色有着非常连贯的效果,也就是说色彩过度非常好;山体阴影数据对起伏非常敏感,高差显示明显。只要将这两个数据充分中和一下就非常好了。
前些章节我们介绍过地图的叠加,这个时候就可以用上了。我们将色彩连贯的原始数据放在最上层,高地起伏的山体阴影数据放在下层。然后对原始数据使用色彩渲染,只要这个渲染色带不是太糟糕,一般效果都可以出来。如下图

这个效果还是过于扁平,没能达到最终的要求。接下来一步就能达到化腐朽为神奇了。我们直接针对上层的DEM做一个透明效果。如下图配置,在【图层属性】—【显示】中,将透明度设置为30%左右。

点击确定后可以看到最终的彩色熊猫照片了。如下图

这样,通过两层的数据进行叠加,显示出来非常明显的渲染效果。当然,如果希望显示更加有效果,建议换一个更好的色带。ArcMap的色带设计器比较难用,而且在设计的时候修改比较麻烦,所以笔者在【快速制图插件】工具里面,集合了一个色带设计功能,实现色带所见即得的效果,而且非常方便修改显示。下图使用的就是制图插件的功能,通过滑块的方式去调整不同的色彩。非常感谢Esri中国石羽提供的创意和部分代码。如果觉得这个好的话,可以下载【快速制图插件】
掌握了传统用的办法之后,我们来看看非传统的做法,就是使用ArcGIS10.x版本带的影像函数功能。几乎可以不生成任何的数据前提下快速的实现地形渲染。在菜单栏打开【窗口】--【影像分析】面板,如下图

点击影像面板中的影像函数图标,弹出影像函数设置界面

在【函数模版编辑器】中,选中数据,点击右键,插入函数,选择【晕渲地貌函数】。

在弹出的设置界面中,可以看到这个函数基本上包含了山体阴影的一些默认参数,就是将我们上面的两步融合在一个函数中进行处理。

点击确定之后,几乎在秒级显示出结果。这得益于ArcGIS影像函数这种动态的算法,只产生算法描述,所有的显示都是动态的,所以不存在生成新的数据。

无论使用什么样的方式和方法,都可以看到ArcGIS在地形渲染的方式都是采用两个图层的结构进行辅助渲染。只要具备一些美术的原理,基本上就可以制作出精美的地图。
ArcGIS制图技巧系列(2)地形渲染的更多相关文章
- ArcGIS制图技巧系列(3)—让地图更有立体感
ArcGIS制图技巧系列(3)-让地图更有立体感 by 李远祥 在前面的章节中,我们已经介绍过各种的地图效果,如发光效果,山体阴影效果,植被填充效果等,所有的这些效果不外乎是各种技术的叠加和技巧的使用 ...
- ArcGIS制图技巧系列(1)还原真实的植被
ArcGIS制图技巧系列(1)还原真实的植被 by 李远祥 在GIS数据中,植被一般都是面装要素的形式存在.很多人在使用植被渲染的时候,一般会采用填充符号去渲染.而在ArcGIS中,填充符号要么就是纯 ...
- (转)ArcGIS制图技巧
ArcGIS制图技巧(转载自新浪博客) 1 引言 1.1 制图的目的 随着GIS在各行各业的深入应用,各信息化部门和生产单位都逐渐建立起自己的GIS的应用,同时积累了大量的地理数据.随着应用深 ...
- ArcGIS制图表达Representation实战篇1-边界线和行道树制作
ArcGIS制图表达Representation实战篇1-边界线和行道树制作 by 李远祥 即便是有了一些制图表达的基础,很多人还是对ArcGIS制图表达理解停留在表面,因为没有实际的强化训练是很难体 ...
- ArcGIS制图表达Representation-制图表达原理
ArcGIS制图表达技术-制图表达原理 by 李远祥 在讲述原理之前,需要对上一章内容进行一些必要的补充说明.既然制图表达有很多优势,是不是什么情况下都可以使用制图表达技术呢?如果有以下的一些特殊的要 ...
- ArcGIS制图表达Representation-制图表达介绍
ArcGIS制图表达技术-制图表达介绍 by 李远祥 在基于GIS数据的制图中,大部分都是使用的数据+符号应用的这种模式.这种模式已经被应用很多年,而且也是非常成熟.对应在ArcGIS体系里面,就是数 ...
- 使用ArcGIS API for Silverlight实现地形坡度在线分析
原文:使用ArcGIS API for Silverlight实现地形坡度在线分析 苦逼的研究生课程终于在今天结束了,也许从今以后再也不会坐在大学的课堂上正式的听老师讲课了,接下来的时间就得开始找工作 ...
- ArcGIS制图表达Representation-符号制作
ArcGIS制图表达Representation-符号制作 by 李远祥 在ArcGIS的符号里面,存在着两种符号体系,一种是传统的标准符号体系,一种是制图表达符号体系.标准符号几乎被绝大部分ArcG ...
- ArcGIS制图表达Representation实战篇2-河流渐变与符号旋转
ArcGIS制图表达Representation实战篇2-河流渐变与符号旋转 by 李远祥 上一章节主要是从实战中使用规则和几何效果,如何分解制图规则.本章主要还是通过一些特殊要求如河流线宽渐变和符号 ...
随机推荐
- POJ 2251 Dungeon Master(地牢大师)
p.MsoNormal { margin-bottom: 10.0000pt; font-family: Tahoma; font-size: 11.0000pt } h1 { margin-top: ...
- arcengine C#关于动态添加图层
动态加载影像图层为例 研究了两三天算是弄出来了.本例适合影像数据量特别的大程序使用,可以动态的添加删除影像数据,还有不完善的地方,不过基本满足要求. 1.首先得到关键点的图层 m_Map = axMa ...
- SDOI2016 R1 解题报告 bzoj4513~bzoj4518
储能表 将n, m分解为二进制,考虑一个log(n)层的trie树,n会在这颗trie树上走出了一个路径,因为 行数 $ \le n$,所以在n的二进制路径上,每次往1走的时候,与m计算贡献,m同样处 ...
- mysql 隔离级别与锁
1.什么是事务 事务是一条或多条数据库操作语句的组合,具备ACID,4个特点. 原子性:要不全部成功,要不全部撤销 隔离性:事务之间相互独立,互不干扰 一致性:数据库正确地改变状态后,数据库的一致性约 ...
- git如何正确回滚代码
git如何正确回滚代码 方法一,删除远程分支再提交 ①首先两步保证当前工作区是干净的,并且和远程分支代码一致 $ git co currentBranch $ git pull origin curr ...
- 今天学习了下,如何破解wifi
破解了隔壁的wif,得罪了,哥哥要蹭网一段时间. 主要思路:安装linux环境.这里我选择了虚拟机加cdlinux .运行里面的min抓得握手包,然后淘宝花10元跑下包,因为自己的电脑不行,跑费时间太 ...
- eclipse hibernate plugin
JBoss Tools hibernate tools for eclipse plugins
- ajax 页面请求后,jsp页面定位
如下图所示.A,B两区域为不动区域,既不随着滚动条的滚动而移动.C区域为异步加载内容区域, 在C区域中,点击查询按钮,需要异步加载查询 结果.但是查询结果会很长,这样子,就需要向下滑动滚动条,用户体验 ...
- xamarin mac 之 资料
中文社区 xamarin.form 30天学习计划
- c#和java中的方法覆盖——virtual、override、new
多态和覆盖 多态是面向对象编程中最为重要的概念之一,而覆盖又是体现多态最重要的方面.对于像c#和java这样的面向对象编程的语言来说,实现了在编译时只检查接口是否具备,而不需关心最终的实现,即最终的实 ...