制作3D地形(二):高程数据处理

前言:为了能在建模软件 Blender 中成功建立起3D模型,需要对高程数据进行预处理。高程数据,你也可以叫 DEM(数字高程模型)数据。这种数据有多种表现形式,同样也有多种储存方式,或者说格式;最常见的就是以灰度值来表示高程的灰度栅格数据 TIFF,后缀为 tif 的格式。后文说的高程数据都是指高程灰度图栅格数据。Blender 就是通过读取高程数据中各像素的灰度值来获取相应的高度信息,然后建立起3D模型。Blender 仅读取灰度值,对其空间坐标信息不敏感,读入到 Blender 中的空间坐标信息就没了,所以不一定非要 TIFF 数据才行,只要是灰度栅格图像,比如 PNG 和 JPEG 格式,在保证像素类型正确的前提前,都是可以通过 Blender 建立3D模型的。根据具体的情况和相应的场景可能需要不同的格式,不过一般使用 TIFF 格式的就可以了。数据处理分为以下4个部分,其中最后两个部分才是重中之重,并且所有的操作都同时提供 ArcGIS 和 QGIS 两种处理方式:数据获取;合并-裁剪-投影-重采样;范围拉伸;转换像素类型。理论非常简单,但是制作出的地形模型好坏的关键就是数据处理。文章最后会提供原始高程数据以及处理完成后的数据,你可以在后续的教程和个人的试验中使用,需要的可以自取。第一步 数据获取

制作3D模型需要高程数据,现在获取高程数据的有效途径非常多,读者可以根据自己的需要选择合适分辨率的高程数据,如果你想制作小比例尺大范围的地图,最好选择较大空间分辨率的高程数据,比如1千米x1千米分辨率;而如果你想制作大比例尺较为精细的地图的话,就可以选择10米x10米、甚至更小空间分辨率的高程数据。特别提醒一点,小心使用保密数据,尽量不用。你能在网上下载到的数据想怎么折腾都可以。网上有很多关于高程数据的获取指南,各位可以根据自己的实际情况获取相应的数据。笔者目前使用较多的是下面这个网站:http://viewfinderpanoramas.org/Coverage%20map%20viewfinderpanoramas_org3.htm该网站可以下载全球的高程数据,其中中国区域高程数据的空间分辨率一般都是90米,最重要的是下载速度不慢;打开网址可以看到很多小格子,点击就可以下载这个区域内的 DEM 数据,解压后数据格式是 HGT 格式,可以直接用 ArcGIS 或者 QGIS 打开。

第二步 合并-裁剪-投影-重采样

其实这四个操作都是可选的,因为并不是所有数据都需要全部走一遍这些流程,因为你完全可以使用一个已经处理好、同时已经设置了投影系的 tif 数据。不过可能并不是所有读者都有 GIS 相关背景经验,可能有的读者仅仅是兴趣使然,所以为了不落下每一个人,这里讲一下如何合并-裁剪-投影-重采样,对此非常熟悉的读者朋友可以跳过这一小节,直接进入下一小节。2.1 合并通常来说,高程数据都是一块一块的矩形;所以你很有可能需要通过将多个矩形合并起来获取目标范围区。将周围的高程数据添加进来,将其合并(也叫镶嵌)成一个整块。

4块高程数据>>工具位置ArcGIS 可以使用镶嵌至新栅格工具,该工具位于数据管理工具->栅格->栅格数据集->镶嵌至新栅格。QGIS 中使用 Merge 工具可以镶嵌栅格;该工具来自于 GADL 包。位于QGIS 右侧工具栏,GDAL->Raster miscellaneous->Merge。或者在上方工具栏中快捷打开:

>>2.2 裁剪>>工具位置ArcGIS 可以使用裁剪工具;位于数据管理工具->栅格->栅格处理->裁剪;QGIS 中依然在上方的 Raster 菜单中,依次点击 Extraction-> Clip raster by mask layer 即可。>>2.3 投影在 Blender 读取高程数据之前应该确保高程数据已经正确设置好了投影。不然 Blender 读取的形状就是扁的,因为这个扁扁的形状才是投影前高程数据的真实情况。那为什么 ArcGIS 中就显示正常呢?因为 GIS 软件会自动做一个投影显示。所以设置投影系是必不可少的一步操作。

