Cesium 生成3Dtiles文件流程
CesiumJS 是一个跨平台、跨浏览器可以展示三维世界地图与三维模型的开源js库。
cesium 支持加载glb 、glTF 、3dtiles(文件夹) 、geojson 格式的数据。经过个人测试后发现3dtiles 格式最优。
2.1从2d 地图中抽取建筑矢量模型
文件转换的流程是:.osm => .shp => 3dtiles
(1).从openstreetmap 导出 osm 文件(https://www.openstreetmap.org/export#map=12/34.2711/117.1084)
选择区域导出或手动框选区域导出
导出成功后得到 map.osm 文件
(2).使用ArcGis 将 osm 文件转换为 shp 文件
ArcGis安装教程
https://www.jb51.net/softs/682047.html
将软件安装完成之后
打开ArcCatalog
在本地建立一个文件夹
连接到刚才创建的本地文件夹
再右键test 新增 文件夹和文件地理数据库
下一步点击工具箱=》系统工具箱 ,找到 OpenStreetMap Toolbox.tbx
如果没有这个工具就需要安装 ArcGIS Editor for OpenStreetMap 10.7 (64-bit) 插件
加载刚才下载的osm文件
下面选择的是文件地理数据库后面跟一个名称
等待一会儿直到右下角弹出
代表导入成功
导入成 shp 格式
右键 shp01 =》 导出 =》 导出为 Shapefile
导出成功后看到
后面只需要使用矢量面的数据
打开ArcMap
添加刚才生成的矢量面数据
打开之后是这样的,可以在ArcMap 中将不需要的部分删除
下面将添加模型的高度字段
Shp01_osm_ply 右键打开属性表,这个表里的数据在生成模型后都是可以展示的
添加高度字段
点击表选项=》 添加字段
新添加的字段数据都是0,需要给一个随机数,随机生成高度
右键字段名 = 》 字段计算器
(3).将处理好的shp 文件转化为3dtiles
使用 cesiumlab2 可以将shp、obj 文件转换成3dtiles
安装登录后是这样的
点击通用模型切片
选择刚才处理过的shp 文件
建筑高度选择刚才添加的‘height’字段
选择输入文件夹点击右侧提交处理
生成成功
这个文件夹就是3dtiles 格式
3.加载3dtiles 模型
加载后
因为中国大陆相关法规导致模型渲染后有些许偏移,此时使用QGIS 将 WGS-84 坐标系转为GCJ-02坐标系就可以解决偏移问题
加载模型
可以将 obj 模型格式转换为3dtiles 格式