让我们对地形动动手脚

前言

与地理信息系统(GIS, Geographic information system)相关的,如建筑、规划、景观设计、防灾等领域的模型,地形模型是重中之重。因为一个项目模型中中,地形数据的存在不仅让模型表达的更真实,还能结合地形做一些基于地形的GIS分析。

地形一般有两种,Grid(规则格网) 和 TIN(不规则三角网),他们是表示数字高程模型的两种方法。

今天让我们对地形动动手脚,主要介绍一下SuperMap平台TIN地形操作。

DEM 地形简介

传统上常用 DEM 表达地形特征。DEM(Digital Elevation Model,数字高程模型)主要用于描述一个区域的地貌形态的空间分布情况,同时通过高程测量点(或从等高线中进行采样提取高程点)进行内插或模拟计算获得。 SuperMap 提供的地形构建功能通过点或者线数据插值生成 DEM 数据,结果为一个栅格数据集。

超图平台提供了三种方式实现地形的构建:

  1. 通过点数据(高程点)生成 DEM,实现思路与插值算法相似。
  2. 通过线数据(等高线)生成 DEM,可以强化一些地形特征,如山脊线、山谷线等。
  3. 通过点数据(高程点)和线数据(等高线)联合构建,由于加入了特征点高程信息,如山顶、洼地、山脊点、山谷点等,此种方式生成的 DEM 更具有立体感。

SuperMap 平台的二维栅格地形

SuperMap 平台的三维栅格地形

上两幅图是 SuperMap 平台范例数据 BeijingDEM 地形二维和三维的展示,整体效果感觉不错的,这种实际上是栅格(Grid)地形,是一种规则的格网。GRID在计算上比较简单,适用于采样点少的情况,但在地形平坦的地方存在大量数据冗余,不改变其格网大小也难以表达复杂地形。

TIN 地形

TIN(Triangulated Irregular Network) 指不规则三角网,TIN 可以减少数据冗余,表达经度更高,同时在计算效率方面比较有优势,在地理信息系统中有广泛应用。

生成 TIN 地形

桌面生成

  1. 第一步 工作空间管理器中,右击 DEM25 栅格数据集,选则生成场景缓存...

    生成场景缓存入口

  2. 第二步 参数设置,详见截图:

    生成场景缓存参数设置

  3. 第三步 生成场景缓存,生成过程和截图分别如图:

    生成场景缓存中
    TIN缓存目录结构

  4. 第四步 效果展示,左侧是 TIN 地形,右侧是 Grid 地形:

    效果对比

    效果对比2

TIN 地形数据处理

TIN 地形数据处理主要包括:合并 TIN 缓存、TIN 叠加海洋、TIN 生成大文件、TIN 缓存提取点数据等操作。

合并 TIN缓存

目前三维场景只允许加载一个Tin缓存数据(*.sct),若想加载多份Tin缓存数据,则需将多份数据合并为一个Tin缓存。合并Tin缓存功能能够将两个不同分辨率(块大小)的Tin缓存数据合并,最终生成一个Tin缓存文件。

在“数据”选项卡的“三维数据”组中,单击“合并Tin缓存”按钮,弹出“Tin缓存合并”对话框,如下图所示。

TIN缓存合并对话框

TIN 叠加海洋

根据精确的海岸线范围生成带海洋边界的Tin缓存,在TIN地形范围内指定矢量范围作为海洋效果的叠加区域。用矢量面构建地图,黑色代表陆地,白色代表海洋,然后生成全球剖分的三维缓存。三维缓存范围要和Tin地形的范围保持一致。

在“数据”选项卡>“三维数据”组中,单击“Tin地形数据”>“TIN叠加海洋”按钮,并弹出“Tin叠加海洋”对话框,选则叠加的矢量面,设置结果保存目录,点确定。成功之后加载到场景,且需要勾上场景属性的“海洋水体”设置。

TIN叠加海洋入口

TIN叠加海洋

TIN叠加海洋结果

TIN 生成混合大文件

