【说明】
最近本人在绘制各种专题底图时,想将底图制成3d的地形图,使专题图更加美观。于是在网上寻找一些相应的教程,最终绘制出了如下的地形图。在此,记录一下自己的绘图过程,并希望可以对之后需要绘制此类地图的朋友提供一个参考教程。(本人为初学者,若有不正确或可以改进的地方,欢迎私聊指出。)
0.准备数据
工欲善其事,必先利其器。
在绘制地图前,我们需要先准备两个数据。
1.绘制区域的矢量数据(shp)(获取源推荐全国地理信息资源目录服务系统)
2.绘制区域的数字高程模型(DEM)(获取源推荐地理空间数据云)
矢量数据不用多说,我的建议是既然选择了GIS这个行业,那中国相对应的矢量数据,应该需要打包一份,准备在自己的电脑上,便于随时取用。数字高程模型,可能对于刚踏上GIS学习之路的同学有些陌生,我们可以简单地将它理解为带有高程数据的栅格数据,即每个像元都都有代表高程的数字信息。
1.数据的导入与裁剪
下载好,我们将数据导入到GIS的数据框中。导入时,可能会弹出警告。弹出警告的原因是因为,你所下载的两个源数据的所在坐标系,与你目前Arcmap数据框的坐标系不同而导致。弹出这个警告的意思是,我会自动将当前数据的坐标系转换为目前数据框所设置的坐标系来展示。我们直接点击关闭就好。但需要注意的是最后导出所呈现的数据的坐标系,是目前数据框所对应的坐标系,你如果对坐标系有要求,自己需要修改一下。
导入数据,我们发现,高程数据与矢量数据重叠在一起,但高程数据比我们打算绘制区域的范围要大一点。那么多余的部分,我们就需要裁剪掉一部分。
可能有的同学会问,为什么我看不见我所导入的矢量数据呢?这是因为Arcmap的数据显示是按图层从上到下显示的,即上图中的画红线的地方,如果你的DEM的高程数据在你的你的矢量数据上方,盖住了你的矢量数据,那你自然就看不见你导入的矢量数据。你需要拖动你的图层名,来改变顺序。
打开工具箱,依次选择Spatial Analysis工具/提取分析/按掩膜提取(不同的版本,可能名字不一样,但大致的意思是一致的)。
双击打开,会出现一个新页面,很容易理解,输入栅格(我要裁剪谁),输入栅格数据或要素掩膜数据(以谁的范围为准),输出栅格(裁剪之后的栅格数据放在哪里)。
依次输入我们的数字高程数据,矢量数据和保存地址,再点击确定。wait一会,使用工具箱的工具时都需要等待一会,来等工具处理完成,处理完成后会自动给你加入到你的图层中,我们将添加的图层给拖到最上面显示出来,取消另外两个图层的显示。如下图所示。
我们可以直接点击该数据的色带,来选一个我们喜欢的颜色,如果感觉颜色所显示的高度不对,我们可以点击反向,来改变色带所颜色变化的方向。
第一步到此完成,展示一下我所完成的效果。
2.山体阴影的生成
山体阴影的官方解释是通过考虑光照源的角度和阴影,根据表面栅格创建地貌晕渲。看不懂没关系,我们就理解成通过数字高程模型,来模拟地形即可。
依次点击3d analyst工具/栅格表面/山体阴影,来打开我们所需要的工具。
此工具让我们输入栅格即可,就将我们第一步所完成的那个数据给输入进去。方位角,高度角,可以不用改动。模拟阴影可选可不选。
Z因子是最关键的一个部分,如果你使用的投影坐标系,那么此处z因子你可以直接填为1。如果你使用的是地理坐标系,那么你需要进行一个单位的换算。这是为什么呢?z因子的官方定义是一个表面 z 单位中地面 x,y 单位的数量。如何理解?因为我们导入的数字高程模型,它的高程数据是用米单位来表达的,即z轴为米制单位。如果你是投影坐标系,那么你的x轴y轴,都是米制单位,此时z:x=1:1。如果是地理坐标系就不同了,因为你的x轴和y轴是度,你z因子还是1的话,那就是z:x=1:1°。不同地理坐标系,不同的经纬度下,1°所代表长度是不相同的。这里我使用的地理坐标系是WGS1984,假设在赤道,一度就是111,320米,此时z:x就等于1米比上111,320米。
所以,我们需要通过z因子来统一单位,这就是z因子存在的意义 。我使用的坐标系是WGS1984,所在的地区是湖北省,我们可以求助一下ai让它帮我们计算,此时1°代表多少米。这里是96,000米。即需要用1/96000,即z因子约为0.00001。即高程的一米/0.00001约为一度,与xy的坐标系单位大致一致。
输入数字高程影像,再输入z因子,点击确定。wait一下,最后可以得到下图所示。山体的位置大致正确。
此外,如果你觉得你的山体不明显,你也可以适当的提高z因子的大小或者数量级,z因子数值越高,其山体越明显
错误示例:如果地理坐标系下z因子设为1。最终可能会如下图所示,会产生非常多的褶皱,明显与地理环境不符合。
3.山体影像的调整
有了山体影像之后,我们发现它将我们原来的底图也给覆盖住了,于是我们需要调整一下它的透明度。右键左边图层目录的山体影像的图层,点击属性,会弹出一个对话框。 点击显示,再选择透明度,透明度越高,此图层就越透明,此处我设置的是80%,你们可以通过成图效果,来调整这个透明度的变化。点击应用,点击确定。最后成图效果如下
我们放大看一下我们的山体
不显示山体阴影图层,如下
导出我们的地图为图片,可以发现经过我们一系列的操作,地图变得更加立体,更加美观。
4.总结
总得来说,绘制3d地形图的流程较为简单,可以分为以下几个操作,获取数据——>导入数据——>数据的裁剪——>山体阴影的生成和调整———>成图。
到此就结束了,内容中或许会有一些错误,希望大家批评指出。也欢迎大家过程中有问题或不懂的地方评论或私聊我,我会尽我所能为大家解答。