来自 Esri 的超强制图专家的“秘密”武器!
| 前言:Esri 半官方出品的地形工具箱,数十种工具,囊括多种进阶地形渲染、旧式手绘地形渲染、真实光照地形渲染等等,功能强大... |
1.工具简介
Terrain Tools v1.1(中文:地形工具 1.1版本)。
强大的 ArcGIS 工具箱插件,专注于地形方面,在 ArcGIS 原有基础上扩展了多个工具,可以制作更高级的 Swiss Hillshade、MDOW Hillshade、阴影等值线、点状风格(Historic Dots)、晕翁线风格(Hachures)、倾斜平图(Plan Oblique)、3D等值线图(3D Choropleth)...
是不是已经有点晕了?这里都还没有列举完呢,一共有14个工具。
不过不必担心,下面会有相关的功能的详细介绍。
2.作者
地形工具非常强大,工具的主要由两个人制作完成:Kenneth Field 和 Linda Beale,前者起主要作用。
Kenneth Field 是一位来自英国的专业制图师和地理学家,拥有学士学位和多个博士学位,同时有着长达30年的课程、地图设计和 GIS 教学经验;The Cartographic Journal 的前任编辑 (2005-2014),以及 ICA 地图设计委员会的前任主席(mapdesign.icaci.org 2010-2018)。撰写过畅销书籍《Cartography》和 《Thematic Mapping: 101 inspiring ways to visualise empirical data》,Esri MOOC 小组重要领导者。
Linda Beale 博士是 Esri 位置分析小组负责人,拥有 GIS、统计和建模博士学位,并领导伦敦帝国理工学院地理空间卫生小组在 Small Area Health Statistics Unit 的研究。Linda 在空间流行病学领域拥有丰富的经验,并与卫生部门、世界卫生组织和疾病控制中心密切合作。Linda 自 2011 年以来一直在 Esri 工作,为社区提供更好、更强大的工具,广泛的在社区中共享知识及其相关实践。
两人经验丰富,同时长期服务于 Esri,所以他们制作的工具也是比较权威的,可以说这就是半官方出品的工具。
当然工具不完全都是这两位博士完成的,一些工具中的算法、思路可能之前有人提出过,有的甚至几十年前就有了。
至于为什么我要详细介绍这个工具箱,因为这个工具箱非常强大,不仅支持 ArcGIS 也支持 ArcGIS Pro;
其中的一些工具可以实现多种复杂的进阶地形阴影渲染,这些进阶的地形渲染可以极大的提高信息的表达丰富度,更能表达真实世界的真实情况;同时也能制作多种其他渲染方式。
另外部分工具会报错,我修改了部分源代码。
3.工具详细信息
详细说说工具箱中各个工具。
3.1 Swiss Hillshade
先从“瑞士”地形阴影工具说起,为什么叫这个名字,因为这种地形阴影渲染方式最初来自于瑞士的著名制图学家 Eduard Imhof(1895 – 1986)。
使用方法:
Input raster 框中输入DEM 栅格数据;
Output worksapce 框中输入默认数据库或者一个文件夹就行(不是文件哦),最好不要有中文;
其他默认就行,然后会在数据库或者文件夹中生成两个地形文件。
上面这个是 ArcGIS 默认制作出来的地形阴影渲染文件(Z factor=1),这是很常见的,单独看可能稀松平常,但是和下面做一下比较呢?
下面这个就是使用该工具制作的地形渲染成果,可以明显看到这种渲染成果更能表现地形的崎岖和高低差,亮的较高,暗的较低,不像原来那么“平”。
特别是大峡谷北部偏东有一大块“高地”,可以明显看出高低对比。
“瑞士”地形阴影渲染工具会输出两个调整修饰后的地形阴影文件,通过两个图层的叠加实现。
第一个图层 Swiss_filter.tif。这个灰度图对地形进行了平滑处理,模糊了细节,比如坡面,但是强调突出了地形的主要地理特征——简单来说就是忽略了细节,放大了突出特点;
第二个图层叫 Swiss_aerial.tif。这是从高空向下的空间透视灰度图,越高的地方越亮,反之越暗。
Swiss_filter.tif 图层置于上层,透明度设置为50%,然后把 Swiss_aerial.tif 放到下面,最后就完成了。
你可以在图层属性中修改透明度直到你自己满意。
3.2 Cluster Hillshade
聚类地形渲染,一共有三种聚类方式,对应三个工具,Cluster Hillshade、Cluster Hillshade(Elevation) 以及 Cluster Hillshade(Slope)。
每个工具使用过程都没有太大的差别:
直接输入 DEM 栅格;
其他的默认就行。
在生成地形渲染文件时(Hillshade),系统的默认高度角(Altitude angle)是45度,方位角是315度(Azimuth angle)。
这很好,但当光线和山脊平行的时候,这部分的地形特征的变化就会变小,细节会丢失,图像会显得较为平坦。
使用第一个 Cluster Hillshade 工具的结果和对比如下:
左边是新工具生成的,右边是默认的,两者都是同样的拉伸状态,可以看到左边的细节要丰富一些。
当然效果也不是绝对的,但是一般情况下使用新方法展示的细节更多,信息量更大。
而将 K-Mean 聚类的侧重放到高程和坡度后,就诞生了后面两个衍生工具:Cluster Hillshade(Elevation) 以及 Cluster Hillshade(Slope)。
上面这幅图是聚类侧重高度的结果,高度有变化的地方颜色较暗;
下面这幅图就是侧重坡度变化的结果,坡度变化大的地区颜色较暗。
总结来说,Cluster Hillshade 的第一个工具的细节程度更丰富、第二个侧重于展示高度变化的情况、第三个则是坡度变化。
修改
另外就是原版 Cluster Hillshade(Slope) 工具会报错(ArcGIS10.3),我修改了ClusterHillshadeSlope.py 源代码(第50行),这样就没有报错了。
| Note:文章最后会提供原版工具以及作者本人修改的版本下载,你使用哪个都可以。 |
3.3 MDOW Hillshade
传统的地形渲染是单侧光(315度的方位角,45度的高度角),阴影面的细节丢失成为无法避免的问题。
MDOW Hillshade 全称:Multidirectional Oblique Weighted hillshade,即多方向地形阴影渲染,由 USGS 的 Robert Mark 提出,旨在解决该问题。
通过将多个方向的山体阴影渲染文件通过一定的方式加权叠加从而形成最后的成果。
使用 MDOW Hillshade 制作的地形渲染文件细节更加丰富,整个视觉效果就很“密集”,是否好看这个就见仁见智了;单就信息量来说,确实更加丰富了。
3.4 3D Choropleth
直接百度直译过来就是“3D 等值线图”,不管是不是这个意思,还是先看效果吧!
这个工具可以根据矢量的属性值的大小实现各个要素之间不同高低的效果(仅仅视觉上)。
工具选项界面如下,第一项是输入矢量图层;第二项 Choropleth value 选择图层中进行大小比较的字段;第三项选择一个输出数据库或者文件夹,因为会输出多个图层;
倒数第二项不用管,默认10;最后的像素大小根据情况自行调整,不过也可以不填(不过这有问题,下面再说)。
输出结果是由四个图层组成的图层组,不过你可以手动设置第二个图层 3D_Choropleth \xxx_lyr 的符号系统颜色。
凹凸的阴影效果主要由 medium_lyr 和 long_lyr 两个栅格图层实现;short_lyr 用于效果加强;3D_Choropleth \xxx_lyr 用于颜色控制。
修改
但是使用原版工具制作会有二个问题和一个注意事项:
截取原始效果图的右上角,如下图。
第一个问题就是凹进去的部分没有完全被栅格盖住;一个注意事项呢就是像素锯齿明显,因为默认的像素大小较大,可以在最后一项把像素大小调到满意。
第二个问题就是原版工具运行过程中报错(ArcGIS10.3)。
在修改源代码后成功解决了以上两个问题。
修改说明:
输入元素类型从要素类修改为要素图层,这样可以直接拖动图层到选项框中;
对生成的栅格进行掩膜范围的限制(Choropleth3D.py 第 36行);
lyr 文件的保存路径进行修改(Choropleth3D.py 第 96行),原版会报错(笔者使用的 ArcGIS 10.3)。
使用了修改源码后的 3D Choropleth 工具制作的效果如下(像素大小值设置为300):
效果还挺好的,这个工具自己用的还挺多的。
| Note:文章最后会提供原版工具以及作者本人修改的版本下载,你使用哪个都可以。 |
3.5 Chromastereoscopic
这个真的不知道怎么翻译。
我看帮助文档的大概意思就是这个工具可以赋予 DEM 一些较为特殊的色带,然后用户可以使用 3D 眼镜来观看,这样就可以实现3D效果,用于教学可能不错吧。
这里是眼镜购买网站(好像是):https://chromatek.com/
3.6 Filled Contours
填充轮廓。
本质是栅格数据矢量化工具,还会自动对矢量的符号系统进行颜色分级操作,不过这里需要设置一个范围值 Contour interval。
比如高程栅格数据需要指定最小的高程间隔
其他栅格数据同理,不过注意如果这个值设置太小的话,运算时间会大大增加。
3.7 Hachures
这个中文实在不知道叫什么,有几种叫法,暂时就叫嗡线吧。
这是一种旧式的地图地形渲染方式,沿着坡度方向绘制水平线,根据线段的长度和密集程度表达坡度的陡峭程度。
在计算机还未大规模普及的时候,这种技法常用于地图制作,当然都是手动绘制的。
Source:http://mike.teczno.com/notes/hachures.html
不过呢这个工具好像有点问题,反正性能不行,使用美国大峡谷附近的 tif 数据来运行,总计耗时25分钟,而且没有结果。
修改
反复检查调试源代码,最后发现是 Z 因子值异常导致。将其改为1(Hachure.py 第55行)即可解决问题。
| Note:文章最后会提供原版工具以及作者本人修改的版本下载,你使用哪个都可以。 |
3.8 Historic Dots
点图,即等高线的点图替代版本。
3.9 Illuminated Contours
光照阴影轮廓线。
根据输入的 DEM 数据,生成等高线,但是不同于一般的等高线,这里的等高线是有阴影明暗区别的。
3.10 Plan Oblique
平面倾斜。
从传统的正上方俯视角变为指定角度的倾斜视角。
这个工具没有帮助说明,但也比较简单,Inclination angle 框中输入角度,90表示正上方俯视角。
可以看到 Inclination angle 角度越小,倾斜角度越大。
3.11 Shadow Lines
阴影线,即3.7 Hachures 嗡线的交错版本。
但是神奇的和 3.7 中的原本版 Hachures 一样,运行无结果。
然后我粗略看了一下源码,发现 ShadowLines.py 第37行,Z 因子赋值也是 9.01248403045503E-06,这是一个很小的数,即 0.0000090125。
投影坐标系中使用这么小的 Z 因子不太正常。
我试着把 Z 因子改成1,有结果了,是这样的。
不是叫阴影线嘛,怎么都一坨一坨的,别急,你放大或者把图导出来看看。
可以看到效果是非常不错。
图案全部都是一根一根的线段组成,放大看更为明显。
修改
源代码修改:
允许重名栅格互相覆盖(ShadowLines.py 33行);
Z 因子修改为正常值(ShadowLines.py 38行)。
| Note:文章最后会提供原版工具以及作者本人修改的版本下载,你使用哪个都可以。 |
3.12 Sky Model
最后一个了,个人理解可以翻译为天空光照模型。
在真实世界中,光线不都是一个方向的,在不同大气环境下是不同角度和方向的,同时在不同的时间和不同的天气,光照条件都不尽相同,而这个工具旨在模拟这个功能。
这个工具使用较为复杂,有预处理步骤,同时需要额外的可执行文件支持,所以我之后会单独写一章,等不及的朋友可以自行查阅帮助说明。
4.色带
这个工具同样提供了多个色带,位于 ColorRamps3.0 文件夹中,在样式管理器中添加以下样式即可。
算是额外送的。
5.最后
共有4个工具做了修改,因为各自的原因,分别是 Cluster Hillshade、3D Choropleth、Hachures、Shadow Lines。
使用注意:
输出路径最后不要有中文,可能会报错!
输出路径最后不要有中文!可能会报错。
笔者仅修改了部分源代码,其他相关文件未做修改,请放心使用。
下载:
推荐下载作者自己做了一些改进的版本,修改了部分源代码的问题(在工具的 readme 说明中,作者允许他人根据情况修改、自定义源码并使用该工具),并且测试过。
之后有空的话我把这些问题反馈到作者的邮箱,同时欢迎向我反馈,我一并写给他。
修改版本:后台回复 地形箱 即可获得下载地址;
原版工具下载地址:https://www.arcgis.com/home/item.html?id=4b2ea7c5f87d476a8849c804b81667aa
纯粹分享,只因热爱,你的1元赞助是对我的鼓舞(拿来把你)
不然转发个朋友圈也是极好的
REF:
[1] Abuckley.Updated hillshade toolbox. Available online:https://www.esri.com/arcgis-blog/products/product/mapping/updated-hillshade-toolbox
[2] Farmakis-Serebryakova, Marianna and Hurni, Lorenz. Comparison of Relief Shading Techniques Applied to Landforms.Available online:https://www.mdpi.com/2220-9964/9/4/253/pdf
[3] Eduard Imhof Wiki.https://en.wikipedia.org/wiki/Eduard_Imhof
[4] Hachure map.https://en.wikipedia.org/wiki/Hachure_map
点赞哦!