左:投影前的真实形状,形状更扁;右:投影后>>工具位置ArcGIS 中的投影工具在数据管理工具->投影和变换->栅格->投影栅格;QGIS 的投影工具在菜单栏上方的 Raster-Projections-Warp。>>2.4 重采样重采样:根据一部分像素的信息赋值给其他像素信息的过程。这里的重采样应该叫修改像素空间分辨率,只不过也是用重采样的方式实现而已。什么叫空间分辨率?一个像素所表示的实际地理大小就是空间分辨率。比如这个教程使用的高程数据空间分辨率是90米,那么这就代表一个像素映射现实生活中一个90米长、90米宽的方形区域。如果想要制作整个中国的3D模型,90米分辨率就太精细了,整个数据量就非常庞大,直接让电脑死机,所以可以通过重采样为1千米或者10千米。单独的重采样工具不是所有 GIS 软件中都有,GIS 软件中一些和栅格相关的工具通常会自带修改空间分辨率的选项,所以可以顺便设置好空间分辨率大小;比如使用 QGIS 时我就喜欢使用栅格投影工具来顺便修改空间分辨率。该教程提供的高程数据空间分辨率大小合适,不需要修改。>>工具位置ArcGIS 中的单独重采样工具在数据管理工具->栅格->栅格处理->重采样;ArcGIS 10.3版本有4种方法。QGIS 的话我是直接使用投影工具来解决,因为 QGIS 本身没有独立的重采样工具,在 QGIS 主界面上面的菜单栏中选择 Raster-Projections-Warp 即可。将投影工具中的投影选项空着,只需要设置好 Output file resolution in target georeferenced units 这个选项,就可以在不修改投影的前提下修改空间分辨率。>>第三步 范围拉伸

范围拉伸,英文:rescale。范围拉伸是指把高程数据的范围扩大,普通的高程数据一般就在0到4000左右,教程提供的高程数据范围是42到2283(是否构建栅格金字塔会导致范围些许的不同,不过影响不大),那么为什么要拉伸?有以下两个重要原因:适配 Blender;如果以42到2283这样的范围导入 Blender,最终的成果建模是非常平坦,就像一张白纸,就像下面这样,看的见嘛?快瞅瞅:

保留细节;一般来说,高程数据的像素数据类型是浮点型,是小数形式,而 Blender 支持整数,所以需要转换。如果不拉伸直接转换,小数会被四舍五入成整数,数据丢失,反映到模型上就是细节丢失、不连续。由于这两个原因,所以我们必须先对高程数据进行拉伸。那么具体拉伸到多大呢?大神 Daniel Huffman 提供了参考,或许这不是参考,这就是答案 👍 :

>>工具位置ArcGIS 中使用栅格计算器,工具栏中依次打开 Spatial Analyst 工具->地图代数,最后打开栅格计算器工具执行栅格拉伸操作。

然后输入以下计算表达式:

你每一个输入的整数最好使用 ArcGIS 提供的关键字 Float 括起来,否则输出的数据就有可能自动四舍五入到整数位,最后导致的结果要么是0要么是65535(是否会四舍五入到整数取决于高程数据当前的像素类型,不过保险起见,都统一加上 Float 吧)。QGIS 使用 Raster Calculator。点击主界面上方菜单栏中的 Raster->Raster Calculator。

然后输入以下计算表达式:

>>Note:①这里没有考虑高程数据范围涉及到负数(海底)的情况。②可能会遇到高程数据中有空值 Nodata,请注意。第四步 转换像素类型

简单理解,像素类型描述了图像的最小储存单元所使用的格式。

查看像素类型在创建3D模型时,Blender 只能支持特定的像素类型,那就是16位无符号整型;所以现在要做的就是把像素类型装换为6位无符号整型。16位无符号整型,英文:16 unsigned int 或者 16 bit unsigned;无符号表示正数,从0开始到2的16次方的整数。从0到2的16次方正好有65536个数(包括0),那么最大数就是65535,这就是公式最后乘数字65535的原因。>>工具位置ArcGIS 可以使用复制栅格工具来修改像素类型:数据管理工具->栅格->栅格数据集->复制栅格;然后像素类型选择:16_BIT_UNSIGNEDQGIS 可以使用 translate 工具:上方菜单栏依次点击 Raster->conversion->translate;然后在 Output data type 中选择 UInt16。>>最后

