说说“黑神话”也离不开的GIS三维数据

数字政通--三维GIS应用中的常见数据模型类型简介

在三维可视化行业,或者CIM、数字孪生、元宇宙等概念中,其核心技术支撑都离不开三维GIS这个基础底座。而三维GIS,又是以各式各样的三维模型为数据载体。这些数据并不仅仅局限于GIS领域,甚至本身就是其他行业的数字产品,但是我们将其汇聚在三维GIS场景中,展示它们,分析它们,帮助我们进行决策,解决实际的应用问题。

那么我们常见的数据模型类型有哪些呢?

1.倾斜摄影测量数据模型

如果非要选一个GIS领域中代表性的三维模型,那么一定就是倾斜摄影测量数据模型。其具备生产效率高、真实性强等优点。

但是倾斜摄影数据也有其缺点:

(1)其最大的缺点就是倾斜摄影数据本质上还是一张皮虽然比DEM这种2.5D数据的皮要好不少,是真正基于三维重建的模型数据;但是这也意味着其数据缺少语义信息,既不能像矢量数据那样基于特征进行空间分析,也无法像栅格数据那样基于数据连续性进行空间查询,只能完全基于三维空间的几何运算。

这样的特点使得倾斜摄影数据很难与实际的业务需求进行结合,难以将其作为各类应用场景的基础数据。

(2)另一方面,即使是在可视化方面,倾斜摄影数据也不是没有缺点,主要体现在两点:

  • 倾斜摄影数据很真实,但仅仅是照片那种真实。如果我们玩过3A游戏大作就明白,这种效果与那种具备光影感的渲染场景还是有不少差距的。从另一个角度来说,一些人工建模的材质效果是基于物理渲染的,附带各种光影感;而倾斜摄影数据的光影效果已经固定成纹理,很难再参与光照计算将其改善为更逼真的物理效果。
  • 受制于三维重建技术,倾斜摄影数据往往非常平滑,难以表达锐利的特征。从地面突出的树木、路灯或者指示牌往往与附近的物体粘连到一起,或者干脆悬浮空中;而类似于建筑物这种需要非常平坦的表面又不够平整,总是能看出一定的起伏。因此,倾斜摄影数据往往是从较远的视角看非常逼真,但是拉近细看就会露出马脚。因此,倾斜摄影数据往往需要二次编辑加工,才能获得比较好的近视角效果。

因此,以作者的观点来看,倾斜摄影数据适合一定程度的展示,比如现在Google Earth上的很多国外城市的三维模型就是倾斜摄影数据。但是如果要精细化展示或者与业务相结合,最好进行二次编辑处理,或者与其他数据相结合

2.倾斜单体化模型

为了改进倾斜摄影模型数据在实际GIS场景应用中诸多的缺点,一个非常热门的优化方向就是单体化。

所谓单体化,是指让倾斜摄影数据像矢量数据那样,具备要素特征,进而可以关联属性,进行空间查询和空间分析。

换句话说,我们需要给倾斜摄影数据增加一些语义,能够正确区分建筑物、道路、绿地、水系以及城市部件等地物要素,进而很好的关联业务,产生实际的应用价值。

以作者的经验总结,倾斜单体化模型的实现可以有以下四种方式:

2.1物理切割单体化

既然倾斜摄影模型数据上的地物要素构建的有好有差,那么我们可以将比较好的地物要素从倾斜摄影模型上裁剪下来。

什么是比较好的地物要素呢?——答案是,建筑物。类似道路、绿地、水系这些地物要素也是依据地形的(影像中已有,无需单体化),而城市部件这些要素倾斜摄影往往又无能为力(空洞较多、且不够尖锐等)。

那么,针对建筑物我们如何进行切割单体化呢?——通过建筑物矢量帮助我们进行空间计算,将建筑物矢量范围内的连续的三角面从倾斜摄影模型上截取出来,从而实现单体化。

2.2 矢量套和绘制单体化

如果不想通过矢量进行真实的物理切割,那么也可以考虑通过三维图形技术来实现单体化。

其原理是在进行三维渲染时,将矢量面的几何数据传递到GPU中,判断每个顶点是否在其范围内。如果在范围内,就高亮该区域显示的颜色;或者,使用类似阴影体(Shadow Volume,三维图形中一种常见的生成阴影的算法)的技术,来使矢量的单体化区域高亮。在另一方面,由于矢量本身是具有属性数据的,这个属性数据也可以作为这个单体化区域的属性数据。

矢量单体化可以有另外一种类似的较为简单的实现方案:可以绘制包裹住单体化区域的透明带颜色的几何体。平时该几何体隐藏,在选中时就进行显示。当然,这个几何体也是基于矢量生成的。这种方案比较适合相对规整的建筑物三维物体对象。

不过,无论是哪种实现方案,都离不开与矢量数据的聚合。这种单体化方式实际上是将二维矢量面和三维倾斜摄影模型结合起来了,因此可以充分利用传统二维GIS矢量数据的查询、计算与分析等能力,从而实现了与GIS场景业务的关联。而且这种方案主要是采用了计算机图形技术的实现,在保证了实时性和效率的前提下实现难度也不是很高,因此也算是一种不错的解决方案。