TIN地形缓存数据分块存储在多个文件夹中,每个文件夹下又存有若干TIN缓存文件,场景需通过读取这些碎文件的方式实现加载浏览整个TIN地形模型。为了进一步提升TIN地形模型的加载浏览效率,程序提供“TIN生成混合大文件”功能,可以将存储在文件夹下的诸多碎文件生成为一个*.cf格式的TIN地形缓存混合大文件。

在“数据”选项卡的“三维数据”组中,单击“TIN地形”下拉按钮,在弹出的下拉菜单中选择“TIN生成混合大文件”,弹出“TIN生成混合大文件”对话框,如下图所示:

TIN生成混合大文件

生成成功后,在目标文件夹下生成了一份与源配置文件同名的配置文件(.SCT),每啊个文件夹下都生成一个以设定的缓存名称命名的紧凑缓存文件(.cf),示例结果如下图:

TIN生成混合大文件结果

TIN 缓存提取点数据

“TIN提取点数据”是获取点在指定TIN地形上的高程值,支持二维点和三维点。

在“数据”选项卡的“三维数据”组中,单击“TIN地形”下拉按钮,在弹出的下拉菜单中选择“提取点数据”,弹出“TIN缓存提取点”对话框,如下图所示:

提取点数据

  • 对于二维点,执行另存为操作,是将二维点转为三维点。
  • 暂不支持TIN混合文件上的点数据提取。

TIN 地形操作

TIN 地形操作主要包括:裁剪、挖洞、镶嵌、布尔运算、地形修改、叠加海洋、拉伸闭合体等操作。

  • 地形操作需要在场景中加载 TIN 地形缓存,操作示范如下:

    添加地形缓存

  • 历史记录:在SuperMap iDesktop软件上对TIN地形操作后,能保留历史记录。点击“TIN裁剪”对话框中的“撤回”按钮,能回滚到离当前时间节点最近一次操作的历史记录处。

Tin 地形裁剪

为了配合DEM 生成TIN地形缓存的使用,对TIN地形缓存数据进行多种形式的裁剪操作,更好的利用数据。

  1. 在场景中加载TIN地形缓存(文件格式为*.sct)。在图层管理器中,鼠标右键单击“地形图层”,选择菜单列表中添加地形缓存。
  2. 在图层管理器中选中地形缓存图层,右键单击“快速定位到本图层”,在场景窗口按住鼠标滚轮将相机调整至便于裁剪模型的视角。
  3. 在“对象操作”选项卡上的“TIN地形操作”组中,单击“裁剪”项,弹出“TIN裁剪”对话框,如下图所示:

    TIN裁剪对设置面板

    • 参数设置:单击“裁剪方式”组合框的下拉箭头,选择“保留区域内”或“保留区域外”一种裁剪方式。保留区域内裁剪方式是裁剪获取封闭区域内的TIN地形缓存,保留区域外裁剪方式是裁剪获取封闭区域外的TIN地形缓存。单击“约束边界”组合框的下拉箭头,选择“软约束”或“硬约束”一种约束方式。软约束是裁剪结果边界高程值和原来一致,保持不变;硬约束是裁剪结果边界高程和裁剪面边界高程值一致。
  4. 裁剪效果:

    裁剪效果

Tin 地形挖洞

在 TIN 地形上镂空一个洞,三维模型叠加显示,形成模型与地形匹配的效果。

  1. 在场景中加载TIN地形缓存(文件格式为*.sct)。在图层管理器中,鼠标右键单击“地形图层”,选择菜单列表中添加地形缓存。
  2. 在“对象操作”选项卡上的“TIN地形操作”组中,单击“挖洞”项,弹出“TIN挖洞”对话框,如下图所示:

    TIN挖洞

    • 挖洞面确定:单选“选择面”或“绘制面”确定挖洞面类型。当选择“绘制面”,工具栏提供了“矩形”、“多边形”和“导入”三种方法进行镶嵌面的绘制,

      • 矩形挖洞:鼠标左键单击“矩形挖洞”按钮,在场景中Tin地形上绘制需要挖洞的矩形区域。
      • 多边形挖洞:单击“多边形挖洞”按钮,在场景中Tin地形上绘制需要挖洞的多边形区域。
      • 选中对象区域挖洞:选择单个或多个二、三维面对象进行挖洞。SuperMap建议:先选择面对象,再单击“选中对象区域挖洞”按钮。
      • 导入按钮单击后弹出的对话框,导入面。
  3. 效果图:

    挖洞效果图