本章节你可以了解到:使用高程灰度图栅格数据可以在 Blender 中创建3D地形模型;高程数据的基本预处理操作(包括 ArcGIS 和 QGIS);高程范围拉伸的重要性和操作;Blender 建模需要像素类型为16位无符号整型的栅格图像。好的,学完这章,距离下面的成果又近了一大步!

资料下载:提供原始高程数据以及处理好后的高程数据;1 原始高程数据:原始未投影 TIFF 数据。2 成果高程数据:完成所有处理步骤,可直接建模的 TIFF 数据。Blender 文件(后续章节会提供);系列教程PDF文档。

(0)

相关推荐

  • 如何用QGIS做一个炫酷的三维场景

    GIS前沿 2021-08-16 以下文章来源于走天涯徐小洋地理数据科学 ,作者走天涯徐小洋 手头只有一个笔记本电脑,用ArcGIS画图真的是超级卡,但是图还是得照画,用用QGIS吧. 相比于ArcG ...

  • 【教程】ArcGIS水文分析提取河流及流域

    在进行某些研究或者一些论文插图显示的时候,有时我们会碰到在部分资料中找不到一些小的河流或者流域的数据的情况,这里讲述通过DEM数据生成河流及流域. 一.数据准备 本文中使用的为SRTM DEM数据,主 ...

  • PS如何制作3D地形特效,PS插件3D Map Generator ,一键生成地图神器

    2020-06-17 18:33 今天,世纪man给大家推荐一个强大的Photoshop(PS)地图插件--3D Map Generator,可以方便制作3D特效效果.(插件见文末) 3D Map G ...

  • 制作3D地形(一):前言

    前言:备受期待的立体地图制作教程来了! 平面的东西看多了总是乏味的,人们不免去追求更新颖.更有表现力的事物. 地图也是这样,而三维的立体地图无疑是表现力的一种解释,就像下面的地图一样: 该图来自于网站 ...

  • 制作3D地形(三):快速了解Blender

    前言:带你快速了解 Blender 中我们会使用的一部分功能和模块,同时作为一个衔接和缓冲,因为下一章相对而言涉及的概念较多.操作较复杂. 该章节不会也不能带你真正完全对 Blender 有一个了解, ...

  • 制作3D地形(四):创建模型

    前言:详细介绍如何使用高程数据在 Blender 中创建3D立体地形模型,涉及材质.表面细分和置换等相关概念... 再一次温馨提示:主界面右侧的属性对话框中选项会根据当前的选中对象(物体.其他物体.光 ...

  • 制作3D地形(五):相机&光源&渲染

    前言:初步制作出地形3D模型后,本章节将带你设置相机属性来制作获取地形模型的平面图:调整光源使模型更真实美观:提高渲染采样数获取高质量低噪点的成果图... 这一节内容较多,弄个目录上来,方便梳理思路. ...

  • 制作3D地形(六):个性化创作

    前言:3D模型是非常好玩同时能激发创造力的东西,尽管平面效果图已经做出来,但是你仅满足于此吗... 个性化创作 如果你能看到现在,恭喜你,你有一个炙热的学习之心,也希望你有一颗发现.创造美丽的心. 我 ...

  • 制作3D地图(二):投影重采样

    前言:由于重采样的缘故,制作的3D模型可能出现黑色条纹,这里帮你解决! 什么是重采样 不知道你有没有想过这样一个问题:如何把一张图片放大或者缩小?图片里面的像素值是如何更新的?并且还要保证其顺序排列要 ...

  • 【加工增效】五种辣椒红油的制作方法(二)

    二.麻辣红油 麻辣红油是以干辣椒.花椒为原料,将干辣椒粉碎成粗片,并与花椒一起加入植物油中加热浸渍而成.麻辣红油可作为调味料直接食用,也可用来加工各类食品,适用于烹饪麻辣的热菜菜肴以及凉菜的调味. 准 ...

  • 韩版围裙的裁剪图及制作过程(二)

    把这篇文章转你朋友圈吧! 宝贝衣亲手做,点击上方蓝色字 小裁缝学堂 ,更多简单做衣衣教程等你来看! 声明:小裁缝学堂只是因为个人喜欢而建立的一个公众平台,有些信息转载自各类纸媒.网媒之所有作品,版权归 ...