2.3  ID单体化

所谓ID单体化,是指给倾斜摄影模型的每个想要单体化的区域的连续网格赋予一个特定的ID,这样在选中的时候我们获取到这个ID并对其高亮显示。

具体来说,这需要在数据层面和渲染层面的配合。在数据层面,我们需要知道模型上单体化区域的顶点,并对其增加一个自定义的ID属性。这样在进入三维渲染时,通过帧缓存技术我们可以在渲染画面之外额外再渲染一帧ID纹理图。拾取选中实质上就是采样这个ID纹理图的值,并将顶点ID是这个值的顶点颜色高亮显示。

在作者看来,这个单体化方案比较复杂,需要同时从数据和渲染上两个维度进行改进才能完全实现。但是这个方案对性能影响最小,不用再聚合一个二维矢量数据,是一个完全从三维角度出发提出的解决方案。实际上,Cesium和Cesium开发的3DTiles格式就完全实现了这种思路,在这个数据格式中,每个瓦片数据都定义了一个名为BATCHID的顶点属性,并将其关联上一个属性表BatchTable。

另外,这种单体化方案用在倾斜摄影数据上最大的缺点就是需要进行预处理,而且处理难度还不低。事实上,这个预处理过程往往就是采用矢量单体化的原理来实现,既然如此还不如直接使用矢量单体化的方案。不过,ID单体化的原理可以用在其他类型的三维模型,因为很多三维模型是按照一个物体要素为单位来建立的,它们是天然的单体化模型。

2.4 模型重建单体化

这种单体化的思路是,既然倾斜摄影重建的模型有各种各样的缺点,那么干脆就加入人工干预,重新构建单体化三维模型。

不过这种人工干预并不是像在3D Max那种三维建模软件那样,根据人工建模师自己的判断进行建模,而是基于数字摄影测量的双像立体测图的原理,在立体模型中采集单体化的三维模型。双像立体测图是传统航空摄影测量生产4D产品的重要阶段,可用于采集DLG和DEM。现在有了倾斜摄影测量方法,使得从立体上采集地物要素成为了可能。

我们在前面论述过,倾斜摄影模型是使用三维重建技术进行自动化构建的,所以总是会显得很平滑,对锐利或者突变区域的表现度不够,或者建模错误。使用立体测图采集单体化的好处是其操作是人工进行的,可以采集出横平竖直的三维模型,尤其是对于建筑物来说。这对于可视化的效果是非常大的提升。另外,由于这个采集的过程是人工操作的,因此天然就将地物要素单体化出来,不仅仅是建筑物,一些比较复杂的基础设施(例如高架、桥梁),或者城市部件(例如路灯、指示牌)等都可以进行采集,这无疑大大扩展了倾斜摄影的技术在GIS场景中应用。

当然,这个单体化方案也是有缺点的。最大的缺点就是专业性太强,即使我们使用专业的软件普通人也不一定能操作好,还需要专业的采集人员来进行作业。

2.5 方案对比

上述几种倾斜摄影模型单体化的方案各有优缺点,并没有最优解,最好是根据实际的需求采用适合的方案。

这几种方案对比如下表:

3. OSM建筑模型

如果问,有没有一种最经济成本最低的建筑物场景建模方式?那么,答案无疑就是利用现成的大量矢量数据,生成建筑物三维模型了,这也是目前市面上最多的三维模型数据。

即在矢量数据的基础上,加上一定的高度,我们就能自动挤出(extrude)粗略的三维模型。建筑物高度有的是通过矢量中关于高度的属性字段,有的是通过外业普查,有的可以通过第三方场景来辅助确定;在精度要求不严格的三维可视化场景中,也可以使用一定范围内的随机高程。

如果只是通过一个矢量面+高度生成的建筑物模型可能不能满足一些三维可视化场景精细度需求。那么我们可以给其增加纹理、赋予材质、增加建筑物模型的真实性;也可以进一步给建筑物模型增加一些附属设置,例如屋顶、门窗或者地基等,提升建筑物模型的丰富度。这些步骤通常需要程序开发人员和三维建模师配合完成。这种建筑物模型特别适合不需要百分百真实的城市可视化场景,特别是对于一些非常风格化场景具有非常不错的效果。

其实这种思路也是早期构建城市三维场景的办法,只不过以前的时候都是将矢量导入到3D MAX中进行操作,然后在网上找比较合适的图片作为建筑物的贴图纹理。笔者还记得那个时候手动编辑到了看到现实中的建筑物都有想将其抠出来贴图的冲动的地步。好在目前已经有了一些可以自动化生成的解决方案,不用再手动一个个编辑建筑物了。

