3D地球可视化是怎么实现的?带你入门Cesium

2024-04-19 14:12

本文主要是介绍3D地球可视化是怎么实现的?带你入门Cesium,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Hi,大家好,我是贝格前端工场,咱们经常看到的三维地球效果,比如旋转、放缩、2D/3D转换,城市3D地图等效果是如何实现的那,本文替你揭秘。

一、Cesium.js是什么

Cesium.js是一个基于WebGL的开源虚拟地球和地理信息可视化库。它可以用于创建3D地球、地图、卫星、飞行和其他地理空间数据可视化应用程序。Cesium.js提供了丰富的API和功能,包括支持各种地图投影、矢量和栅格数据的渲染、地形和影像图层的加载、相机控制和动画、交互式标注、数据查询和分析等。

Cesium.js的主要特点包括:

  1. 基于WebGL的高性能渲染引擎,支持各种地图投影和坐标系。
  2. 支持多种数据格式和数据源,包括矢量数据、栅格数据、地形数据、影像数据和时空数据。
  3. 提供了丰富的图层和数据服务,包括OpenStreetMap、Bing Maps、Google Maps、ArcGIS、WMS、WMTS等。
  4. 支持各种相机控制和动画效果,包括平移、旋转、缩放、飞行、时间轴等。
  5. 提供了交互式标注和数据查询等功能,可以对地图上的数据进行分析和处理。
  6. 可以与其他前端框架和库(如React、Angular、Vue.js等)集成使用。

总之,Cesium.js是一个功能强大、灵活易用的地理信息可视化库,可以用于开发各种虚拟地球、地图、卫星、飞行和其他地理空间数据可视化应用程序。


二、Cesium.js的安装

要安装Cesium.js,可以按照以下步骤进行操作:

  1. 下载Cesium.js的压缩包:可以从Cesium.js的官方网站(https://cesium.com/)下载最新版本的Cesium.js压缩包。
  2. 解压压缩包:将下载的Cesium.js压缩包解压到你的项目目录中。
  3. 引入Cesium.js库:在你的HTML文件中,使用<script>标签引入Cesium.js库。例如:
<script src="path/to/cesium/Cesium.js"></script>
  1. 设置Cesium.js的资源路径:在你的HTML文件中,使用以下代码设置Cesium.js的资源路径。其中,Cesium是解压后Cesium.js文件夹的路径。
<script>Cesium.Ion.defaultAccessToken = 'your_access_token';Cesium.Resource.defaultImage = new Cesium.Resource({basePath: 'Cesium/Assets/Textures/'});Cesium.Resource.defaultKTX = new Cesium.Resource({basePath: 'Cesium/Assets/Textures/'});
</script>
  1. 创建Cesium.js应用:在你的JavaScript代码中,使用Cesium.js的API创建你的Cesium.js应用。

这样,你就成功安装了Cesium.js,并可以开始使用它来创建虚拟地球、地图、卫星、飞行和其他地理空间数据可视化应用程序。请注意,Cesium.js需要在Web服务器上运行,以便正确加载资源文件。


三、创建一个Viewer

要创建一个Cesium.js的Viewer,你可以按照以下步骤进行操作:

  1. 在你的HTML文件中,创建一个容器元素,用于放置地球或地图。例如:
<div id="cesiumContainer"></div>
  1. 在你的JavaScript代码中,使用Cesium.js的API创建一个Viewer对象,并将其绑定到容器元素上。例如:
var viewer = new Cesium.Viewer('cesiumContainer');
  1. 可选:根据需要,你可以对Viewer进行一些配置和设置。例如,设置初始位置和视角:
viewer.camera.setView({destination: Cesium.Cartesian3.fromDegrees(lon, lat, height),orientation: {heading: Cesium.Math.toRadians(heading),pitch: Cesium.Math.toRadians(pitch),roll: Cesium.Math.toRadians(roll)}
});

其中,lon、lat、height是地球上的经度、纬度和高度,heading、pitch、roll是相机的朝向。

  1. 可选:你还可以在Viewer中添加图层、标注、模型等元素,以及处理交互和事件。例如,添加一个地形图层和一个标注:
viewer.terrainProvider = Cesium.createWorldTerrain();var entity = viewer.entities.add({position: Cesium.Cartesian3.fromDegrees(lon, lat, height),label: {text: 'Hello Cesium!',font: '24px sans-serif',fillColor: Cesium.Color.YELLOW,outlineColor: Cesium.Color.BLACK,outlineWidth: 2,style: Cesium.LabelStyle.FILL_AND_OUTLINE,pixelOffset: new Cesium.Cartesian2(0, -50)}
});

其中,lon、lat、height是标注的位置。

  1. 运行你的应用:将HTML文件在Web服务器上运行,你就可以看到创建的Viewer了。

这样,你就成功创建了一个Cesium.js的Viewer,并可以根据需要进行配置和添加元素。你可以通过Viewer对象的API来控制视角、添加图层、标注和模型,以及处理交互和事件。具体的API可以参考Cesium.js的官方文档(https://cesium.com/docs/)。


四、界面示例

  1. Geocoder : 一种地理位置搜索工具,用于显示相机访问的地理位置。默认使用微软的Bing地图。
  2. HomeButton : 首页位置,点击之后将视图跳转到默认视角。
  3. SceneModePicker : 切换2D、3D 和 Columbus View (CV) 模式。
  4. BaseLayerPicker : 选择三维数字地球的底图(imagery and terrain)。
  5. NavigationHelpButton : 帮助提示,如何操作数字地球。
  6. Animation :控制视窗动画的播放速度。
  7. CreditsDisplay : 展示商标版权和数据源。
  8. Timeline : 展示当前时间和允许用户在进度条上拖动到任何一个指定的时间。
  9. FullscreenButton : 视察全屏按钮。

五、Cesium的效果

下面的都是cesium的下过,大家自行搜索教程,或者持续关注贝格前端工场的后续文章。

添加地形

配置视窗

时间线

以上仅仅是简单入门一下,带大家感受一下Cesium的效果,欢迎持续关注后续文章。

这篇关于3D地球可视化是怎么实现的?带你入门Cesium的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/917762

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo