外观
CesiumJS库介绍
2072字约7分钟
2025-01-25
Cesium 是一款开源的基于JavaScript的3D地图框架。
Cesium官网中描述写到: CesiumJS is a geospatial 3D mapping platform for creating virtual globes. Our mission is to create the leading web-based globe and map for visualizing dynamic data. We strive for the best possible performance, precision, visual quality, ease of use, platform support, and content.
CesiumJS 是一款用于创建虚拟场景的3D地理信息平台。目标是实现基于Web的地图动态数据可视化。目前尽力提升平台的性能、准确率、虚拟化能力、易用性以及平台的各种支持。
1. Cesium的作者:AGI公司
Cesium隶属于AGI公司,该公司一直致力于时空数据业务。正如很多开源项目都有一个个性化的名字,Cesium也不例外。Cesium原意是化学元素铯,铯是制造原子钟的关键元素,通过命名强调了Cesium产品专注于基于时空数据的实时可视化应用。 AGI的英文全称为Analytical Graphics Incorporation,三位创始人曾在通用公司宇航部的供职工程师,提供STK(System/Satellite Toolkit Kit)和Cesium两款产品。该公司是航天分析软件的领导者,而STK则是该公司的旗舰产品。经过多年来在时空数据的积累,AGI公司逐渐掌握了大量3D可视化技术,也感受到各行各业对海量3D数据的强烈需求,因此于2012年创建了cesiumjs开源项目,围绕Cesium生态圈打造了一套安全可靠易扩展且平台独立的企业级解决方案。
2. Cesium官方网站
建议大家将Cesium官网的博客都读一遍,博客大概分为三类,主要是技术类,比如性能优化,调度算法等,一类是定期的新版本特性,能够了解Cesium新功能和新特性,还有一类是大事记,比较轻松,不妨感受一下Cesium的团队文化。
3. Cesium的源码
Cesium遵循Apache 2.0许可开源协议,可以免费的用于商业和非商业用途,无论是个人还是商业用途,可以任意修改源码不用开源,需要声明该产品使用了Cesium,比如Cesium.js,LICENSE.MD;MODIFICATIONS.md声明你的修改清单。
Cesium目前更新比较频繁,每个月月初会发布一次版本,当前最新版本是:
Cesium包中的资源及代码
Assets
:Cesium中的静态资源,包括图片数据及JSON数据Scene
:自定义着色器指南,新手可以直接忽略ThirdParty
:Cesium中使用的第三方库Widgets
:Cesium中的CSS样式文件Workers
:Cesium多线程工作代码Cesium.js
:Cesium主文件
Cesium架构图,建议使用前先熟悉整体架构图,以便能够快速使用。 新窗口查看大图
4. Mars3D与Cesium的关系
Cesium库总体来说是很难用、API接口不友好的一个SDK,所以我们Mars3D对Cesium的类的使用做了一致性的封装,统一的API接口风格、并对一些事件、调度等做统一内部处理,外部使用更加简单易用。
两个SDK是互相独立解耦的,可以理解为mars3d对Cesium做了扩展和提升,并重新封装、并增加了很多新功能。
因为cesium本身也有一些bug或需要优化的地方,Mars3D使用的cesium也修改了部分cesium源码文件,并重新发布了mars3d-cesium库, 该库详细说明见下一篇mars3d-cesium库介绍
4.1对比原生 CesiumJS,请问Mars3D有哪些特色与优势?
易用性
- 简洁的 API:Mars3D 对 CesiumJS 复杂的 API 进行了封装和简化,提供了更简洁、直观的接口,降低了开发难度。使用和语法都按开发人员用户习惯最优设计,降低开发人员能力要求,只用初级水平开发人员即可上手。
- 丰富的示例与文档:Mars3D 提供了大量丰富的示例代码和详细的文档,这些示例涵盖了各种常见的应用场景,开发者可以通过参考这些示例快速了解如何使用 Mars3D 实现自己所需的功能。同时,详细的文档也为开发者在遇到问题时提供了很好的参考依据,帮助他们更好地理解和使用 Mars3D 的各种功能。
功能扩展
- 多种新矢量数据类型:全新设计的矢量图层 GraphicLayer 和 Graphic 矢量数据体系,新开发了原生Cesium没有的数据类型,可以自由切换数据类型,提高渲染效率。
- 丰富的可视化效果:Mars3D 提供了大量丰富的可视化效果,如各类材质特效、后处理特效等。这些效果可以帮助开发者更轻松地创建出具有丰富视觉效果的三维场景,增强了应用的表现力和用户体验。
- 强大的分析功能:Mars3D 增加了许多实用的空间分析功能,如路径分析、通视分析、模型分析、地形分析等。这些功能在智慧园区、军事应用、低空经济等领域都有重要的应用价值。
- 性能优化:Mars3D 优化了性能,通过优化算法、数据结构、渲染方式等,能够更快地加载和渲染大数据,提高用户体验。同时,它还对内存的使用进行了优化,能够更优使用内存,避免了内存泄漏的问题。
社区与生态
- 活跃的社区支持:Mars3D 拥有一个活跃的开源社区,开发者们可以在社区中分享自己的经验、成果,也可以在社区中寻求帮助、解决问题。社区的活跃不仅促进了 Mars3D 的不断发展和完善,也为开发者们提供了一个良好的交流和学习平台。
- 完整的解决方案:历经八年多的发展及打磨,上千家企业使用,满足绝大多数企业级应用需求。提供从0到1的完整方案,包括示例源码、API文档、教程和社区支持,助您快速掌握三维可视化技术。
5. 原生Cesium开发 相关学习网站
最好的教程其实是官方教程和官方示例,并在学习中随时查阅API文档 。
教程
- PeterLu博客教程超图大牛作品,国内较早的深入研究教程,该教程比较老,是2016年编写的,但写的很深入很底层。
- 伐罗密的Cesium中文网教程:伐罗密编辑的Cesium编程入门和中级博客网站,2018年推出的目前还在更新。
- coinidea中文社区:coinidea组织的中文社区,里面包括2019至2020年编写的教程。
- Cesium基础知识讲解 :火星科技2019年编写的Cesium教程文档和视频。
- ND_DoYouService整理的教程:ND个人2021年对其他人编写的教程简单整理了下。
- GIS李胜Cesium开发教程:GIS李胜2021年编写的一系列教程。
代码
- Cesium官方示例zgeo整理版:如果看不习惯官方的示例,可以看下zgeo整理的这个版本。
- 张言哲github代码:张言哲个人在2018至2019年Cesium学习中记录并汇总的代码
其他
- vtxf编写的Cesium资料大全:唐晓飞(vtxf)对cesium及其周边整理的相关资料。
- 让GIS三维可视化变得简单-Cesium地球初始化
- Cesium快速入门的WorkShop教程翻译
- Cesium for Unreal快速入门:Cesium for Unreal值得拥有。