目录
3 空间数据可视化(Visualizing Spatial Data)
(1)实体API(What is the Entity API?)
I 材质和轮廓(Materials and Outlines)
VIII 线轮廓(Polyline Outline)和线色彩(Polyline Glow)
IX 高度和突出(Heights and Extrusions)
(4)观察器中实体特性(Entity features in the Viewer)
I 选择和描述(Selection and Description)
3 空间数据可视化(Visualizing Spatial Data)
本章教程将介绍如何使用Cesium的实体API来绘制空间数据,例如点、标记、标签、线、模型、图形和容器等。本章不需要Cesium的预备知识,如果确实没有一点经验的话,可以从第一章的教程开始,Getting Started。
(1)实体API(What is the Entity API?)
Cesium具有丰富的可应用到空间数据的API,主要分为两类:一种是低级API,主要用来面向图形开发人员,通常简称为原始API(Primitive API,以下称为PAPI);另一种是高级API,用于数据驱动的可视化API,简称为实体API(Entity API,以下称为EAPI)。
PAPI主要目的是公开执行手头任务所需的最少抽象量,它要求我们像图形程序员一样思考并使用图形术语。这样的结构是为给定的可视化类型(而不是API一致性)提供最高效和灵活的实现。加载一个模型不同于创建一个广告牌,这两种与创建一个多边形有根本的不同。每种可视化类型都有自己独特的特性,而且具备不同的性能特性,需要遵循不同的最佳实践。虽然它功能强大而且灵活,但大多数应用程序都提供了比PAPI更高级的抽象级别。
EAPI的目标是公开一组设计一致的高级对象,这些对象将相关的可视化和信息聚合到一个统一的数据结构中,我们称之为实体。这让我们把精力集中到数据呈现,而不是担心可视化的潜在机制。同时还提供了易于构建复杂时间-动态可视化的结构,使之与静态数据可以自然地结合在一起。虽然实际中EAPI使用了底层PAPI,但是我们不必关心其实现细节。通过对提供的数据应用各种启发式方法,EAPI能够提供灵活的、高性能的可视化,同时公开一致的、易于学习和易于使用的接口。
(2)第一个实体(Our First Entity)
学习基础EAPI的最好方式之一就是看一些代码。为了保持简单,我们将使用Cesium Sandcastle中的Hello World example。如果打算在本地使用Cesium进行开发,那么你可以使用自己的应用程序。
假设希望给美国Wyoming增加一个多边形,多边形由一系列经纬度组成(选择Wyoming是因为它似一个简单的多边形)。复制和粘贴以下代码到Sandcastle:
var viewer = new Cesium.Viewer('cesiumContainer');
var wyoming = viewer.entities.add({
name : 'Wyoming',
polygon : {
hierarchy : Cesium.Cartesian3.fromDegreesArray([
-109.080842,45.002073,
-105.91517,45.002073,
-104.058488,44.996596,
-104.053011,43.002989,
-104.053011,41.003906,
-105.728954,40.998429,
-107.919731,41.003906,
-109.04798,40.998429,
-111.047063,40.998429,
-111.047063,42.000709,
-111.047063,44.476286,
-111.05254,45.002073]),
height : 0,
material : Cesium.Color.RED.withAlpha(0.5),
outline : true,
outlineColor : Cesium.Color.BLACK
}
});
viewer.zoomTo(wyoming);
点击Run或者直接敲击键盘F8,可以获得以下图形: