当前位置: 首页 > article >正文

Cesium系列:从入门到实践,打造属于你的3D地球应用

一、Cesium简介

CesiumJS 是一个开源的 JavaScript 库,它能够帮助开发者创建出具有卓越性能、高精度、出色视觉质量和易用性的世界级 3D 地球仪和地图。无论是在航空航天领域,用于模拟飞行路径和展示卫星数据;还是在智能城市中,用于可视化城市规划和交通流量;亦或是无人机行业,用于展示飞行轨迹和地形数据,CesiumJS 都能大显身手。它在 Apache 2.0 许可下发布,这意味着无论是商业用途还是非商业用途,都可以免费使用。

二、Cesium本地环境搭建

(一)下载与解压

  1. 获取最新版本代码:访问 CesiumJS – Cesium,找到最新的 release 版本代码下载地址,点击下载。

  2. 解压文件:下载完成后,找到下载的压缩包文件,双击将其解压到一个合适的目录中,比如 C:\Cesium 或者 D:\Cesium 等。

  3. 打开文件夹:使用 Visual Studio Code(VSCode)打开刚刚解压的目录。VSCode 是一个功能强大的代码编辑器,它支持多种编程语言,包括 JavaScript,而且有大量的插件可以扩展其功能,非常适合用于开发 Cesium 应用。

  4. 安装依赖资源:在 VSCode 的终端中,运行以下命令来安装所需的资源:

    cnpm install

    这里使用的是 cnpm,它是 npm 的一个镜像版本,更适合国内用户,能够更快地下载依赖包。如果你还没有安装 cnpm,可以通过运行 npm install -g cnpm --registry=https://r.cnpmjs.org 来安装。

  5. 本地运行:安装完成后,在终端中运行以下命令启动本地服务器:

    cnpm start

    运行成功后,浏览器会自动打开一个页面,显示 Cesium 的欢迎界面。如果没有自动打开,你可以在浏览器中输入 http://localhost:8080 来访问。

   

点击HelloWorld查看基础示例demo

  

代码分析:以下是 HelloWorld 示例的代码:

<!DOCTYPE html>
<html lang="en"><head><!-- Use correct character set. --><meta charset="utf-8" /><!-- Tell IE to use the latest, best version. --><meta http-equiv="X-UA-Compatible" content="IE=edge" /><!-- Make the application on mobile take up the full browser screen and disable user scaling. --><metaname="viewport"content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"/><title>Hello World!</title><!-- 引入Cesium.js, 该js定义了Cesium对象 --><script src="../Build/Cesium/Cesium.js"></script><style>@import url(../Build/Cesium/Widgets/widgets.css);html,body,#cesiumContainer {width: 100%;height: 100%;margin: 0;padding: 0;overflow: hidden;}</style></head><body><!-- 定义cesium要渲染的元素 --><div id="cesiumContainer"></div><script>// 执行创建cesium渲染var viewer = new Cesium.Viewer('cesiumContainer');</script></body>
</html>

三.Cesium目录结构介绍

  

(一)根路径文件

  • CHANGES.md:记录了 Cesium 每个版本的变更内容,包括新增的功能、修复的错误以及改进的性能等。通过阅读这个文件,你可以快速了解不同版本之间的差异,帮助你在升级版本时做出决策。

  • gulpfile.cjs:这是一个构建工具配置文件,使用了 Gulp 工具。它定义了 Cesium 的打包流程,包括 GLSL 语法的转义、压缩和未压缩库文件的打包、API 文档的生成以及自动化单元测试等。如果你需要对 Cesium 的构建过程进行自定义,比如添加新的构建任务或者修改现有的任务,就需要编辑这个文件。

  • index.html:这是 Cesium 的 Web 导航首页。当你通过 cnpm start 启动本地服务器后,浏览器会自动打开这个页面。它提供了一个入口点,让你可以方便地访问 Cesium 的各种示例代码和文档。

  • package.json:这是一个包的依赖管理文件,它包含了项目的基本信息,如包的名称、版本号、描述、官网 URL、作者等。更重要的是,它列出了项目所依赖的包,包括开发环境和生产环境依赖包列表。此外,它还定义了项目的主入口文件以及执行脚本,例如 cnpm start 就是通过这个文件中的脚本定义来执行的。

  • README.md:这是项目的入门手册,它详细介绍了整个项目的使用方法、功能特点、安装步骤以及如何运行示例代码等。通过阅读这个文件,你可以快速了解 Cesium 的基本概念和开发流程。

  • server.cjs:这是 Cesium 内置的 Node 服务器文件。当你运行 npm run startnpm run startPublic 命令时,实际上就是执行了这个文件中的代码。它负责启动一个本地服务器,让你可以在本地开发和测试 Cesium 应用。

