原文地址:https://cesiumjs.org/tutorials/Visualizing-Spatial-Data/
这篇教程教你如何使用Cesium的Entity API去绘制空间数据,如点,图标,文字标注,折线,模型,图形和立体图形。虽然这章不需要什么前提,但是如果你对Cesium一无所知,最好从第一个教程开始。
Entity API是什么?
Cesium丰富的空间数据可视化API分为两部分:Primitive API 面向三维图形开发者,更底层一些。Entity API 是数据驱动更高级一些。
Primitive API的主要目的是为了完成(可视化)任务的最少的抽象需求。他要求我们以一个图形开发者的方式去思考,并且使用了一些图形学术语。它是为了最高效最灵活的实现可视化效果,忽略了API的一致性。比如绘制三维模型和创建Billboard不同,和多边形绘制更是彻底不同。每种可视化都有自己鲜明的特色。此外,他们每种都有自己的独特的性能提升方式,也需要遵守不同的优化原则。虽然它很强大又很灵活,但是大多数项目需要比Primitive API更高层次的抽象。
Entity AP的主要目的是定义一组高级对象,它们把可视化和信息存储到统一的数据结果中,这个对象叫Entity。 它让我们更加关注我们的数据展示而不是底层的可视化机制。它提供了很方便的创建复杂的,与静态数据相匹配的随时间变化的可视化效果。Entity API实际内部在使用Primitive API ,它的实现细节,我们无需关心。经过各种数据的测试,Entity API提供灵活的,高层次的可视化,同时暴露一些一致性的、容易去学习和使用的接口。
第一个 Entity
学习Entity API基本使用的最好方式就是去读代码。简单其间,我们使用Sandcastle去创建 Hello World 示例。如果你已经创建了本地的cesium项目,那么使用你自己的项目。
假设,我们需要从经纬度列表中创建美国怀俄明州(选择怀俄明州Wyoming,是因为它的边界足够简单)的多边形。把下面的代码粘贴拷贝到Sandcastle中去:
单机Run 按钮(或者按下F8)就看到如下图所示效果:
怀俄明州
第一个 entity.怀俄明州从来没有让人如此兴奋.
我们尽力使Cesium的代码容易理解,上面的代码不用解释也应该明白什么意思。首先创建Cesium程序的基础对象 Viewer widget, 然后使用viewer.entities.add添加 Entity。传给 add 方法的参数一个包含了初始化配置的js 对象. 返回值就是 entity 对象. 最后调用 viewer.zoomTo 定位到到这个entity。
Entity 的配置项里有大量的参数,但是现在我们只是设置了 polygon 的填充面为半透明红色,边界线时黑色的。最后把这个entity命名为“Wyoming”。
面和体
学了基础的添加多边形知识,多亏Entity API的一致性非常好,我们结合Sandcastle 的示例,就很容易就创建各种图形。下面是所有支持的面和体的图形列表:
Box
六面体盒子entity.box
Ellipse
圆和椭圆entity.ellipse
Corridor
Corridor entity.corridor
Cylinder
圆柱和圆锥 entity.cylinder
Polygon
多边形 entity.polygon
Polyline
折线 entity.polyline
Volume
Polyline Volumes entity.polylineVolume
Rectangle
矩形 entity.rectangle