【三维地图制作实例】从3D地图上俯瞰北京西山

京西之山统称西山,西山是太行山的余脉,主要分布在北京西边的门头沟、房山、石景山、昌平等几个区县,北京的母亲河永定河贯穿其中。由于西山面积之大,难以在现实中观其整体,今天我将用三维地图的方式来呈现北京西山,希望给您带来启发。

北京三分之二的面积是山区,平原区的西、北、东北皆为连绵的山峦,以顺时针方向分属西山、军都山、燕山山脉。据统计北京两千米以上山峰有三座,千米以上山峰有上百座。

京西之山统称西山,西山是太行山的余脉,主要分布在北京西边的门头沟、房山、石景山、昌平等几个区县,北京的母亲河永定河贯穿其中。作为北京西部的屏障,煤业资源丰富,自古以来为北京提供了优质的资源。西山永定河文化带底蕴深厚,孕育出了宗教寺庙文化、红色抗战文化、古村古道文化、煤炭文化等,京西古道如一张大网遍布门头沟全境。

生活在北京西部的我,每次越野徒步或骑行到山峰之上,远眺群山,总会感受到自然的博大和优美,所以生活中每隔一段时间就要到西山徒步或骑行。我想每个户外登山爱好者也会总会被山的能量所吸引,就如那句名言所说,“因为山就在那里”。

由于西山面积之大,难以在现实中观其整体,今天我将用地图的方式来呈现北京西山。为了表现山地地形,我将尝试制作三维地图,这也是本文想给大家展示的内容。主要分为两个方面,一个是三维地形的渲染(建模),另一个是三维地图的制作,后者是在前者的基础上叠加符号、说明注记等要素形成的。平常我们所看到的地图绝大部分是二维地图,包括各种电子地图、专题地图、影像地图等等,制作方法比较成熟。
三维地图又叫3D地形、3D场景、3D斜视图、全景图等,由于三维地图的制作考虑的因素和特点比较多,比如制作的时间和成本高,数据要求也更高,同时具有以下几个特点:无地理参考信息,观测角度固定,地图的上下方向还有变形等等。但是制作3D地图也有充分的理由,看起来更有趣,更能吸引读者的注意力,与传统的带等高线或山体阴影的地图相比,3D斜视地形更容易让普通大众理解,除了X、Y维度外,还展示了垂直方向的维度,如下图所示:

事实上,我们能从古地图中找到很多三维形式的地图。如下面两幅古地图,上图为北京颐和园和八旗兵营图(1888年),显示了八旗兵营的营房,寺庙,村庄,桥梁,山脉和颐和园全貌,下图为热河行宫全图(1736年),显示了热河宫的鸟瞰图。

古地图中的三维地图

那么如何用计算机的方式来制作三维地图呢?实际上这是一个多学科的产品。我本人也是参考了国内外的一些前辈才得以完成本案例。之前我们曾经介绍过国外的制图大师——Tom Patterson,他以制作漂亮的晕渲效果和三维地图闻名,我们曾经参考他的教程写过几篇博客(【干货分享】Landsat 8 Photoshop教程Sentinel-2 Photoshop教程【视频教程】山体阴影增强技术),在其网站上也有一篇比较详细的3D地图教程(Making 3D Terrain Maps ),该教程主要使用的软件是Natural Scene Designer Pro和Adobe Photoshop /Geographic Imager。本文主要使用ECartoRender(具体包括BlenderMAPublisher for Adobe IllustratorGeographic Imager for Adobe Photoshop),同时参考了我比较喜欢的DANIEL HUFFMAN写的Blender教程(来源于他的博客网站SOMETHINGABOUTMAPS),这里有一些非常优秀的Adobe Illustrator和Photoshop教程,我们曾经参考DANIEL HUFFMAN写过几篇文章(【Blender】地形晕渲基础教程一位制图师的【自我救赎】【AI制图技巧】使用不透明蒙版实现注记压盖效果【Illustrator高级制图技巧】“挖空组”与外观属性结合实现更好的地图注记压盖效果)。
有了现实的制图需求,和技术解决方案,下面我将尝试制作北京西山的三维地图。这里我不会深入到操作细节,主要把实现思路和成果作一个展示,相当于一个案例介绍,希望给您带来启发。
首先是数据准备,我收集下载了以下几种开源数据:

然后,我们用DEM来渲染3D地形(生成晕渲),虽然很多GIS软件也能做地形晕渲,但是我们将基于Blender 3D建模软件来渲染,具体原因本文不作过多解释了,大家可以看一下我们之前的一些文章(【ECartoRender】地貌晕渲解决方案【制图新技术】地形晕渲底图(山体阴影)制作新方法),概括来说,使用3D建模软件渲染地形更高级、更美观。同时,对于渲染具有透视效果的3D地形,一般GIS软件是不具备这个功能的。

其实原理就是模拟真实的摄影过程,在三维场景中,有三个主要的对象需要进行设置:地形、光源、照相机。不管使用什么软件 ,这里的主要设置干预的内容有:

  • 相机(透视模式,观测方位、俯仰角、焦距等)
  • 光源(大小、颜色、方向、高度角等)
  • 地形(高程夸张)
  • 渲染参数(材质、输出大小、分辨率、降噪、图层叠加等)

一般制作3D地图,我们是会用于朝北的观测方向,光源可以是从东南方向或西南方向照射过来,由于北京西山基本上位于北京平原的西南到西北方向,所以我选择了将相机镜头朝西旋转了35度,俯仰角是50度(这样能看清远处山间的河流),光源从西南方向照射,高度角是50度。

图1 纯地形渲染成果(黑白)
图2 叠加水系和境界的地形渲染成果

以上是地形渲染的成果,如果输出的分辨率比较高的话,对机器要求会比较高,根据机器性能情况,该过程可能需要几小时甚至更长的时间。通常情况下,上述成果即作为渲染成果直接在制图中进行使用,如果想叠加颜色或图像纹理,也可以设置颜色渐变或者叠加卫星影像生成更真实的晕渲效果。如图3、4所示:

图3 叠加颜色渐变的地形晕渲结果
图4 叠加卫星影像的地形晕渲结果

当然卫星影像图层也需要裁切成与DEM相同的范围,这个在Geographic Imager中可以非常轻松的实现,包括影像的镶嵌、调色、投影转换、裁切等操作,具体可以参考:【干货分享】Landsat 8 Photoshop教程

根据DANIEL HUFFMAN的最新教程,我们完全可以不用上面地形直接渲染的成果,而是通过生成黑白深度图(如图5),然后对深度图使用边缘检测滤镜生成的地形效果(如图 6):

图5 深度图
图6 边缘检测滤镜结果

从上图的边缘检测结果图上,我可以更清晰的看到山脊线的走向,著名的“龙脊线”就分布在上图的中间,即百花山—老龙窝—髽髻山—清水尖—妙峰山一线。

由于上述的三维地形建模结果不具有地理参考,同时垂直方向还有一些变形,跟矢量数据是不能直接套合的,如果需要叠加的矢量数据,可以事先在GIS软件中裁切成与DEM相同的范围(可以通过MAPublisher或Geograhic Imager完成),另存为栅格图层,然后在渲染时作为图像层嵌入,如上图2所示,也可以在Blender中修改着色器,将其渲染成单独的图层,如图7所示,这样便于在Photoshop或Illustrator中进行叠加和重新描摹。图8是使用同样的方式将DEM作为颜色输入的渲染结果,图9是将卫星影像作为颜色输入的渲染结果。

图7 水系单独渲染结果
图8 DEM作为颜色输入渲染结果
图9 卫星图像作为颜色输入的渲染结果

然后,我们将回到Photoshop中进行合成和进一步的效果制作,这里大家将有极大的发挥空间,因为Photoshop对于图像的合成提供了非常强大的能力,结合Geographic Imager,对地理影像的处理将变成轻松和精确。以下是将图6、图7、图8在PS中合成的一种效果(具体做法是对图6的边缘检测结果进行两次色阶调整,通过蒙版可以精确的调整平原地区的显示细节,然后将图7水系层通过正片叠底模式叠加,最后将图8应用颜色渐变叠加在最上面)。

