数据格式说明

4/18/2023

数据处理的目的是把各种来源、各种格式的输入数据,处理为三维 GIS 上能够渐进加载的切片文件格式。整个过程是一个输入到输出的过程。

# 单文件格式的处理流程:

这类文件处理比较简单,都是可以使用工具进行一对一的转换即可。比如: gltf单文件模型、geojson矢量数据文件 等。

# 切片格式的处理流程:

image

# 输出的切片格式

我们先讨论输出的切片格式, 根据可视化的效果需求,目前至少以下几种切片形式:

# 影像切片

与传统二维GIS上的切片类似,它的切片文件格式是常规图片,比如png或者jpg,可以直接在二维引擎或GIS引擎上浏览查看。 Mars3D目前支持的影像切片规范有两种形式的,一种是EPSG4326坐标系的经纬度直拉切片方式(GeographicTilingScheme),一种是EPSG3857坐标系的Web墨卡托切片方式(WebMercatorTilingScheme)。

# 地形切片

地形是通过三角网来描述地表起伏的一类数据。一般来说地形是一个三维引擎的基础数据,很多其他数据的显示都要依赖地形,比如影像数据需要贴合在地形上展示,POI点需要采样地形高程,鼠标交互需要获取鼠标交互位置点。 Cesium的地形切片格式以及标准,请参考 Cesium官方的文档 (opens new window)

# 模型切片

对于Cesium引擎和Mars3D平台,模型切片就是3dtiles格式 (opens new window), 3dtiles=索引+内容 索引是json格式的元数据定义,包括数据范围、几何误差等,索引可以嵌套引用其他索引。

# 输入的数据格式

说清楚了输出格式,们再来讨论输入数据。我用一个流行的词语来描述输入:多源异构。 多种来源,多种差异化数据结构,所以实际输入是比较复杂的,如有常规GIS的栅格矢量,比有现在流行的实景倾斜模型,有传统的手工模型,也有当下火热的BIM或者CIM模型,还有一些特殊,比如点云数据、地质数据、体数据、场数据、流数据等等。 大部分工具目前无法涵盖所有数据类型,每个工具都有一定特色,定位解决各个行业或者各种三维项目都会用到的数据类型的切片化。目前我们可以把基础数据输入分为如下五大类:

# 传统GIS数据

传统GIS数据,按照组织分为两大类:栅格和矢量

# 栅格数据

栅格数据通过逐点的属性值来描述数据,比如地形高程栅格,或者遥感影像栅格,对于栅格三维中有两种方式去可视化。

  • 地形高程数据(dem),此类数据三维可视化用来显示地形起伏高低,地形数据的常见格式有dem,tif等。其他非常见格式的高程数据可以使用arcgis进行格式 转换,转到dem或者tif来进行地形切片。
  • 除了高程之外,其他的栅格数据一般都是处理成影像切片来可视化。

# 矢量数据

矢量数据是通过点、线、面等几何对象来描述地理实体,这就是矢量。矢量的三维可视化问题比较复杂,根据三维的渲染方式可以分为以下几种:

  • 栅格化展示和绘制:借助二维GIS服务器的矢量渲染出图能力,矢量可以在服务端生成图片,三维上加载方式就类似栅格的影像切片,二维GIS相关的标准服务,比如WMTS,WMS等可以直接接入到三维中。这块的产品也比较多,比如Esri的arcgisserver,超图的iserver,开源的geoserver等。
  • 矢量化展示和绘制:比如使用geojson、czml、kml等绘制的图标、文字、折线、多边形等,也可以使用wfs服务图层方式。
  • 模型化展示和绘制: 比如建筑物轮廓,我们可以根据建筑高度拉成白模去可视化,比如用来描述森林位置或者城市附属物(路灯,垃圾桶)等点位的可以用实例化模型去展示。

# 人工模型

人工模型数据(或者手工模型数据)是三维GIS行业发展的最早的需求来源,通过3dsmax,maya等建模工具人工建模的数据。我们这里只罗列上面四个建模工具,其实建模工具远很多,手工模型格式可以多达50多种。这里我给大家解释几个概念。

# 原始格式

比如3dsmax的.max格式等,这些格式存在的意义在于是各种建模工具存储自定义信息的,一般来说格式都不开放,我们无法直接去读取和处理这些格式。所以有这些格式,一定要在建模工具内导出交换格式。

# 交换格式

比如比较古老的obj格式,以前流行的3ds格式,曾经的标准collada(dae)格式,现在事实上的交换格式标准fbx格式。这些格式存在的意义是为了各个软件之间能够相互导入导出模型成果。一般这些格式是开放的。所以我们模型切片的大部分输入格式,应该是交换格式。 这里我们推荐优先考虑fbx,原因是fbx是autodesk相关产品(3dsmax,revit,maya等)的官方交换格式,定义的比较完善,而且autodesk提供了官方的fbxsdk,这样更稳定。 另外一个是obj,使用obj是退而求其次的选择,我们实践中发现一些大的模型,在3dsmax里导出fbx经常崩溃出错,但是导出obj反倒很稳定。虽然是obj,但是我们也推荐使用3dsmax导出的obj,obj格式太灵活太简单,反倒对于数据标准化处理来说是缺陷,比如它没有单位信息(处理后模型大小不对),没有向上轴信息(处理后模型是垂直的),没有几何体共享(无法做实例化优化)。

# BIM模型

BIM模型和手工模型最大的区别在于几点:

  • 建模目标不同:手工模型的目的是为了可视化,就是为了看的见,看不见的东西能省则省。BIM完全是按照一些工程标准去创建的,比如路面可能有多个层代表了不同的物理层。手工模型的纹理贴图量可能很大,BIM的贴图相对简单。
  • 属性信息不同:手工模型一般没有属性信息,但是BIM模型有大量属性。

# 倾斜实景数据

倾斜实景数据一般是来自照片进行三维重建得到的,目前倾斜数据的特点是总量大,自带LOD,目前能做这个格式的软件也比较多了,例如contextcapture以及国内的smart3d,大疆等。 这些软件产生的结果有很多格式,由于历史原因吧,大部分产生的结果依然是osgb,最新版软件基本都支持直接导出3dtiles数据。

# 点云数据

点云数据的格式有很多种,比如xyz,las,csv等,但是las是相对标准的一种格式。点云数据最初是来自激光扫描设备,受限于采集方式,只能用来展示一些小型数据。随着技术发展,现在倾斜摄影也可以直接获取点云,点云的数据可以呈现大范围的。就我们实践来看,点云主要还是应用在电力领域,虽然它有行业属性,但是点云数据本身是不带行业属性的,目前仅主要支持las,其他类型的可以尝试用cloudcompare这个开源软件转化下格式。

最后更新: 9/8/2023, 5:23:49 PM