Tin 地形镶嵌

对已有的地形数据与模型之间不能严格的匹配上,存在公路、护坡被地形压盖或隧道洞口处被地形遮挡等问题。可通过TIN地形-镶嵌功能,利用模型的边界面与TIN地形进行镶嵌,使地形与模型能够很好的贴合。

  1. 利用“对象操作”选项卡>“模型操作”组中数据提取下的“提取边界”功能,提取被地形压盖或遮挡的模型边界面。
  2. 将获取到的面数据集添加到场景中,选择与地形进行镶嵌的面对象有多种方法,以下列举一种对于面对象较多的情况: 在“对象操作”选项卡上的“TIN地形操作”组中,单击“镶嵌”项,弹出“TIN镶嵌”对话框。

    TIN镶嵌

    • 镶嵌面确定:单选“选择面”或“绘制面”确定镶嵌面类型。当选择“绘制面”,工具栏提供了“矩形”、“多边形”和“导入”三种方法进行镶嵌面的绘制,其中导入按钮单击后弹出的对话框,如下图所示。

      导入镶嵌面

  3. 镶嵌效果

    • 镶嵌前:
      镶嵌前
    • 镶嵌后:
      镶嵌后

Tin 布尔运算

“布尔运算”功能是在场景中将TIN地形与模型数据进行求差运算或合并运算,得到新的TIN地形数据。目前只支持单模型的布尔运算。

  1. 加载数据源。数据源需要包含模型数据集和TIN地形数据。添加到场景中的示范效果如下:

    TIN地形和模型数据示范效果

  2. 打开布尔运算窗口。在“对象操作”选项卡上的“TIN地形操作”组中,单击“布尔运算”按钮,弹出布尔运算对话框如下:

    布尔运算

  3. 点击“确定“进行布尔运算。示例数据求差的运算结果如下:

    布尔运算结果

Tin 拉伸闭合体

“TIN地形拉伸闭合体”功能是对TIN地形向上拉伸至指定高程处,形成一个闭合体。该方法可以用于3D打印的实体模型构建。

  1. 添加TIN地形缓存数据。
  2. 在“对象操作”选项卡上的“TIN地形操作”组中,单击“拉伸闭合体”按钮,弹出“拉伸闭合体”对话框,如下图所示:

    拉伸闭合体设置

  3. 拉伸范围设置

    • 默认勾选“自定义范围”,自行设置拉伸闭合体范围,否则使用TIN地形的默认范围。
    • 拉伸范围自定义:拉伸范围可以通过“选择面”或“绘制面”进行确定,其中绘制面提供矩形、多边形、导入和移除功能。
  4. 拉伸对象的参数设置

    • 裁剪方式:包括保留区域内和保留区域外,默认为保留区域内。
    • 约束边界:包括硬约束和软约束,默认为软约束。
    • 拉伸高度设置:输入拉伸高度值或通过上下箭头调整拉伸高度值。
  5. 结果数据的存放
    • 数据源:自动生成“临时数据”数据源。
    • 数据集名称:输入字符串作为结果数据集的名称。
  6. 效果图

效果图

Tin 地形修改

“地形修改”功能实现对当前TIN地形的实时修改。该功能可绘制或导入多边形作为修改区域,修改后的地形通过调整高程值实时修改高度,同时该功能提供了对修改区域的管理,包括删除修改区域、导入修改区域和导出修改区域。

  1. 加载需要修改的地形数据。
  2. 打开TIN地形修改功能。在“对象操作”选项卡上的“TIN地形操作”组中,单击“地形修改”按钮,窗体右侧弹出TIN地形修改对话框。
  3. 修改区域设置。修改区域操作按钮依次为添加修改区域、删除修改区域、导入修改区域、保存修改区域。
    • 添加修改区域:点击添加按钮,直接在TIN地形上进行绘制多边形区域,作为修改区域。
    • 删除修改区域:删除选中的修改区域,同时取消了TIN地形修改操作。
    • 导入修改区域:导入已经存在的多边形区域作为修改区域,如果没有现有多边形,默认进行多边形构建。
    • 保存修改区域:保存进行TIN地形的修改区域。
  4. 修改区域设置成功后自动进行TIN地形修改。TIN地形修改对话框内出现调整高程值的功能,通过上下按钮或手动输入高程值,实时修改TIN地形高程。修改TIN地形示范如下:

    • 地形修改参数:
      TIN地形修改
    • 地形修改效果:
      地形修改结果

