介绍:

不论是智慧城市、数字孪生、指控系统、边海防管控、智慧军营、遥感图像识别等等,基于地图的相关可视化开发越来越重要了。对于我们Web端地理信息系统开发来说,GIS数据来源不一,结构各异,首先要去处理的,就是将这些多源异构的数据处理成一个统一的格式(标准),然后才能丝滑流畅地加载并呈现在浏览器上,就目前来看,三维的地理信息系统大多数采用开源引擎Cesium来做开发的,因此在此记录一下最近一直在学习的一款数据处理工具-CesiumLab。
Cesium只支持了glb/gltf格式模型的加载,但建模师给我们建的模型大多数却是fbx、obj等等。此外,GIS数据中的建筑物轮廓、道路、桥梁、水域等则是点、线、面的shp数据,倾斜摄影技术得到的实景三维模型是osgb格式,点云数据多为las格式的,为把这些多源异构的模型数据统一起来,并综合考虑浏览器的渲染能力,Cesium采用了3DTiles格式来将这些数据的格式标准统一起来,并依据分层、分块的处理原则来进行数据处理和加载展示(类似于地图切片,分层加载)。+
ps:目前CesiumLab已经更新3.0版本了,图例使用的还是2.几版本的

1. shp矢量数据处理

在这里插入图片描述
上面的系统是不是看上去还是挺炫酷的,在浏览器上看就像是还原了城市的整体布局,包括城市的建筑物、道路、区域边界等。其实这些数据都可以运用shp数据再加工产生的,那么shp数据从哪里下载呢,我一般是从这个网站上下载的:extract.bbbike.org
在这里插入图片描述

extract.bbbike.org网站界面如上图所示,下载的数据类型选择ShapeFile(Esri),然后在地图上拖动到你想要下载的数据范围,框选出你想要的下载区域,填写你的邮箱地址,过个七八分钟你的邮箱就会收到下载的压缩包了。再此提醒一句,道路、铁路、桥梁等数据这里面下的还是比较全的,但是建筑轮廓数据在中国区域是非常不全且几乎没有属性信息(包括楼层高度、名称等等),所以如果想要下载建筑轮廓数据还是推荐用咸鱼找人代下,像北京的一个区的数据可能也就二三十块钱。
下载好的shp数据都是点、线、面类型的,如果想要呈现出立体的三维效果需要根据面数据的某些字段信息进行拉伸拔高。我们把下载的数据放到ArcGis软件中查看,可以发现shp数据含有属性信息,如下图,打开杭州市建筑矢量数据的属性表,里面有floor属性,我们可以大致的根据floor按照乘以某一系数的比例拉高建筑,加载后得到的就是第一个系统截图的城市模型了。Cesium推荐采用3Dtiles格式来加载数据,核心思想就是分级、分块,类似于地图切片一样,根据层级来加载。
在这里插入图片描述
CesiumLab的数据处理界面如图所示,处理shp数据选择通用模型处理,然后选择shp格式(ps:通用模型处理模块主要处理shp和人工建模fbx、obj等格式),然后选择模型拉伸字段,我们可以根据字段乘以固定值对地块进行拉伸,然后选择文件夹导出数据,导出后的数据就可以在Cesium中加载展示了。
加载3Dtiles数据方法是加载索引文件tileset.json,根据tileset.json和设置的最大屏幕空间误差值来决定加载模型的显示精度。加载处理好的shp白膜如下所示:
在这里插入图片描述

2.人工模型数据处理

如果我们的项目是专注于某个楼宇或者小范围场景,并需要去展示模型的具体细节(比如要查看某个楼层的布局、视频监控、室内场景的漫游等),我们通常需要建模工程师去人工建模。人工建模的数据格式也是各种各样,种类繁多的。一般来说,如果模型是一个较大的场景,或者说是一个层次细节很丰富的楼快(如楼内每一层都有精细建模),那么模型的数据量比较大,此时就需要对三维模型进行处理,转换为适合Web端展示的数据格式。
处理通用模型的软件目前免费使用的也有很多,但是本人还是十分推荐使用CesiumLab来进行数据处理,原因在于:CesiumLab处理出的3Dtiles数据不仅仅做了数据转换,而且会自动生成一个scenetree.json,这个json包含了模型的所有层次结构,我们WebGis开发仅仅通过读取这个json数据就可以在不具备建模知识或者使用专业的建模软件浏览模型的基础上了解建模师建模时的整体架构。scenetree.json的数据结构如下:
在这里插入图片描述
读取了这个文件,便可以根据children里面的嵌套来了解整个模型的层次结构了。最为关键的一点:我们可以根据每个结构的唯一id值或者name值来对模型的构建进行操作。比如说楼块某一层的抽拉效果、某些楼层的隐藏、某些重点建筑物的颜色加深标注等等,如楼层抽拉的效果如下所示:
在这里插入图片描述

