cesium加载倾斜摄影OSGB转换成3dtiles并更换底图
1、OSGB文件目录结构
一个OSGB倾斜摄影模型数据是瓦片结构的,顶层文件夹下是存放osgb瓦片数据的Data文件夹和定义模型原点和参考坐标系的metadata.xml文件。
Data文件夹里是瓦片存放,会先按照地理位置进行切片,然后在这一片上进行分层。metadata.xml文件里SRS定义的是倾斜摄影模型的参考坐标系,遵照EPSG的编号规则,SRSOrigin是模型所在原点。直接更改这两个可以在转换成3dtile的时候,改变模型所在点。
2、osgb转换3dtiles
由于cesuim暂不支持.osgb格式数据显示,所以要将.osgb格式数据转换为3dtile 格式数据;
开源转换工具:
链接:https://pan.baidu.com/s/1kVAfnNwF9-S6IqDkBaLL2g
提取码:thwc
下载解压后打开cmd,输入命令即可用:3dtile.exe -f osgb -i D:\OSGB\OSGB_18-D5-123 -o D:\3dTiles\Tiles_18-D5-123,前面是osgb目录,后面是3dtiles目录。
后将每个.osgb的文件转换成.b3dm文件,转换而来的3dtiles目录里会有个Data目录存放3dtiles文件,和一个tileset.json,这个json文件定义初始点和每个子切片的位置及其tileset.json的位置。
每个子切片里也有个tileset.json,这个主要就是对每个子切片里的瓦片进行位置定义。顶层tileset.json文件对每个子切片进行定位和确定其tileset.json在文件中的位置,子切片的tileset.json就对每个.b3dm的模型进行定位。
3、nginx作为资源服务器
nginx作为静态资源服务器是真的好用啊,之前用来作为mapbox矢量切片的离线服务器,现在正好也拿来做3dtiles和底图的服务器。
用地图下载器下载底图,测试微软bing地图和Arcgis地图的卫星地图是和cesium自带使用的是一样的,用谷歌的卫星地图反而会偏一点。
然后就可以将离线的地图和3dtiles放进nginx(192.168.1.100:8005)目录,nginx做好跨域,就可以在前端里调用了。
4、合并多个3dtiles
多个参考坐标系和原点相同的倾斜摄影OSGB模型,经过转换成3dtiles,可以通过合并各自顶层的tileset.json中的children中的数据,并将两个Data合为一个,就可以整体显示。
原点定义整体模型的位置,各个子切片则根据原点进行相对位置偏移进行定位。
5、cesium离线显示倾斜摄影模型
一次加载多个不同原点的模型,就对应多个url
this.threeDTil