Cesium-terrain-builder编译入坑详解

本以为编译cesium-terrian-tools编译应该没那么难,不想问题重重,不想后人重蹈覆辙,也记录下点点滴滴。

编译geo-data版本

链接编译,无法link GDALCreateOverviewDataset,gdal版本不对,可以暂行注释掉,应该是个扩展功能可以不管

复制代码
      //poSrcOvrDS = GDALCreateOverviewDataset( poSrcDS, iOvr, FALSE);
          poSrcOvrDS = nullptr;// GDALCreateOverviewDataset(poSrcDS, iOvr, FALSE, FALSE);
        }

ahuarte47 版本

  • git clone 后,记得要切换到最新代码,默认没有切换到最新代码,【坑】

  • gdal 307 或gdal204 使用时,可能出现部分重载函数声明不一致,需要改ctb源码即可解决

  • 网上其他设置:

    • 中文支持: GDALAllRegister后添加CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");
  • cesium 发布地形,默认需要关闭gzip,才可以被cesium加载

  • 发布命令:

    cmd 复制代码
    ctb-tile.exe  --output-dir  H:/ctb_output   H:/shenzhen_dem/L15/shenzhen_dem.tif  -f Mesh
    • 生成layer
    cmd 复制代码
    ctb-tile.exe --gzip --output-dir  H:/ctb_output   H:/shenzhen_dem/L15/shenzhen_dem.tif  -f Mesh -l

上图为证:

Cesium-1.106版本加载terrian

cesium测试代码:

html 复制代码
<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        html,
        body,
        #cesiumContainer {
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
            overflow: hidden;
        }
    </style>
    <!-- Include the CesiumJS JavaScript and CSS files -->
    <script src="../Build/CesiumUnminified/Cesium.js"></script>
    <style>
        @import url(../Build/CesiumUnminified/Widgets/widgets.css);

        html,
        body,
        #cesiumContainer {
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
            overflow: hidden;
        }
    </style>
</head>
 
<body>
    <div id="cesiumContainer"></div>
    <script>
        Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI0NzkzYjFkNi1mODZhLTRkNjAtYWE1YS1jYzE5NzBjNjhkNjciLCJpZCI6MTQyMjI1LCJpYXQiOjE2ODYyMzUxODl9.l8y5SN0ALIwPZh9eM8Al14DBpfMjHdeG7uqb69tH6nU';
        <!-- const viewer = new Cesium.Viewer('cesiumContainer'); -->
		
		const viewer = new Cesium.Viewer('cesiumContainer', {
        terrainProvider: new Cesium.EllipsoidTerrainProvider({}),//移除自带地形
        baseLayerPicker:false,
        homeButton:false,
        infoBox:false,
        timeline:false,
        navigationHelpButton:false,
        geocoder:false,
        sceneModePicker:false,
        animation:false,
        fullscreenButton:false
      });

		 //viewer.imageryLayers.removeAll();
        var terrainProvider = new Cesium.CesiumTerrainProvider({
  
			url: './ctb_shenzhen_nogzip/'

        });

        viewer.scene.terrainProvider = terrainProvider;
        viewer.camera.flyTo({
            //destination: Cesium.Cartesian3.fromDegrees(121.8040466308, 29.9597, 2500)
			// 深圳
            destination: Cesium.Cartesian3.fromDegrees(114.1040466308, 22.5, 2500)
        });  
    </script>
</body>
 
</html>
## 参考:

[基于Docker使用CTB生成地形切片并加载 - 当时明月在曾照彩云归 - 博客园 (cnblogs.com)](https://www.cnblogs.com/jiujiubashiyi/p/17104115.html)

非压缩:[Cesium地形切片--CTB(cesium-terrain-builder)填坑指南 - 知乎 (zhihu.com)](
相关推荐
用户83134859306985 小时前
Cesium实现雾气效果:按钮一键控制打开/关闭雾气效果,滑块拖动实时控制雾气浓度
vue.js·cesium
用户83134859306989 天前
Cesium实现实时联动鹰眼缩略图
vue.js·cesium
整点可乐12 天前
cesium实现全景图加载
javascript·cesium
用户831348593069814 天前
Vue3+Cesium实现3DTiles模型实时调节(离地面高度/xyz轴旋转/模型经纬度偏移)
vue.js·cesium
青山Coding16 天前
Cesium应用(七):地形开挖的实现思路
前端·cesium
毕安格 - BimAngle17 天前
地理配准高级教程:局部坐标(无地理信息)模型篇
3d·cesium·gltf·glb·3d tiles
duansamve18 天前
Python+CesiumLabv4.0.17生成上W个高度不一、颜色不一立方体的3D TILES文件
cesium
不争不抢的佛系少年20 天前
Cesium模型没有动画怎么办?手把手教你通过代码给GLB模型添加动画!
cesium
用户831348593069823 天前
Vue3 + Cesium 实现城市 3D 场景下雪特效(按钮开关控制下雪启停)
cesium
BJ-Giser1 个月前
CesiumJS升级全新VFX特效粒子系统
前端·可视化·cesium