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 李远祥 上一章节主要是从实战中使用规则和几何效果,如何分解制图规则.本章主要还是通过一些特殊要求如河流线宽渐变和符号 ...
随机推荐
- keystone policy.json 的学习总结
keystone的policy.json文件位于:/etc/keystone/policy.json 其内容如下: 1 { 2 "admin_required": "ro ...
- Mysql基本操作整理
1.登录数据库 格式: mysql -h主机地址 -u用户名 -p用户密码 –P端口 –D数据库 –e “SQL 内容”>mysql -uroot -p 数据库名称~~~~~~~~~~~~~~~ ...
- USB自定义HID设备实现-STM32
该文档使用USB固件库,在其基础上进行了自己的定制,完成了一个USB-HID设备,首先是usb_desc.c文件,里面存放了usb各种描述符的存在 #include "usb_desc.h& ...
- uses crt;
1.uses CRT,表示引用CRT.pas单元.CRT.pas单元是Pascal最重要的单元之一,主要用于字符界面的操作,里面内置了清屏.光标定位.删除行.调整字符亮度.前景色.背景色等功能函数.2 ...
- Codeforces Round 212 Div 2 报告(以前没写完,现在也没心情补了,先就这样吧)
A. Two Semiknights Meet 题目大意:有一个8x8的棋盘,上面放有两个骑士,骑士以“田字”的方式走.每个方格都被定义为good或者bad,问骑士能否在good的格子中相遇? 由于骑 ...
- UVa 10176 - Ocean Deep ! - Make it shallow !!
题目大意:判断一个很大的二进制能否被131071整除.在二进制转十进制的过程中不断取模,最后判断结果是否是0就可以了. #include <cstdio> #include <cst ...
- Valgrind 快速入门
1. 介绍 Valgrind工具组提供了一套调试与分析错误的工具包,能够帮助你的程序工作的更加准确,更加快速.这些工具之中最有名的是Memcheck.它能够识别很多C或者C++程序中内存相关的错误,这 ...
- linx建立用戶&組
groupadd test 创建test用户组 useradd user1 创建user1用户 passwd user1 ...
- JS拖动技术--- 关于setCapture
<script type="text/javascript"> <!-- window.onload=function(){ objDiv = documen ...
- 1.1.2.托管对象模型(Core Data 应用程序实践指南)
托管对象模型即对象图,可以看成实体类的描述,规定了数据字段. 要想创建托管对象模型,需生成NSManagedObjectModel类的实例.