TIN 地形分析

TIN地形可以直接分层设色表达、坡度坡向分析、淹没分析。如果不支持,说明生成TIN缓存的时候没有勾选带法线图

TIN 地形分层设色

分层设色是地图可视化的常用方式,它通过一定的颜色变化次序或色调深浅来表达和区别三维数据的不同属性。超图平台支持对倾斜摄影模型、点云三维切片缓存(osgb)数据、TIN地形设置颜色表、透明度、显示区域、最大/最小可见值等参数,实现模型的分层设色表达;另外支持三维栅格体数据设置颜色表。

  1. 加载 TIN 地形缓存数据。
  2. TIN 地形缓存图层右键,弹出菜单选择属性,弹出 TIN 地形面板,选择分层设色

    TIN地形图层属性

    TIN地形属性面板

    • 显示区域:
      • 全部显示:默认为“全部显示”,即该图层模型全部参与分层设色表达。
      • 区域显示:勾选此项后,将鼠标移至场景区域时变为编辑划线状态,可在模型上点击勾绘一个多边形区域,表示该多边形区域内的模型显示分层设色,区域外不显示分层设色。
      • 选择区域:勾选此项后,激活“从数据集选择区域”的下拉框,选择当前工作空间打开的数据源、面/三维面数据集。当面数据集有多个多边形时,“SmID”数值最小的多边形显示分层设色,其他多边形不起作用。
    • 显示模式:提供了不显示、线填充、面填充、线面填充四种模式,点击右侧下拉框选择。
      • 不显示:默认不显示,即不进行分层设色表达。
      • 线填充:采用显示等值线的方式进行分层设色表达。
      • 面填充:采用面填充的方式进行分层设色表达。
      • 线面填充:采用等值线与面填充的方式进行分层设色表达。
    • 线颜色:点击右侧颜色下拉框,选择等值线的颜色方案。
    • 纹理颜色表:点击右侧颜色下拉框,选择填充面的颜色方案。
    • 透明度:用来设置分析区域填充纹理的透明度,默认值为 0。
    • 颜色表最小值:输入数字,用于设置纹理颜色表最左侧颜色所对应的高程/点云强度值,默认为模型高程/点云强度值的最小值。
    • 颜色表最大值:输入数字,用于设置纹理颜色表最右侧颜色所对应的高程/点云强度值,默认为模型高程/点云强度值的最小值。
    • 最小可见值:输入数字,用于设置参与分层设色表达的模型高程/点云强度值的最小值,默认为模型高程/点云强度值的最小值。小于该值的模型将不显示分层设色。
    • 最大可见值:输入数字,用于设置参与分层设色表达的模型高程/点云强度值的最大值,默认为模型高程/点云强度值的最大值。大于该值的模型将不显示分层设色。
      等值距:输入数字,用于设置等值线的间距,默认值为100米,表示每隔100米绘一条等值线。
  3. 分层设色效果图:

    分层设色效果图

TIN 坡度坡向分析

坡度和坡向是两个重要的地形特征因子,在地形表面分析中起到重要作用。其中,坡度是地表面上某一点的切面和水平面所成的夹角,坡度值越大,地势越陡峭;坡度值越小,地势越平坦。而坡度变化的方向称为坡向,指每个像元到其相邻像元方向上值的变化率最大的下坡方向,表示地表面某一位置斜坡方向变化的量度。

