9 个回答
很多人会有一个误区:CesiumJS 是一个“WebGIS框架”,其实不然。拥有基本的初中地理知识,加一些非常浅显的坐标转换知识、GIS 常见数据及特点,以及常见的 GIS 地理数据服务标准(WMTS、WMS、TMS),能应付 CesiumJS 中出现的大多数所谓“地理”的情况了,你给我来教,半个月速成一批学生。
1. 作为二次开发的学习难点
CesiumJS 难在什么地方呢?我认为有 2 点:
1.1. API 相对复杂
它作为一个重型库(不好意思,我还是不太喜欢叫它框架),拥有多套或公开文档的、或私有的底层 API,这些 API 可能相互支持,也可能毫无联系。
而相对的,它的文档建设、示例代码配套和“商业推广”并不是特别丰富,只能说是满足入了门的开发者的大部分需求,不像 ArcGIS API for JS 一样那么详尽,图文例子并茂。
官方网站的 Tutorial 和 GitHub 的 wiki 已经许久不更新了,官方技术博客专注的是新技术动态,入门开发者可能会看得一脸懵。
1.2. 对 Web 图形技术有要求
CesiumJS 实现了诸多精良的数学、代数、空间几何、统计学、图形渲染策略算法,官方团队有好几个图形渲染大佬,CEO 已经有二十多年的图形编程经验了。
所以从 API 的设计上,它和“GIS”讲究的概念,例如“地图”、“图层”、“样式”等重合度并不是很高。例如在上次回答的问题中:
我就简单聊过这个问题。
大多数时候, 应该用 Web3D、图形渲染的视角去思考 CesiumJS 的使用。
2. 学习源码的难点
基于上述二次开发的两个难点,我觉得深入学习源码还有几个难关要花时间去攻克:
- 了解 CesiumJS 前端库部分的构建工具,知道它在浏览器环境的运作原理
- 具备一定的 WebGL 接口使用基础和实时渲染技术简单基础
- 具备本科非数学专业的空间立体几何、代数矩阵计算基础
- 十分明晰 CesiumJS 中的各种 GIS 坐标系、图形坐标系的关系、转换用法
3. 干货时间:大批原创无广告资料
我于 2022 年把 CesiumJS 最新版(1.97)的主体架构解读完毕,国内目前最新的系列文章(截止发此回答)应该还是我的(感谢在我写作过程中 f大 等资料对我的帮助),有兴趣可以看看,预计文章时效性能保持两年以上:
加上这篇目录(↑),这个系列一共 9 篇长文,希望对你有帮助。
截至 1.97 版本,重大变动记录可以快速查询:
另外,对于在 Vue3 和 Vite 中使用 CesiumJS 的朋友,这里有一篇可能不是特别好配置,但是我写得尽可能详细,而且我认为是当下很合理的开项目方法的文章:
还有一些补充的 GIS 知识:
以及 3DTiles 1.1 数据规范简单翻译解读:
长期创作不易,还请多多支持