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

前言:由于重采样的缘故,制作的3D模型可能出现黑色条纹,这里帮你解决!什么是重采样

不知道你有没有想过这样一个问题:如何把一张图片放大或者缩小?图片里面的像素值是如何更新的?并且还要保证其顺序排列要遵循一定的规则,这样放大后的图片才不会发生变化。实现变化的这一过程其实就叫重采样:根据一部分像素的信息赋值给其他像素信息的过程。重采样又有很多不同的规则,也可以叫重采样方法,重采样方法很多,比如最被人们熟知的最邻近法(Nearest)、二次线性(Blinear)、三次卷积(Cubic)等,耳朵都要听出茧了,因为确实这些方法应用面非常的广,上管天下管地。这些方法会根据各自的特性把这些像素安排的明明白白,保证变化后的图像看上去还是那么个样,至少大致看上去没有什么变化,反过来说,细微到像素级别肯定还是有变化的。改进投影使用的重采样方法

在《制作3D地形》教程里,使用的高程数据是矩形的,而在这里则需要对高程数据进行裁剪以满足行政区划的范围,就像这样,高程数据从矩形变成了不规则形状:

裁剪本身没有什么问题,但是之后的投影后会产生一个非常恼人的问题,这个问题和重采样有关。设置投影时影像会执行重采样操作,不管是使用那种重采样方法,肉眼看过去都没有太大的差别,但是当使用 Blender 进行建模时,细微的瑕疵会被放大,这时就可以直观的看到结果。比如使用 Nearest 这种默认的重采样方法来投影生成高程数据,然后用来制作3D模型,会发现生成的模型有明显的条纹,这会让成果咋一看有点“脏脏”的,放大仔细看就一条一条的黑色纹路(有的可能是斜条纹)。


生成的有错误条纹的3D模型Note:聪明的读者可能发现,说:“裁剪之后投影有问题,那我投影之后再裁剪不就行了。”经过我的测试,还是不行。在这里我也不敢肯定的说:就是重采样的原因。我不了解具体的原理,只是因为通过修改重采样的方法而解决了问题,经验之谈。所以下面就来说说如何在 QGIS 和 ArcGIS 中使用正确的重采样方式。1.2 ArcGIS 重采样

那现在只有回过头来看看 ArcGIS 中的几种栅格投影重采样方式;ArcGIS 10.3版本在给栅格投影的时候有四种重采样选项,分别是Cubic、Blinear、Nearest、Majority,其中 Nearest 是默认方法,各采样方式的效果如下:Note:以下的效果对比图都不是高程灰度图,而是山体阴影图。因为不管是使用哪种方式重采样后,高程灰度图肉眼都看不出区别的,所以需要使用 GIS 软件构建山体阴影来放大采样后发生的变化。


左:Cubic;右:Blinear


左:Nearest;右:Majority使用 Nearest 这种默认方法生成的高程数据会出现较宽的条纹(仔细看),这个条纹最后会反映到了 Blender 里面,然后变成3D模型上的一条条黑线。所以当使用 ArcGIS 做栅格投影时,不能使用默认的 Nearest 重采样方法,应该使用 Cubic 或者 Blinear 方法。1.3 QGIS 重采样

QGIS 在做栅格投影时,可选的重采样方法较多,有数十种。同样的,QGIS 中默认的重采样方法也是 Nearest Neighbour ,和 ArcGIS 的默认重采样方法是一样的,所以重采样后的效果也是不太好的,经过测试,使用 Lanczos Windowed Sinc 方法重采样效果是最好的,海怪本人也是使用的这种采样方法。


左边是 Nearest Neighbour 重采样效果,右边是 Lanczos Windowed Sinc。Note:至于为什么会这样我也不知道,我在网上也没有找到相关的信息,反正以后注意改变重采样的方法就行。最后

本章是一个操作流程的升级章节,规避了处理原始高程数据可能出现的问题,部分高程数据可能不会出现这种问题,但是以防万一,推荐在 QGIS 中投影的时候指定 Lanczos Windowed Sinc 重采样方法,而在 ArcGIS 中使用三次卷积(Cubic)或者双线性(Blinear);其实开始的时候这个东西没有单独的作为一章,但是下一章中又会出现关于重采样导致的不同问题,所以为了不发生混淆,投影的重采样方法改进问题就单独一章来讲解。(另外一篇已经写好了,明天早上发出来)看完本章你可以知道:大致了解重采样是个什么东西;几种常见的重采样方法:最临近、线性、卷积等;栅格投影时不同的重采样方法对最终成果有影响;在投影时使用合适的重采样方法。资料下载:提供原始高程数据以及处理好后的高程数据;1 原始高程数据:原始未投影 TIFF 数据。2 成果高程数据:完成所有处理步骤,可直接建模的 TIFF 数据。Blender 工程文件;系列教程PDF文档;Blender2.93 windows 平台安装包。