目前,世界上应用最为广泛的矢量数据都是来自于著名的社区驱动地图项目OpenStreetMap,根据OpenStreetMap提供的矢量或者矢量服务,我们可以生成大批量的城市规模的建筑物三维模型。更为有价值的是,OpenStreetMap开放的矢量数据在大多数城市中有着丰富的元数据,比如建筑名称、地址和开放时间。因此,我们把这类由OSM矢量数据生成的建筑模型称为OSM建筑模型。在前面提到的开源三维GIS库Cesium中,就依据OpenStreetMap实现了全球范围的OSM建筑模型,并且将其以3D Tiles的数据形式提供给用户使用,其可视化效果如下图所示:

4. CAD分层分户模型

OSM建筑模型的生成结果是一栋一栋建筑物,但是并不能反映出建筑物的内部情况。进一步的,如果我们知道这种建筑物的CAD设计图,或者户型图,那么我们就可以像通过矢量生成建筑物一样通过CAD设计图或者户型图来自动化构建建筑物模型。并且,这样构建的建筑物模型能够附带每一层每一户的内部结构,能够挂接到具体楼栋门户的属性信息,便于精细化管理。在城市管理场景(例如公安三实、不动产登记等)中,这种模型数据具备一定的应用价值。

不仅如此,CAD分层分户模型构建的成本低廉,可以直接利用已有的建筑CAD图纸;在不要求精度的情况下,也可以由采集人员自己绘制户型图。不过无论是建筑CAD图纸或者户型图可能会有个问题,那就是可能缺少地理空间信息。在这种情况下,可以将其与建筑物外围轮廓矢量进行配准,从而调整到合适的地理位置。一个CAD分层分户模型构建流程如下图所示:

5. 建筑信息模型BIM

上一节中,我们都使用CAD设计图来构建建筑物模型了,那么我们直接使用CAD设计图的三维版——建筑信息模型(Building Information Modeling,简称BIM)作为三维GIS应用中的三维模型数据也就顺利成章了。

其实GIS+BIM结合应用的设想由来已久:GIS可以提供宏观的的地理环境,BIM则提供细致而微观的管理。理论上,两者的结合具有非常广阔的应用前景:室内导航、三维城市、市政模拟、资产管理等等。

BIM作为建筑学、工程学及土木工程中新一代信息化工具,这里作者不谈在其专业领域的应用前景,只说在与三维GIS的结合应用中的一些问题:

  • BIM在其专业领域也许并不少见,但是放在公共领域中还是非常少见的。作为一项数据资产,获取BIM往往需要一定的经济成本(尤其是对于大范围场景来说),或者只能由业主来提供且限制流出。
  • BIM平台非常多,其对应的数据格式也很多,并且这些平台和数据都是商业性质的。这意味着进行格式交换非常困难,即使可行也可能会丢失一些信息。不过近年来行业内一直大力推行的IFC(Industry Foundation Classes业界惯例文件格式)标准可能会解决这个问题。
  • BIM数据包含的数据内容非常丰富细致,甚至小到螺丝钉都有可能在BIM数据上展示。这使得在三维可视化系统加载显示的性能效率很低,需要预先进行轻量化处理。而BIM数据本身是有自己的数据组织的(例如BIM中的族),如何保证原有的数据组织,又能进行足够的轻量化处理来满足显示效率是一个问题。
  • BIM数据缺少地理信息数据,将其放置在合适的地理位置上需要经过一些地理空间计算和转换。
  • BIM并不关心可视化效果,需要给BIM数据每一个零部件赋予合适的材质,才能获取比较好的可视化效果。

6.人工构建模型

最后就是在三维图形领域最常用的人工构建模型了。

人工构建模型数据是三维GIS可视化应用中非常有用的数据补充:如果一个地区缺少相应的参考数据,那么就只能采用人工建模了。在成本允许的情况下,人工建模可以得到非常真实的可视化效果,这个真实不仅仅是几何形状上的,配合成熟的可视化引擎,在光影效果上都可以实现的非常逼真。而这一点正是其他类型数据很难实现的,因为它们往往都很难配合可视化引擎进行光照计算。

不过,人工建模的缺点就是成本高,构建效率低。模型构建的越精细,花费的时间成本和人力成本也越多,用户的可视化引擎也不一定能够承受住这种精细程度模型的数据量。即使是在大量使用人工建模的游戏领域,也是以小范围场景为主。在大范围场景的三维GIS可视化应用中,一种比较好的策略就是大量使用其他成本较低的三维模型数据(如OSM建筑模型),但在需要重点展示的区域则使用人工构建模型,以保证可视化效果与成本之间的平衡

7.总结

在以上的内容中,我们主要讨论了常见的三维数据类型。但是,在实际的项目中,每种三维数据类型还有不同的格式和组织方式,同时还需要解决在调度和渲染中的轻量化问题。

晶石CIM平台,从22年推出至今,在以上诸多问题中均有成熟的解决方案和技术沉淀,并已广泛运用于各种实际项目中,通过三维GIS技术为城市管理助力。

#产品人专业大盘点#
全部评论
搞这些有的没的软文,不如给公司提议下把赔偿金搞到位吧😓
2 回复 分享
发布于 09-12 19:58 湖北

相关推荐

克蕾儿_:我不用点进来都知道评论区什么样子
点赞 评论 收藏
分享
3 2 评论
分享
牛客网
牛客企业服务