超图三维GIS和WebGIS网课教程的一些笔记。内容包含了目前GIS三维领域和WebGIS三维的绝大部分基本知识和应用场景案例。
一、初级三维GIS
1.1 大规模点云处理及优化
暂时略过,项目中没有遇到过直接加载点云数据
1.2 倾斜摄影数据获取、对接、处理、优化
1. 获取:航拍 → 空三加密 → 点云 → TIN → 白膜DSM → 成品三维模型
2. 对接:在SuperMap iDesktop里面如何加载倾斜摄影模型 (略过)
3. 处理: 效果修补、单体化、优化
(1)修补 — 在idesktop的“对象操作”里进行
对模型进行裁剪、挖洞、填补、水面化等操作(类似对二维矢量面进行叠加分析的裁剪合并啥的,只是这个是对一个三维模型),在iDesktop的“对象操作”功能区中进行操作。水面化的效果如下:
图: 倾斜摄影水面效果修补
(2)单体化方法
① 切割单体化:整个的倾斜摄影模型,切割成一个个单独的模型
② ID单体化:超图自己的一个解决方案。过程:搞一个矢量面图层,叠在倾斜摄影上,然后把每个矢量面的ID值赋给覆盖了的倾斜摄影顶点上,生成S3M数据格式,这样倾斜摄影TIN网每一个顶点都多了一个ID属性,就可以拿来作为单体化判断依据。(这样会不会大幅增加数据量?每一个顶点都多了个字段)
③ 动态单体化: 和ID单体化的区别就是不会生成S3M格式的数据来加载,其他原理是一样的。和Cesium的单体化方案一样,就是根据矢量面数据生成一个看不见的ClassificationPrimitive自动套在倾斜摄影模型上,详细代码见我另一篇博客:Cesium纯代码实现倾斜摄影单体化查询
(3)优化(idesktop的“三维对象”→“数据处理”里)
优化的目的:更快加载倾斜摄影模型
① 合并根节点:其实就是降低分辨率,把四个结点加权方法合并为一个节点,类似深度学习的卷积操作。
② 压缩纹理:对贴图图片进行压缩,因为有时候一个三维模型的结构数据很小就几十KB,贴图倒是有10多M。
③ 切片:超图就是S3M格式,Cesium就是3dtiles格式
④ 分布式存储
1.3 BIM数据的对接、坐标、属性编辑、优化
暂时略过,项目中还没遇到加载BIM数据的
1.4 3DMax数据
暂时略过,项目中还没遇到加载3D Max数据的
1.5 三维场模型
用来表达连续三维空间的数据类型,主要包含:TIM和体元栅格
1. TIM模型:(连续不规则四角网,TIN模型的升级版)
应用领域:地质体。 TIN用来表达连续的地形表面,但是地质体在地下还有结构,所以要用到TIM。关于TIN数据格式,在1.6中有详细介绍。
图:TIM模型
2. 体元栅格模型 Voxel Grid
应用领域:热力图的三维形式,如:温度、信号强度、气压、风速等等。
图:体元栅格应用
3. 基于2D数据的3D建模
本质:获取二维面图层各个Geometry的高度,然后拉伸为3D的建筑。获取高度的方法如下:
① 现实中测量后,手动赋高度值
② 在有倾斜摄影模型的情况下,通过计算倾斜摄影模型和地形的高差,求得高度。
1.6 地形数据的处理与应用
1. 地形数据的类型:
规则格网、不规则格网TIN
① 规则格网
缺点:地形起伏大的地方表现力不足,起伏小的地方数据冗余
主要使用的数据格式:tiff , tif , img, grid, ecw
图: 规则格网地形
② 不规则三角网TIN
由规则格网生成TIN缓存而得来。
图:不规则三角网地形
2. 地形数据的处理
裁剪、边缘和断崖的平滑处理
1.7 多源数据融合
1. 坐标系转换(已知坐标系)、坐标配准(未知坐标系)
2 地形的修改: TIN地形镶嵌(idesktop里面操作)
3. 倾斜摄影上叠加三维模型:倾斜摄影压平(idesktop操作)
4. 倾斜摄影镶嵌:挖山修路
5. 布尔运算,求交:隧道模型和地形模型求差集,挖隧道修路
1.8 三维场景的搭建与发布
1. 搭建
图: 三维场景建立的流程
GIS三维场景性能的评价指标:FPS,低于25则建议优化
三维场景优化的主要手段:缓存、边界反走样(抗锯齿)、图层的最大最小可见高度和距离
2. 发布
超图用iserver/iobject发布;三维静态资源用tomcat等发布,二维图层用geoserver发布OGC标准的地图服务。
1.9 Cesium.js(supermap改进版)简介
没啥用,很多功能需要搭配iserver服务器实现,买不起iserver。建议直接看Cesium官网的开源示例。
二、中级三维GIS
2.1 BIM:概述、制作、对接、问题、性能优化
工作没接触过,暂时跳过
2.2 3ds max:概述、制作、对接、性能优化
工作没接触过,暂时跳过
2.3 倾斜摄影:概述、制作、对接、问题、性能优化
1. 概述、制作、对接:略
2. 优化
① 切片:3dtiles
② 压缩单体化
③ 合并根节点: tiles文件夹过多,数据过于琐碎
④ 生成大文件:把所有的tiles文件存到.db文件夹中,通过sqlite来读取 (pc和移动端适用)
2.4 模型的常用处理
1. 布尔运算
三维模型之间和三维模型与图层之间的裁剪、合并、求交运算。
2. 矢量数据提取
从三维模型中提取二维数据:就是对模型做一个剖切,然后获取截面的矢量面数据。如下图所示
图: 三维模型提取二维结构数据
3. 模型操作
提取截面、拉伸、提取边界
4. 模型编辑
模型平移、旋转
2.5 二三维缓存详解
0. 缓存概述
缓存的生成的几个主要配置项:
① 纹理压缩、
② 切片范围(单位切片代表的面积)
③ 过滤阈值(如:把几个单位融为一个单位)
④ LOD层级数量
1. 矢量缓存
现在用的很少了
2. 模型缓存
Cesium: *.b3dm, *i3dm ( 3DTiles)
3. 影像缓存
.png的LOD切片:先分层,再分块。(四叉树方法剖分,一切为四)
图:影像切片规则
4. 地形缓存
Cesium: .terrain格式LOD切片
5. 地图缓存
① 栅格瓦片:应用场景,如遥感影像切片
② 矢量切片 (maobox的mvt矢量地图切片):应用场景,如百度地图可以在地图工坊自定义地图的显示方法。
2.6 iServer的使用
(贵,用不起,详细操作不看了,记录一些通用的GIS服务器标准)
1. 功能
① 地图服务:发布地图,专题图、地形;
② 数据服务:数据的增改删查、动态标绘;
③ 分析服务:叠加分析、缓冲区分析、插值分析、网络分析、路径分析;
④ AI服务:分布式、计算机视觉分析、等;
图 :超图iServer服务器的功能列表
2. 数据安全控制
① 基本操作:权限控制,登录密码,加载数据密码,token,等。想给GIS数据加密貌似没有,毕竟百度高德之类的大厂地图也可以被爬下来数据。
② GIS专属加密操作:坐标系加密。
2.7 Cesium的使用
详见第三、第四章节部分
2.8 GIS行业赋能案例:BIM、倾斜摄影、城市设计
1. BIM案例
应用项目场景:建筑施工进度管理、建筑与设备维护管理。
具体功能有:点击属性查询
2. 倾斜摄影案例
应用项目场景:社区管理
具体功能:单体化点击属性查询、单体化语义分割
图: 倾斜摄影单体化语义分割(手动分割,非AI)
3. 城市设计案例
① 案例1 :【拆迁分析】
图: GIS在城市规划设计的应用案例1
② 案例2:【模拟建设】
图: GIS在城市规划设计的应用案例2
2.9 三维可见性分析:通视、可视域、天际线、视频投放
1. 通视分析
概念:从一个点出发,是否可以看到某个点。如下图:从亭子观察旁边大楼的多个点位,绿色的为可见,红色为不可见。
图: 通视分析
2. 可视域分析
概念:从某点出发,是否可以看见某个范围。
图: 可视域分析
3. 天际线
不解释了,很基础
4. 视频投放
概念:在场景中插入一个视频
图: 可视域分析
2.10 三维空间分析:TIN地形、剖面、坡度坡向、挖填方、开敞度、日照、box裁剪、淹没、兴趣点
不解释了,很基础
2.11 三维管网
项目没遇到过,暂时不看
2.12 三维动态图层
图: 动态图层
2.13 三维标绘与动态推演
在一些项目里面这个功能挺核心的,如抢险救灾、环境污染等。
1. 主要应用领域
实时指挥调度
2. 核心功能
可交互、可编辑、可实时、可模拟推演
3. 实现
1)三维标绘的标号:剪头标号 + 警示标号
2)超图自己封装的Plotlayer类来实现,需要配合iserver发布的数据才可以。
图: 三维标绘 + 动态推演
三、Cesium.js 初级
参考: http://support.supermap.com.cn:8090/webgl/examples/webgl/examples.html
四、Vue3 + Cesium.js项目实训
参考: SuperMap_iClient3D_Vue_for_WebGL (supermapol.com)
完结 2022.5.24