图10 Photoshop合成图

最后,我们可以上述地形晕渲成果上叠加符号、路线、兴趣点和注记,生成3D地图,这个过程可以在Adobe Illustrator(或Photoshop)中实现,如图11和图12所示:

图11 对图10添加注记和兴趣点
图12 对图9添加注记和兴趣点

到目前,我做的试验就这些,后面我将继续探索,后面如果有更新,将发布新的文章,欢迎继续关注。

地图学虽是一门古老的学科,然而在当今计算机制图时代,我们仍需保持不断学习的态度,不断学习同行及前辈们的经验和技术,才能制作出好的地图产品。

限于笔者经验及水平,如果有不足之处,请多见谅。

关于三维地图制作,北京易凯图科技有限公司可为客户提供成产品解决方案和技术培训与咨询服务,如果您有兴趣,欢迎联系我们

【视频教程】山体阴影增强技术

在地图制图中,无论是2D和3D地图,叠加DEM生成的山体阴影会使地图变得非常直观,具有三维立体效果。之前我们曾介绍过一些这方面的案例:

当前很多GIS应用都能一键式快速生成山体阴影,常规的需要设置的参数就是太阳高度角、光源方向、垂直夸张系数。常规GIS软件算法基本一致,即按像素根据坡度和朝向计算亮度值,不会考虑其它因素(如环境光的影响,详见【ECartoRender】地貌晕渲解决方案),与传统人工费时费力生成的山体阴影相比,计算机自动生成虽然效率大幅提高,但效果往往不能完全满足要求。
如同在制图中我们需要对矢量数据进行综合化简和整理一样,我们同样需要对DEM及其生成的山体阴影成果进行综合化简和增强处理,以往我们往往把大部分的精力放在矢量数据的制图编辑上,DEM或山体阴影的处理比较少,一方面由于软件提供的这方面处理能力比较少,另一方面我们觉得地形本应该尽量符合实际。然后从制图美学方面考虑,我们需要对DEM或山体阴影进行一些必要的处理和增强。

关于DEM及山体阴影的编辑处理涉及很多的方面。有时我们需要将特定的地形区域突出(拉高或降低,这时需要对DEM数据进行预先处理);有时需要进行不同分辨率的融合使高山地形具有更好的可读性;有时需要模拟人从高空俯看地面时近处(高山)清晰、远处(低谷)模糊的效果( 瑞士著名制图学家Eduard Imhof提出),等等。与专业GIS软件相比,通用的Adobe Photoshop以及3D渲染软件(如Blender)在视觉增强方面具有优势。

以垂直夸张系数为例,山体阴影制作中一般需要设置高程夸张以突出地形的反差,但是也有矛盾不能解决,假如设的比较高,虽然地形反差有了,但是阴影区的地形细节就损失了,反之,高程夸张值设的比较低,阴影区的地形细节出来了,但是高差不明显。

本文提供了几种山体阴影增强方法,一是将两个不同垂直夸张的山体阴影进行透明度叠加,使合成的山体阴影既能反映阴影细节,又具有较好的高差效果。二是采用坡度晕渲增强山体阴影,相当于前一种方面的变体。三是给山体阴影向光面进行着色,产生山体阴影的光照效果,希望对大家有所启发。不足之处,敬请谅解。

使用的软件有:

(山体阴影细节增强和坡度增强)
(山体阴影光照着色效果)

参考文献:


1、KD Brown,Creating Slope-Enhanced Shaded-Relief Using Global Mapper

2、Tom Patterson,Mike Hermann,Creating value-enhanced shaded relief in Photoshop

3、Tom Patterson,See the light: How to make illuminated shaded relief in Photoshop 6.0

4、Tom Patterson,DEM Manipulation and 3D Terrain Visualization: Techniques used by the U.S. National Park Service

【教程】使用Geographic Imager和Adobe Photoshop 3D渲染三维地形场景

