Cesium-terrain-builder编译入坑详解

news2025/3/13 2:32:07

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

  • 目前网上存在的cesium代码版本主要有两个分支:
    • 原始网站【不能生成layer文件,且经久不更新,使用gdal2版本】:https://github.com/geo-data/cesium-terrain-builder
    • docker分支版本 【可以生成layer文件,gzip需要单独设置修改,gdal版本和原网站要求不同】 ahuarte47/cesium-terrain-builder at master-quantized-mesh (github.com)

编译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加载

  • 发布命令:

    • 生成瓦片(本源码修改了默认不输出gzip格式,参考网上https://zhuanlan.zhihu.com/p/60908864)
    ctb-tile.exe  --output-dir  H:/ctb_output   H:/shenzhen_dem/L15/shenzhen_dem.tif  -f Mesh
    
    
    • 生成layer
    ctb-tile.exe --gzip --output-dir  H:/ctb_output   H:/shenzhen_dem/L15/shenzhen_dem.tif  -f Mesh -l
    

上图为证:

Cesium-1.106版本加载terrian
cesium 166版本加载terrian
cesium测试代码:

<!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)](

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1252464.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kotlin学习——kt里面的函数,高阶函数 函数式编程 扩展函数和属性

Kotlin 是一门现代但已成熟的编程语言&#xff0c;旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作&#xff0c;并提供了多种方式在多个平台间复用代码&#xff0c;以实现高效编程。 https://play.kotlinlang.org/byExample/01_introduction/02_Functio…

【STM32】GPIO输出

1 GPIO简介 &#xff08;1&#xff09;GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口 &#xff08;2&#xff09;可配置为8种输入输出模式 &#xff08;3&#xff09;引脚电平&#xff1a;0V~3.3V&#xff0c;部分引脚可容忍5V&#xff08;可以输…

mysql8下载与安装教程

文章目录 1. MySQL下载2. MySQL安装3. 添加环境变量4. 登录mysql 1. MySQL下载 以下两个网址二选一 官网&#xff1a;https://downloads.mysql.com/archives/community/阿里云镜像&#xff1a;https://mirrors.aliyun.com/mysql/?spma2c6h.13651104.d-5173.5.2e535dc8shSjIl…

centos7搭建ftp服务

一、安装 yum -y install vsftpd vi /etc/vsftpd/vsftpd.conf二、编辑配置文件 /etc/vsftpd/vsftpd.conf 内容如下 #是否允许匿名&#xff0c;默认no anonymous_enableNO#这个设定值必须要为YES 时&#xff0c;在/etc/passwd内的账号才能以实体用户的方式登入我们的vsftpd主机…

【Java程序员面试专栏 专业技能篇 】Java SE核心面试指引(四):Java新特性

关于Java SE部分的核心知识进行一网打尽,包括四部分:基础知识考察、面向对象思想、核心机制策略、Java新特性,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 本篇Blog为第四部分:Java新特性,子节点表示追问或同级提问 Java8新特性…

PyInstaller打包python程序为exe可执行文件

教程千千万&#xff0c;貌似我的window电脑就是打包不了&#xff0c;而且不同电脑的表现都不一致&#xff0c;很是奇怪。 文章目录 1 极简版1.1 生成文件spec详解1.2 是否变成一个exe主文件 2 虚拟环境打包3 其他打包需求3.1 加密打包3.2 Pyinstaller打包多个py文件为一个exe文…

代码随想录算法训练营第四十七天|198. 打家劫舍、213. 打家劫舍II、337. 打家劫舍III

LeetCode 198. 打家劫舍 题目链接&#xff1a;198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 第一次打家劫舍&#xff0c;来个简单一些的&#xff0c;无非就是偷了当前这家偷不了下一家&#xff0c;因此dp[n]代表&#xff0c;偷前n家的时候所能偷到的最高金额&#x…

区间预测 | Matlab实现BP-KDE的BP神经网络结合核密度估计多变量时序区间预测

区间预测 | Matlab实现BP-KDE的BP神经网络结合核密度估计多变量时序区间预测 目录 区间预测 | Matlab实现BP-KDE的BP神经网络结合核密度估计多变量时序区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.BP-KDE多变量时间序列区间预测&#xff0c;基于BP神经网络多…

rtsp点播异常出现‘circluar_buffer_size‘ option was set but it is xx

先说现象: 我使用potplay播放器来点播rtsp码流的时候可以点播成功&#xff0c;同事使用vlc和FFplay来点播rtsp码流的时候异常。 排查思路: 1.开始怀疑是oss账号问题&#xff0c;因为ts切片数据是保存在oss中的&#xff0c;我使用的是自己的oss账号&#xff0c;同事使用的是公司…

Kafka 如何实现顺序消息

版本说明 本文所有的讨论均在如下版本进行&#xff0c;其他版本可能会有所不同。 Kafka: 3.6.0Pulsar: 2.9.0RabbitMQ 3.7.8RocketMQ 5.0Go1.21github.com/segmentio/kafka-go v0.4.45 结论先行 Kafka 只能保证单一分区内的顺序消息&#xff0c;无法保证多分区间的顺序消息…

【数据结构】用C语言实现链队列(附完整运行代码)

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 一.了解项目功能 在本次项目中我们的目标是实现一个链队列: 该链队列使用动态内存分配空间,可以用来存储任意数量的同类型数据. 队列结点(QNode)需要包含两个要素:数据域data,…

2017年4月10日 Go生态洞察:开发者体验工作组介绍

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

我好像发现了车载测试面试成功的秘籍

在汽车行业中&#xff0c;车载测试工程师扮演着至关重要的角色。他们负责确保汽车的各种系统和功能在各种条件下都能正常运行&#xff0c;以确保车辆的安全性、可靠性和性能。如果你梦想成为一名车载测试工程师&#xff0c;那么你可能需要准备好回答一些关键的面试问题。在本文…

web:[ZJCTF 2019]NiZhuanSiWei1

题目 点进题目&#xff0c;网页显示如下&#xff0c;需要代码审计 $_GET["text"]和$_GET["file"]来获取传入的两个参数text和file。使用isset()函数来检查$text变量是否已设置并且不为null。如果设置了并且不为null&#xff0c;则执行下面的逻辑。在下面的…

C++实现十大排序算法

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…

Proteus仿真--基于DS1302与数码管设计的可调电子钟

本文主要介绍基于51单片机的DS1302的可调式电子钟实验&#xff08;完整仿真源文件及代码见文末链接&#xff09; 仿真图如下 其中数码管显示电子钟时间信息&#xff0c;按键用于调节时间&#xff0c;时间芯片选用DS1302芯片 仿真运行视频 Proteus仿真--基于DS1302与数码管设…

Debian 11.3 ARM64 安装中文语言包

文章目录 Debian 介绍1、执行命令2、语言选择3、修改设置 Debian 介绍 Debian是一种自由开源的操作系统&#xff0c;被广泛用于服务器、个人计算机和嵌入式设备。它是由全球志愿者组成的开发团队开发和维护的&#xff0c;以稳定性、安全性和自由性而闻名。 以下是一些关于Deb…

机器学习-线性模型·

线性模型是一类用于建模输入特征与输出之间线性关系的统计模型。这类模型的基本形式可以表示为&#xff1a; 其中&#xff1a; 是模型的输出&#xff08;目标变量&#xff09;。 是截距&#xff08;常数项&#xff0c;表示在所有输入特征都为零时的输出值&#xff09;。 是权重…

Yakit工具篇:WebFuzzer模块之热加载技术

简介 官方定义&#xff1a; 什么是热加载&#xff1f; 广义上来说&#xff0c;热加载是一种允许在不停止或重启应用程序的情况下&#xff0c;动态加载或更新特定组件或模块的功能。这种技术常用于开发过程中&#xff0c;提高开发效率和用户体验。 在Yakit 的Web Fuzzer中&…

PTA NeuDs_数据库题目

二.单选题 1.数据库应用程序的编写是基于数据库三级模式中的。 A.模式 B.外模式 C.内模式 D.逻辑模式 用户应用程序根据外模式进行数据操作&#xff0c;通过外模式一模式映射&#xff0c;定义和建立某个外模式与模式间的对应关系 2.对创建数据库模式一类的数据库对象的授权…