一、介绍
Cesium是一个用于创建基于Web的三维地球应用程序的JavaScript库。它提供了许多现代的图形和计算功能,如地形和高度数据,插值,点云处理,线段,坐标转换等等。Cesium可以在任何现代浏览器和移动设备上运行,并且使用的是开放的Web标准,例如HTML5,CSS和JavaScript。
二、基本概念
Cesium创建的可视化场景是由技术和满足可维护性和可扩展性的模块化方法构建的。以下是Cesium中一些基本概念:
Scene: 表示一个3D场景,其中包含所有的几何体、图像地图和其他图形对象。
Camera: 控制观察场景的位置和方向。
Globe: 地球表面的可渲染区域。
Primitive: 表示地球上的几何体,例如点,线和多边形。
ImageryProvider: 提供渲染图像的数据源,例如地图服务器。
Entity: 可以表示一个点、线或面的实体。
三、场景创建
Cesium中的场景是在Viewer
或CesiumWidget
中创建的。这些类通常不需要自己来创建,因为它们都有默认的配置:
var viewer = new Cesium.Viewer('cesiumContainer');
这将在HTML的元素cesiumContainer中创建一个默认配置的镜头视图。Cesium的开放性使得可以更精细地控制场景和视图,例如:
var viewer = new Cesium.Viewer('cesiumContainer', { imageryProvider : new Cesium.BingMapsImageryProvider({ url : '//dev.virtualearth.net', key : 'bingMapsKey' }), baseLayerPicker : false });
这将创建一个使用Bing地图影像服务的视图,同时在界面上禁用图层选择器。
四、实体创建
Cesium中的实体Entity
是可视化对象的主要属性容器。这些对象在地球球面、地震数据可视化和空气交通管理等方面起着至关重要的作用。一个基本的例子可以帮助我们理解实体如何工作:
var viewer = new Cesium.Viewer('cesiumContainer'); var redBox = viewer.entities.add({ name : 'Red box', position: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883, 1000), box : { dimensions : new Cesium.Cartesian3(400000.0, 300000.0, 500000.0), material : Cesium.Color.RED } }); viewer.zoomTo(redBox);
这将在球面上添加一个字符名为“Red box”的红色盒子。它还为盒子指定了位置、尺寸和颜色。调用viewer.zoomTo
方法将视图放置在这个实体上。
五、高程和地形
Cesium提供了对地球表面高程和地形的可视化支持。它可以从离线材料中读取这些数据,也可以从在线图像地图中读取。以下是一个简单的例子,演示了如何在球面上绘制山脉的高程:
var viewer = new Cesium.Viewer('cesiumContainer'); var terrainProvider = new Cesium.CesiumTerrainProvider({ url : '//assets.agi.com/stk-terrain/world' }); viewer.scene.globe.terrainProvider = terrainProvider;
这将在球面上启用STK世界高程数据的使用。这可以让用户看到地球上的山脉和其他高程特征,同时在地面和察看近景时仍然很清晰。
六、动态模拟
Cesium可以用于动态模拟,例如地震和火山喷发。甚至还可以模拟人造卫星和太空探测器。以下是一个例子,演示如何用Cesium模拟一颗围绕地球运行的人造卫星:
var viewer = new Cesium.Viewer('cesiumContainer'); var satellite = viewer.entities.add({ position: new Cesium.SampledPositionProperty(), availability: new Cesium.TimeIntervalCollection([new Cesium.TimeInterval({ start: new Cesium.JulianDate.fromIso8601("2015-02-04T16:00:00.00Z"), stop: new Cesium.JulianDate.fromIso8601("2015-02-04T17:00:00.00Z") })]), model: { uri: './SampleData/model/CesiumSatellite.glb', scale: 200.0, minimumPixelSize : 128, maximumScale : 20000 } });
这将在球面上创建一个新的实体,在特定的时间范围内运行一个带有“Cesium卫星”模型的动态模拟。
总结
本文介绍了Cesium三维可视化中的一些基本概念,包括场景、实体、高程和地形以及动态模拟。这是一个非常强大的工具,可以用于创建增强现实、虚拟旅游、天气预报和火山喷发等应用程序。