以工业4.0研究院胡权院长所著《数字孪生体》一书为指引,数字孪生城市实验室加强“数字孪生基础设施”建设,落实“数字孪生+”战略在城市治理中的应用。目前已经构建了智能杆、无人驾驶和能源系统等多个要素,形成了立体化的数字孪生城市生态。
上周(2021.6.14-2021.6.19)继续进行Cesium 3D Tiles 格式数据文件读写功能的开发,主要进行四叉树算法、切片模型位置计算、i3dm切片模型读写功能的开发。
3D Tiles使用层次细节结构(HLOD)的方式组织数据,tileset是一颗树,从root开始,所有子切片是递归的,创建一片区域的3D Tiles数据还有一个切片细化问题,每个切片可以用四个均匀细分的子切片(使用中心纬度和经度)进行细化,为了组织数据,可以通过创建四叉树来表示。
空间数据组织后很多种,规范中列举了四叉树、八叉树、KD树、网格等,其中四叉树是一个相对简单数据结构,数字孪生城市就使用四叉树来组织数据。
项目使用Web墨卡托投影,将球面坐标转换为平面坐标,然后用四叉树将平面递归分割,从而实现球面的空间分割。
经过对比试验b3dm和i3dm在智能杆模型的应用,最终选择了i3dm格式,因为其切片模型更适合外观一致,只有位置有变化的模型。因此项目最终采用了i3dm格式的读写功能。
目前项目已完成了i3dm文件JSON头的解析与输出,根据规范定义,二进制体部分是可以不使用的,可以把数据保存在JSON头中,只是切片模型会比较大,不过对于测试使用已经满足了。
四叉树是GIS中常用的空间索引。其基本思想是将地理空间递归划分为不同层次的树结构。它将已知范围的空间等分成四个相等的子空间,一个正方形切割成四等分,得到的依然是正方形,这就是为什么Web墨卡托投影要把地图搞成正方形的原因。
下面分享一份技术资料,介绍四叉树算法,供大家学习。
欢迎更多开发人员参与数字孪生城市开源社区。
CesiumSharp项目地址:
https://openii.cn/digitalcity/cesiumsharp
按照数字孪生城市开源社区计划,研发团队将继续围绕数字孪生城市平台开源项目的开发和开源社区的建设展开,目标是设计数字孪生城市场景,开发场景数据化所需的工具。
加入数字孪生城市开源社区说明:
https://openii.cn/digitalcity/community
评论