【三维地图制作实例】从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添加注记和兴趣点

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

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

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

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

【制图新技术】地形晕渲底图(山体阴影)制作新方法

之前我们发布过一种新的地貌晕渲解决方案(【ECartoRender】地貌晕渲解决方案),在其中我们介绍了一种新的地貌晕渲(也叫山体阴影)的技术方法,与GIS的做法不一样,该新方法基于3D动画建模技术,采用更先进的渲染引擎,可以生成比GIS软件更加美观和自然的晕渲成果(北京【地图上的四季】)。

今天我们大概介绍一下其实现过程,首先,是准备好数字高程模型(DEM),获取DEM有多种途径,比较常用的有公开的SRTM90和SRTM30(分辨率分别为90米和30米)、ASTER全球30米高程数据等,如果您还没找到好的途径,使用Global Mapper是一种非常便捷的获取开源数据的方式(【免费,优质GIS数据】:Global Mapper在线数据访问)。

Global Mapper在线数据下载

有了DEM数据,我们需要根据作图范围和比例尺计算所需要的分辨率。我们拿制作祁连山国家公园的晕渲为例,假设我想制作一张85cm宽的图,换算成英寸大约为33英寸,典型的打印分辨率是每英寸300像素,因此我需要33×300 = 9900像素宽的晕渲图。祁连山国家森林公园大约宽为1200公里,因此,我们需要的DEM分辨率大约为1,200,000(米)÷ 9900 ≈ 120米。

在进入blender软件渲染之前,我们需要在GIS软件中进行一些预处理,包括DEM数据的投影、镶嵌、重采样、裁切等工作,同时还有重要的一步,将DEM数据的高程值拉伸到0-65535之间(大概就行),所有这些工作我一般使用QGIS、Global MapperGeographic Imager等软件来实现,最后将DEM输出为unsigned 16位类型的TIFF。

预处理生成的Unsigned 16位TIFF​高程数据

然后我们进入到blender进行DEM数据导入,以及配置渲染引擎、着色器,对地形平面进行细分(手工或自适应),添加虚拟”光源”和”相机”并进行相关设置,然后添加相应的颜色渐变​等。

Blender晕渲方案配置​

在正式进行渲染之前,我们可以通过快速预览对结果进行确认,如果可以,即可启动渲染,渲染过程如下视频所示,根据DEM数据的大小,需要一定的时间。

Blender渲染过程​

以下是不同的配色方案​的渲染结果:

成果(一)
成果(二)
成果(三)
成果(四)

虽然上述blender输出的晕渲结果图像不带坐标,但是我们可以保留原来GIS预处理时的tfw文件,在文件名相同的情况下 ,即可以恢复其坐标。在后期的制图中我们借助MAPublisherGeographic Imager工具,可以在Geographic Imager进行投影转换,然后在MAPublisher中将晕渲结果作为底图嵌入,再在上面叠加符号、注记、以及其他地图要素。由于MAPublisher和Geographic Imager是基于Adobe Illustrator(AI)和Photoshop(PS)的制图插件,因此,我们在充分利用GIS数据源和GIS功能的同时,可以利用AI和PS强大的设计能力,使地图具有更好的表达效果,如下面两幅图中叠加晕渲底图后通过对注记添加描边、设置描边透明、以及外发光等效果可以增强文字的可读性​。​