三维坡度坡向分析用于计算栅格数据集中各像元的坡度值,及像元坡度面的朝向。坡度用度数表示的分析结果的范围是0到90°;坡向计算的范围是0到360°,以正北方0°为开始,按顺时针移动,回到正北方以360°结束。

  1. 加载 TIN 地形缓存数据。
  2. TIN 地形缓存图层右键,弹出菜单选择属性,弹出 TIN 地形面板,选择坡度坡向分析
    坡度坡向分析面板

    • 显示区域:
      • 全部显示:默认为“全部显示”,即该图层模型全部参与坡度坡向分析。
      • 区域显示:勾选此项后,将鼠标移至场景区域时变为编辑划线状态,可在模型上点击勾绘一个多边形区域,表示该多边形区域内的模型显示坡度坡向,区域外不显示坡度坡向。
      • 选择区域:勾选此项后,激活“从数据集选择区域”的下拉框,选择当前工作空间打开的数据源、面/三维面数据集。当面数据集有多个多边形时,“SmID”数值最小的多边形显示坡度坡向,其他多边形不起作用。
    • 显示模式:用来设置提取结果的显示模式,可设置的显示模式有坡度、坡向、坡度与坡向三种。
    • 透明度:用来设置分析区域填充纹理的透明度,默认值为 0。
    • 颜色表:同来设置分析区域的填充颜色,对应区域的坡度不同,则显示的颜色不同。
    • 颜色表最小值:输入数字,用于设置纹理颜色表最左侧颜色所对应的高程/点云强度值,默认为模型高程/点云强度值的最小值。
    • 颜色表最大值:输入数字,用于设置纹理颜色表最右侧颜色所对应的高程/点云强度值,默认为模型高程/点云强度值的最小值。
    • 最小可见值:输入数字,用于设置参与分层设色表达的模型高程/点云强度值的最小值,默认为模型高程/点云强度值的最小值。小于该值的模型将不显示坡度坡向。
    • 最大可见值:输入数字,用于设置参与分层设色表达的模型高程/点云强度值的最大值,默认为模型高程/点云强度值的最大值。大于该值的模型将不显示坡度坡向。
    • 流动: 勾上坡向箭头会有流动效果。
  3. 坡度坡向分析效果图:

坡度坡向分析效果图

TIN 淹没分析

水淹分析是三维分析的一个重要方向,基于地形信息,它可以确定洪水淹没的范围、水深以及洪水在地理空间上的演进过程。目前,平台对倾斜摄影模型、TIN地形数据提供了展示淹没效果的功能,可实时模拟积水随时间变化的动态进展,从而快速判断内涝对交通、财产、人身可能造成的伤害。

  1. 加载 TIN 地形缓存数据。
  2. TIN 地形缓存图层右键,弹出菜单选择属性,弹出 TIN 地形面板,选择淹没分析

    淹没分析面板

    • 水体颜色表:点击右侧颜色下拉框,选择水体的颜色方案。
    • 透明度:点击右侧按钮弹出设置水体透明度的滑块,滑动滑块调节;也可直接输入0-100的数字。默认透明度为 0,表示水体完全不透明;随着数值增大,水体会变得越来越透明;最大值为 100,表示完全透明。
    • 当前水位高程:直接输入数字或点击“增加”“减少”的按钮调节当前水文高程。
    • 最大水位:输入数字表示水体淹没的最大高程。
    • 最小高程:此参数为自动获取且不可更改,为当前图层的高程最小值。
    • 最大高程:此参数为自动获取且不可更改,为当前图层的高程最大值。
    • 总时间(s):用于显示和设置水体从最小高程淹没到最大水位所需时间,单位为:秒。调整总时间,速度数值将发生变化。
    • 速度(m/s):用来显示和设置水体从最小高程淹没到最大水位的速度,单位为:m/s。调整速度,总时间将发生变化。
    • 播放控件:通过“开始”、“暂停”或“停止播放”按钮控制水体淹没模型的状态。
    • 循环播放:勾选该复选框后,在模拟水体淹没时,将重复执行播放操作,直到用户停止播放;若未选中该复选框,则在播放完毕后自动停止。
  3. 效果截图:

淹没分析效果

文章作者: zouyaoji
文章链接: https://zouyaoji.top/2018/04-let-us-modify-terrain/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 zouyaoji's Blog