Cesium中的坐标系以及坐标转换
Cesium中常用的坐标
Cesium中坐标转换
经纬度坐标转换成世界坐标
两种方式将经纬度转换成世界坐标
1. 直接转换
var cartesian3 = Cesium.Cartesian3.fromDegrees(lng, lat, height);
2. 借助ellipsoid对象,先转换成弧度再进行转换
var cartographic = Cesium.Cartographic.fromDegrees(lng, lat, height); // 单位: 度
var cartesian3 = ellipsoid.cartographicToCartesian(cartographic);
将世界坐标转换成经纬度坐标
- 笛卡尔空间直角坐标系转换成地理坐标(弧度制)
// Method01:
var cartographic = Cesium.Cartographic.fromCartesian(cartesian3);
// Method02:
var cartographic = ellipsoid.cartesianToCartographic(cartesian3);
- 地理坐标(弧度制)转换为经纬度坐标
var lat = Cesium.Math.toDegrees(cartographic.latitiude);
var lng = Cesium.Math.toDegrees(cartographic.longitude);
var height = cartographic.height;
- 弧度和经纬度互相转换
// 经纬度转为弧度
Cesium.Math.toRadians(degrees -> lag, lat, height);
// 弧度转为经纬度
Cesium.Math.toDegrees(radians)
- 屏幕坐标和世界坐标互相转换
// 二维屏幕坐标转换为三维笛卡尔空间直角坐标系
var cartesian3 = scene.globe.pick(
viewer.camera.getPickRay(windowPosition),
scene
)
// 三维笛卡尔空间直角坐标系转为二维屏幕坐标,结果是Cartesian2对象,取出x,y即屏幕坐标
windowPosition = Cesium.SceneTransforms.wgs84ToWindowCoordinates(scene,cartesian3);
坐标转换工具
Cesium加载影像数据
影像图层类
-
ImageryLayerCollection
ImageryLayer类对象的容器,可以装入多个ImageryLayer或ImageryProvider类对象 -
ImageryLayer类
Cesium中的影像图层,相当于皮毛、衣服,将数据源包裹在内,相关属性:透明度、亮度等 -
ImageryProvider类
抽象类、子类封装了加载各种影像图层的方法
各类影像服务的加载
Cesium加载地形数据(地形图层全局只有一个)
![](https://img2023.cnblogs.com/blog/2104219/202312/2104219-20231224215733098-2092413674.png
各类地形数据的加载
Cesium加载矢量数据
什么是矢量数据
shp文件包含哪些数据?
Cesium支持的矢量数据格式
- geojson
- topojson
- kml
- 具有时间特性的czml
geojson
KML
CZML数据
Cesium加载glTF数据
场景结构描述
gltf的JSON结构
gltf相关工具介绍
Cesium中加载gltf
3D Tiles介绍
3D Tiles数据结构
3D Tiles相关类
实体Entity绘制
Entity支持的图形类型
Entity管理
Entity拾取
Entity固定
Primitive组成
Primitive优劣势
材质(Material)设置
材质的理解
Material类
Material Property类
为什么primitive性能好?
Cesium常用事件
Cesium根据事件的类型、用途,将事件应用分成三大类:
鼠标事件 - 要素拾取
鼠标事件 - Entity选择
鼠标事件 - 流程
相机事件 - 通过鼠标控制
相机事件 - 通过键盘控制
场景渲染事件
Cesium相机控制
相机控制
Viewer类
Camera类
相机参数
-
heading: 头部上下旋转
-
pitch: 身体左右旋转
-
roll: 尾部左右旋转