在地图制作领域,山体阴影是指一种视觉技术,可以在原本平坦的地图上产生三维地形的错觉。制图人员使用山体阴影将观众的注意力吸引到突出的地形特征上,如山脉、山谷和峡谷。使用虚构的光源和数字高程数据在地图上投射定向光,制图人员可以制造深度错觉,将阴影投射到山谷和低地,并突出山脊线和山峰,就像沐浴在阳光下一样。

以前,这项技术完全是手工完成的,费时费力。现在,借助现代图形软件和数字绘图技术,可以直接在计算机桌面上完成山体阴影和着色。

今天,我们将介绍使用 Geographic Imager 插件在Photoshop中快速生成山体阴影,并进一步介绍如何使用Photoshop 3D创建影像与DEM叠加的3D场景,使影像具有三维效果,同时对场景、环境和光源进行设置,创建具有透视效果的3D地图。

Geographic Imager是基于Adobe Photoshop的一整套强大的工具集,使您在Photoshop中对栅格数据执行打开、编辑、转换、保存等操作时维护其地理空间属性。

除了自动维护栅格数据的空间属性,Geographic Imager还提供了一些Adobe Photoshop原生图像编辑功能之外的专门的空间操作功能,如镶嵌、分块、DEM晕渲、波段管理、高级导入、矢量数据导入导出、脚本批处理等。

首先我们使用Geographic Imager打开DEM数据,借助高级导入工具,我们可以将多个DEM镶嵌到一起,跟影像一样,也可以在导入DEM时执行重采样、投影转换、裁切、DEM拉伸等操作。

高级导入

DEM拉伸方案,我们一般使用自动拉伸的方式:

DEM拉伸方式设置

导入后的DEM显示为16位灰度图像,如下所示:

DEM导入为16位灰度影像

对于普通的二维地图,山体阴影往往作为背景图层,使地图具有三维的视觉效果,这种情况下,我们可以使用Geographic Imager提供的地形晕渲工具,使用虚拟的光源与DEM数据,一键式快速生成山体阴影。

Geogrpahic Imager的地形晕渲工具

使用 Geographic Imager 的最大好处之一是我们保留了 GIS 的所有图像处理和空间参考功能,同时仍然可以访问 Photoshop 提供的大量强大的图像编辑工具。这使我们能够通过结合 Photoshop 3D 的高级 3D 渲染和照明工具,将山体阴影技术应用到新的高度,即生产具有透视效果、叠加影像的3D地图场景。

首先,在执行3D渲染之前,确保使影像与DEM具有相同的地理范围,这里我们可以使用Geographic Imager提供的地理裁切工具,根据DEM(或图像)的地理范围来裁切另一个影像(或DEM)。

裁切到另一个文档范围

然后,执行以下步骤:

1、对DEM生成3D Mesh,具体做法是在Photoshop中选择“从图层新建网格——深度映射到——平面”

从DEM新建3D Mesh

这样,将生成一个3D图层,得到如下所示的效果,需要注意的是,转成3D图层后,数据将不会再有地理信息了。

2、使用photoshop提供的3D相机操作工具,沿Z轴进行缩放可以修改高程夸张,也可以对3D场景进行旋转、平移操作,这样可以制作正射或斜视的地图场景。

调整高程缩放比例
沿X、Y、Z轴对3D模型进行旋转、平移和缩放

3、调整了高程缩放以后,我们可以配置表面属性并将影像叠加应用于我们的3D模型,在Photoshop 3D材质属性面板中,单击基础颜色右侧的下拉列表并选中“替换纹理”,选择与DEM地理范围相同的影像进行叠加。

叠加影像纹理

4、然后在图层面板中,隐藏DEM图层:

隐藏DEM图层

5、最终结果如下所示:

我们还可以设置光源的方向、角度,以控制阴影的方位,也可以添加多个光源:

下面是用这种方法制作的另一个实例,使用USGS生产的Grand Teton国家公园的的一张19世纪地形图和DEM叠加渲染的3D效果图,让老地图焕发出新的活力。