文章目录
1. cesium API 结构
在实际的开发过程中,基本上会用到上图所示的Cesium API中各个类,我们可以把它按照以下分类进行记忆。
1.1 Viewer类属性
imageryLayers 影像数据
terrainProvider 地形数据
dataSources 矢量数据
entities 几何实体集合(用于空间数据可视化)
Widgets 组件,即Viewer初始化界面上的组件
Camera 相机
Event 事件,鼠标事件、实体选中事件等
1.2 Scene类属性
primitives 图元集合(几何体和外观)
postProcessStages 场景后期处理
环境对象,大气圈、天空盒、太阳、月亮等
Event事件,更新、渲染事件等
Camera类属性
位置、方位角、俯仰角、翻滚角
1.3空间计算
三维矩阵、四元数、四维矩阵、转换等
2. Cesium中Primitive与Entity
Cesium为开发者提供了丰富的图形绘制和空间数据管理的API,可以分为两类,一类是面向图形开发人员的低层次API,通常被称为Primitive API,另一类是用于驱动数据可视化的高层次API,称为Entity API。
总的来说,Primitive偏底层,图形绘制和数据加载效率较高,但开发难度更大,而Entity基于Primitive做了进一步封装,调用便捷。
2.1Primitive
Primitive通常有两个部分组成:
(1)Geometry:几何形状,定义了Primitive的结构,例如点、线、面、体等。
(2)Appearance:外观,定义了Primitive的着色(shading),包括顶点着色器(vertex shader)、片元着色器(fragment shader),以及渲染状态(render state)。
使用Geometry和Apperance的优势是:
(1)高性能。绘制大量Primitive时,可以将其合并为单个Geometry,提高效率,合并由Web worker执行,UI保持响应性。
(2)灵活性。Geometry与Appearance相互独立,可分别修改。
(3)低级别访问,易于修改着色器,使用自定义的渲染状态。
不足之处:
(1)实现同样的功能,需要比entity编写更多的代码。
(2)需要开发者对图形编程,OpenGL有较为深入的了解。
2.2Entity
entity是对primitive的封装,使得使用者专注于数据的呈现,而不用去纠结底层的实现机制。
entity中绘制几何体的接口是graphics,而primitive则是geometry。
对于材质而言,entity是MaterialProperty,而primitive的材质则是Material,使用上要注意区别。
entity更方便于实际可视化的操作,虽然便捷,但不利用自定义可视化效果。
本文为学习笔记,第一节来自GIS李胜,简书https://www.jianshu.com/p/46dd28ddfde0
第一节来自https://blog.csdn.net/weixin_45782925/article/details/122690683