(二)Apps文件夹

  • CesiumViewer:这是一个简单的 Cesium 初始化示例,它展示了如何创建一个基本的 Cesium 地球仪。通过阅读这个示例代码,你可以学习到 Cesium 的基本用法,比如如何设置地球仪的视角、如何添加数据等。

  • SampleData:这个文件夹包含了所有示例代码所用到的数据,包括 json、geoJson、topojson、kml、czml、gltf、3dtiles 以及图片等格式的数据。这些数据为示例代码提供了丰富的素材,帮助你更好地理解和学习 Cesium 的各种功能。

  • Sandcastle:这是 Cesium 的示例程序代码存储位置。Sandcastle 是一个在线的代码编辑器,它允许你直接在浏览器中编写和运行 Cesium 代码。这个文件夹中的代码就是 Sandcastle 中的示例代码。这些示例代码涵盖了 Cesium 的各种功能,从基础的地球仪创建到复杂的 3D 模型加载、动画效果实现等,非常值得深入研究。

  • TimelineDemo:这个文件夹包含了时间轴的示例代码。时间轴是 Cesium 中一个非常重要的功能,它允许你根据时间来展示数据的变化。通过这个示例代码,你可以学习到如何使用时间轴来控制数据的显示和隐藏,以及如何实现时间轴的自定义样式等。

(三)Build文件夹

  • Cesium:这个文件夹包含了打包之后的 Cesium 库文件(压缩版本)。在实际开发中,通常会使用这个压缩版本的文件,因为它可以减少文件大小,提高加载速度。

  • CesiumUnminified:这个文件夹包含了打包之后的 Cesium 库文件(未压缩版本)。虽然它的文件大小比压缩版本大,但它保留了代码的可读性,方便开发人员进行调试。当你在开发过程中遇到问题时,可以通过查看未压缩版本的代码来快速定位问题所在。

  • Documentation:这个文件夹包含了打包之后的 API 文档。API 文档是学习和使用 Cesium 的重要参考资料,它详细介绍了 Cesium 的各个类、方法、属性以及事件的使用方法和参数说明。通过阅读 API 文档,你可以深入了解 Cesium 的内部实现原理,从而更好地利用它来开发出强大的 3D 地理应用。

(四)Source文件夹

Source 文件夹是 Cesium 项目的重中之重,它包含了 Cesium 的所有源码。这个文件夹中的代码按照功能模块进行了组织,涵盖了从核心的 3D 渲染引擎到各种地理空间数据处理工具等各个方面。

四.Cesium界面组件显隐