3.倾斜摄影数据处理

实景三维模型就是无人机倾斜摄影经过数据处理后得到的模型,随着科技的不断发展,无人机开始被广泛应用于人类生活的方方面面。在民用领域,无人机被用来进行灾难救援、野生动物观察、监控传染病、地形图测绘、影视拍摄等等。在军用领域,无人机则被应用于战场的侦察与监控、目标定位、边境巡逻等等。特别值得一提的是,在如今如火如荼的数字城市建设中,作为基础数据的城市实景三维模型就是由无人机航拍获得的海量相片通过三维重建得到的,借助于倾斜摄影测量相关技术手段便可大范围、高质量、低成本地获取城市真实的全景风貌。
倾斜摄影测量技术是近些年来测绘科学领域发展起来的一项高新技术,它采用大范围、高分辨率、高精度的方式感知目标区域的复杂场景,运用高效的数据采集仪器与设备以获取海量航拍相片和像控点点位信息,借助于倾斜摄影测量专业的数据处理软件对目标区域进行实景三维模型的重建,保证了三维模型的真实效果和测量精度。
简而言之倾斜摄影就是在无人机上搭载多个镜头(一般为3或5个),这些镜头中居中的一个为垂直角度采集影像,其余为倾斜角度采集影像,垂直姿态拍摄到的相片称为正片,倾斜角度获取的相片被称为斜片。如下图展示了倾斜影像的获取和同一区域不同角度拍摄的相片。
在这里插入图片描述
在这里插入图片描述
倾斜摄影测量建模流程一般分为五个步骤,由原始影像经过特征点匹配、空中三角测量、多基线多视匹配、三角网构建、自动纹理映射后得到三维模型成果。
倾斜摄影建模软件目前使用较多的是ContextCapture软件和大疆智图软件,处理后的数据格式如下所示:
在这里插入图片描述
通过CesiumLab软件的倾斜模型转换工具可以把海量数据的实景三维模型转换为3DTiles格式,在输入中数据路径选择原始数据的DATA,空间参考CeisumLab会自动读取metadata.xml文件,实景三维模型是自带空间坐标数据的,也就是说你采集的数据位置在哪,模型的坐标信息就在哪。
处理后会生成与上述类似的3DTiles数据。实景三维模型是真实还原场景的原始样貌,所以我们可以衍生出很多应用,比如说视频融合。
视频融合就是把实时的视频贴到模型上去,比如说在一个十字路口,我们对视频进行拼接,然后直接按照固定点去把视频完整的贴合在地面,这样就展示了静中有动,动中有静的真实态势。目前这种技术在公安系统中颇为常见。
不仅如此,虽然说实景三维模型只是一个徒有表像的空壳,但是我们可以人为地进行单体化操作,对每一个建筑,甚至于每一个楼层都进行单体化,然后赋予其属性信息,这样我们在界面就可以用可视化的方式查看每一个建筑的详细信息了。
在这里插入图片描述

4.BIM模型处理

BIM模型是一种能够存储建筑项目对象信息的特殊三维模型,BIM模型相比较于人工建模而言更为复杂,需要考虑建筑构件之间的相互关系,比如说,BIM模型完整描述了工程项目的设计信息(类型、构成材料、性能等级等),施工信息(施工方案与执行情况、工序安排和技术要求、进度、造价、质量、施工安全防护以及施工所用的人工、材料、机械台班等),维护信息(工程安全性能、材料耐久性能、管理维修等)。
值得注意的一点:用CesiumLab处理BIM模型需要借助一个它自己的插件,用固定版本的Revit导出固定的格式,然后再用CesiumLab进行数据处理。并且,CesiumLab的BIM处理工具需要购买,或者申请权限,申请权限需要填写个人信息和单位信息,但是权限只有三天的时间。处理后的BIM数据如下:
在这里插入图片描述

5.点云模型处理

点云数据一般采用车载激光扫描系统或者无人机去采集,本人对点云了解甚少,在此仅贴一张点云数据呈现效果作罢。
在这里插入图片描述
数据处理一直是CesiumLab软件的核心,它不仅提供了上述功能,还支持shp/kml/czml等数据的导入、浏览、数据发布服务等,与此同时,它还提供了一款基于Cesium二次开发的工具包——EarthSDK,EarthSDK封装了很多GIS常用的功能,如:视域分析/天气效果/热力图/标签标绘/VR模式等,是一款非常好用的开发工具。
本文仅对此软件的大致用途进行了简单学习和使用,具体数据处理的参数配置与使用方法,官方的文档更为详细。

Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