4.1.通过js配置项控制(推荐)

    var viewer = new Cesium.Viewer("cesiumContainer", {animation: false, // 动画小组件baseLayerPicker: false, // 底图组件,选择三维数字地球的底图(imagery and terrain)。fullscreenButton: false, // 全屏组件vrButton: false, // VR模式geocoder: false, // 地理编码(搜索)组件homeButton: false, // 首页,点击之后将视图跳转到默认视角infoBox: false, // 信息框sceneModePicker: false, // 场景模式,切换2D、3D 和 Columbus View (CV) 模式。selectionIndicator: false, //是否显示选取指示器组件timeline: false, // 时间轴navigationHelpButton: false, // 帮助提示,如何操作数字地球。// 如果最初应该看到导航说明,则为true;如果直到用户明确单击该按钮,则该提示不显示,否则为false。navigationInstructionsInitiallyVisible: false,});// 隐藏logoviewer._cesiumWidget._creditContainer.style.display = "none";

4.2.通过css样式隐藏控制

   /* 通过CSS控制组件显隐及位置 */.cesium-viewer-toolbar,             /* 右上角按钮组 */.cesium-viewer-animationContainer,  /* 左下角动画控件 */.cesium-viewer-timelineContainer,   /* 时间线 */.cesium-viewer-bottom               /* logo信息 */ {display: none !important;}.cesium-widget-credits  /* 隐藏logo图片 */ {display: none !important;}.cesium-viewer-fullscreenContainer  /* 全屏按钮 */ {display: none !important;position: absolute;top: 0;}

相关文章:

Cesium系列:从入门到实践,打造属于你的3D地球应用

一、Cesium简介 CesiumJS 是一个开源的 JavaScript 库&#xff0c;它能够帮助开发者创建出具有卓越性能、高精度、出色视觉质量和易用性的世界级 3D 地球仪和地图。无论是在航空航天领域&#xff0c;用于模拟飞行路径和展示卫星数据&#xff1b;还是在智能城市中&#xff0c;用…...

笔记1——数据通信网络基础

一、概述 数据通信网络&#xff1a;由路由器、交换机、防火墙、无线设备以终端构成的网络 功能&#xff1a;实现数据互通 二、网络设备 交换机&#xff1a; 特点&#xff1a;距离终端用户最近的设备 作用&#xff1a;终端接入、二层交换机 广播域:交换机连接的终端构成一个广播…...

Linux系统程序设计:从入门到高级Day01

知识点1 【系统调用】 系统调用的概述 系统调用&#xff1a;内核 提供给 用户 可以 操作内核 的一组函数接口 关系&#xff1a;用户 借助 系统调用 操作内核 进程的空间分为&#xff1a;内核空间 和 用户空间 用户一般都是在用户空间操作的&#xff0c;但是有的时候用户需要…...

openEuler24.03 LTS下安装HBase集群

前提条件 安装好Hadoop完全分布式集群&#xff0c;可参考&#xff1a;openEuler24.03 LTS下安装Hadoop3完全分布式 安装好ZooKeeper集群&#xff0c;可参考&#xff1a;openEuler24.03 LTS下安装ZooKeeper集群 HBase集群规划 node2node3node4MasterBackup MasterRegionServ…...

关于testng.xml无法找到类的问题

问题&#xff1a;testng.xml添加测试类的时候飘红 解决办法&#xff1a; 1.试图通过自动生成testng.xml插件去解决&#xff0c;感觉也不是这个问题&#xff0c;没有尝试&#xff1b; 2.以为是创建包的方式不对&#xff0c;重新删除后新建--还是找不到 想新建类的时候发现从m…...

数据结构:探秘AVL树

本节重点 理解AVL树的概念掌握AVL树正确的插入方法利用_parent指针正确更新平衡因子掌握并理解四种旋转方式&#xff1a;左单旋&#xff0c;右单旋&#xff0c;左右双旋&#xff0c;右左双旋 一、AVL树的概念 AVL树得名于它的发明者G. M. Adelson-Velsky和E. M. Landis&…...

Linux 入门:基础开发工具(上)vim,gcc/g++,make/makefile

目录 一.软件包管理器 一&#xff09;.软件包 二&#xff09;.安装软件 三&#xff09;.删除软件 二.编辑器vim 一&#xff09;.vim的基本介绍 1.正常/普通/命令模式(Normal mode) 2.插入模式(Insert mode) 3.底行模式(last line mode) 二&#xff09;.vim的基本操作 …...

计算机科学基础设施之数学:科研工具、资源与环境详介

李升伟 整理 数学科研涉及广泛的工具、资源和环境&#xff0c;涵盖从理论分析到数值模拟、从数据获取到论文发表的各个环节。以下是对数学科研中常用工具、资源和环境的详细介绍&#xff1a; 一、数学科研工具 1. 文献检索与管理工具 Google Scholar&#xff1a;全球最大的…...

Turtle事件处理(键盘与鼠标交互)

Turtle 提供了 事件驱动编程,允许我们使用 键盘 和 鼠标 控制 Turtle,从而实现交互式绘图。例如,我们可以让 Turtle 响应 按键、鼠标点击 和 拖动 事件,使其根据用户的输入进行移动、旋转或绘制图形。 1. 事件机制概述 Turtle 的事件处理主要依赖 turtle.Screen() 提供的 …...

5、无线通信基站的FPGA实现架构

基站&#xff08;Base Station&#xff0c;BS&#xff09;&#xff0c;也称为公用移动通信基站&#xff0c;是无线电台站的一种形式&#xff0c;具体则指在一定的无线电覆盖区中&#xff0c;通过移动通信交换中心&#xff0c;与移动电话终端之间的信息传递的无线电收发信电台。…...

关于 UPDATE 语句 和 SELECT ... FOR UPDATE 的对比分析,包括语法、功能、锁机制、使用场景及示例代码

以下是关于 UPDATE 语句 和 SELECT ... FOR UPDATE 的对比分析&#xff0c;包括语法、功能、锁机制、使用场景及示例代码&#xff1a; 1. UPDATE 语句 功能 直接修改数据&#xff1a;立即更新表中的数据&#xff0c;并提交修改。无显式锁&#xff1a;虽然会自动加锁&#xff…...

Linux2 CD LL hostnamectl type mkdir dudo

查看主机名信息 设置静态主机名 同时配置静态、瞬时主机名 下载Vmware tools https://blog.csdn.net/qq_34638161/article/details/102779721 mkdir创建目录 问题&#xff1a;为什么在root目录下 看不到 /var /usr那些文件夹...

Docker容器部署Java项目的自动化脚本(Shell编写)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Docker容器部署Java项目的自动化脚本&#x…...

计组(蒋)期末不挂科纲要

2025.03.27&#xff1a;计算机组成原理期末不挂科速成纲要 计组期末不挂科速成纲要 第1章 概论第2章 数据的机器层次表示习题练习 第3章 指令系统习题练习 第4章 数值的机器运算习题练习 第5章 存储系统和结构习题练习 第6章 中央处理器习题练习 第7章 总线 第1章 概论 冯诺依曼…...

STM32F103C8T6单片机硬核原理篇:讨论GPIO的基本原理篇章1——只讨论我们的GPIO简单输入和输出

目录 前言 输出时的GPIO控制部分 标准库是如何操作寄存器完成GPIO驱动的初始化的&#xff1f; 问题1&#xff1a;如何掌握GPIO的编程细节——跟寄存器如何打交道 问题2&#xff1a;哪些寄存器&#xff0c;去哪里找呢&#xff1f; 问题三&#xff0c;寄存器的含义&#xff…...

UniApp集成极光推送详细教程

最近项目要集成推送服务&#xff0c;选型极光推送&#xff0c;记录一下开发过程。 1、极光官网注册登录 1.1选择极光推送产品&#xff0c;新建应用 1.2在下一步中选择Android/IOS的消息推送服务 1.3产品设置中输入应用包名&#xff08;一经输入后不可更改&#xff0c;一定要正…...

探索Doris:日志分析的新宠,是否能取代老牌ES?

在大数据时代&#xff0c;日志存储与分析对于企业的运营和决策起着至关重要的作用。Elasticsearch&#xff08;简称 ES&#xff09;作为一款广泛应用的开源分布式搜索和分析引擎&#xff0c;长期以来在日志管理领域占据着举足轻重的地位。然而&#xff0c;随着技术的不断发展&a…...

HCIA/HCIP基础知识笔记汇总

HCIA/HCIP基础知识笔记汇总 ICT产业链&#xff1a; 上游&#xff1a;芯片制造、元器件生产、光纤光缆制造 中游&#xff1a;硬件组装、软件开发、网络建设维护 下游&#xff1a;电信服务、互联网服务、终端产品 VLAN端口类型&#xff1a; access &#xff1a;…...

AI战略群与星际之门:软银AI投资版图计划深度解析

一、星际之门:万亿美元级 AI 基础设施革命 1.1 项目背景与战略定位 在 AI 技术迅猛发展的今天,算力已成为推动其前进的核心动力。软银联合 OpenAI、甲骨文、英伟达、微软、arm推出的 “星际之门”(Stargate)计划,无疑是 AI 领域的一颗重磅炸弹。作为 AI 领域史上最大单笔…...

系统思考与时间管理

时间管理的真正秘诀&#xff1a;主动浪费时间&#xff1f; 巴菲特的私人飞机驾驶员觉得自己不够成功&#xff0c;于是向巴菲特请教应该怎么做。巴菲特让他列出了自己人生中最想实现的25个目标&#xff0c;并按重要程度排序&#xff0c;接着安排时间专注做前五件最重要的事情。…...

mac air m系列arm架构芯片安装虚拟机 UTM+debian 浏览器firefox和chrome

成果展示&#xff1a;debian虚拟机&#xff0c;你值得拥有&#xff01; 预期结果 1、mac的m系列芯片&#xff0c;arm 架构且内存小&#xff0c;安装虚拟机。 考虑到mac m系列芯片8g内存&#xff0c;arm架构想安装一个轻量的虚拟机&#xff0c;偶然之间发现了debian&#xff0c…...

大模预测法洛四联症的全方位研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、法洛四联症概述 2.1 病理特征 2.2 临床表现 2.3 现有治疗手段 三、大模预测法洛四联症的原理与模型构建 3.1 大模预测基本原理 3.2 模型构建的数据收集与处理 3.3 模型训练与优化 四、术前风险预测与准…...

Keepalived+LVS+nginx高可用架构

注明&#xff1a;所有软件已经下载好&#xff0c;防火墙和SELinux已经全部关闭 一.搭建NFS 1.服务端 1.创建文件 [rootnfs ~]# mkdir -p /nfs/data 2、修改权限 [rootnfs ~]# chmod orw /nfs/data 3、写配置文件 [rootnfs ~]# cat /etc/exports /nfs/data 192.168.111.118(r…...

【力扣hot100题】(034)LRU缓存

做完这题已经没有任何力气写链表题了。 思路很简单&#xff0c;就是调试特别的痛苦。 老是频频报错&#xff0c;唉。 class LRUCache { public:struct ListNode{int key,val;ListNode* next; ListNode* prev;ListNode() : key(0), val(0), next(nullptr), prev(nullptr) {}L…...

【redis】缓存 更新策略(定期、实时生存),缓存预热、穿透、雪崩、击穿详解

什么是缓存 redis 最常用的场景 核心思路就是把一些常用的数据&#xff0c;放到触手可及&#xff08;访问速度更快&#xff09;的地方 ⽐如我需要去⾼铁站坐⾼铁. 我们知道坐⾼铁是需要反复刷⾝份证的 (进⼊⾼铁站, 检票, 上⻋,乘⻋过程中, 出站…)正常来说, 我的⾝份证是放在…...

好文和技术网站记录

后续不断记录一些本人觉得的好文和一些技术网站 技术网站 Java 全栈知识体系 https://www.pdai.tech/ 文章 利用 NginxKeepalived 实现高可用技术 https://cloud.tencent.com/developer/article/1647182?policyId1004...

使用STM32CubeMX和Keil在STM32上创建并运行一个简单的FreeRTOS多任务程序

目标 利用FreeRTOS运行两个任务&#xff0c;分别为点灯和OLED屏的显示。 利用STM32CubeMX生成Keil工程和相关初始化代码 知识回顾 之前已经利用STM32CubeMX生成过Keil工程和相关初始化代码了&#xff0c;可以去回顾一下&#xff0c;详情见&#xff1a;https://blog.csdn.ne…...

从查重报告入手的精准论文降重秘籍

每个同学在使用论文查重时&#xff0c;为何同一篇文章&#xff0c;可能重复率从10%—30%不等&#xff1f;归根结底还是使用了不同查重系统。其实不同的论文查重与论文AIGC检测系统的算法、数据及模型都不一样&#xff0c;那如何针对这些系统的“个性”精准降重&#xff0c;这篇…...

车辆控制解决方案

车辆控制解决方案 /* * Purpose: 优化车辆控制的功能 -> 用户在控制车辆状态时&#xff0c;实现控制按钮点击状态改变只触发一次onSwitchChange事件&#xff0c;不再下发控制指令&#xff0c;同时清除加载车辆实时状态的定时器status_interval直到有返回值再开启&#xff0…...

【机器学习】嘿马机器学习(算法篇)第14篇:决策树算法,学习目标【附代码文档】

本教程的知识点为&#xff1a;机器学习算法定位、 K-近邻算法 1.4 k值的选择 1 K值选择说明 1.6 案例&#xff1a;鸢尾花种类预测--数据集介绍 1 案例&#xff1a;鸢尾花种类预测 1.8 案例&#xff1a;鸢尾花种类预测—流程实现 1 再识K-近邻算法API 1.11 案例2&#xff1a;预测…...