Scene Viewer新功能(2017.9)

SceneViewer迎来新版本,新增点云层智能制图支持,提供多种可视化选项,如点颜色和大小,可直接在线以不同风格展示点云数据。此外,还支持3D对象和集成网格场景层的高程偏移,兼容多种垂直坐标系,以及新增WMS图层支持。

原文地址
作者:Russell Roberts

ArcGIS Online 2017年9月发布新版本的同时,我们迎来了Scene Viewer的另一个令人兴奋的更新。我们为点云层(也是一种新的OGC层类型)增加了智能制图支持,并支持垂直坐标系。

点云场景图层的智能制图

现在,在Scene Viewer中您可以使用直观的用户界面和交互式绘图选项(如点颜色和点大小),来绘制点云场景图层。您可以直接在网络上将您的点云数据以True Color,Classes,Elevation或Intensity的风格进行可视化和分析。这些风格通过LAS数据集中包含的数据和属性,可以创建出引人注目的可视化效果。使用强度调制选项,以增加点的深度感知和对比度,并检查不同的颜色斜坡以获得更有吸引力的外观。要了解有关这些点云风格的更多信息,请在此处查看文档页面。下图显示了使用由Merrick提供的数据使用高程和强度调制来设计图层的点云场景图层。

这里写图片描述

3D对象和集成网格场景层的高程偏移

使用新的高程偏移选项调整建筑物(3D对象),集成网格和点云场景图层在地面上方的垂直位置。在此版本之前,您只能将偏移应用于要素图层和点图层。现在使用这些图层,您可以在配置面板中输入正值或负值来应用偏移量。如果您的图层与地形完全不一致,改功能可能会有所帮助。

支持垂直坐标系

使用Scene Viewer可以创建精确的各种三维数据的混合场景。当您具有垂直坐标系(VCS)的高程或场景层时,创建具有精确垂直测量的场景会比较困难。 Scene Viewer现在可以兼容各种不同的VCS,就像我们目前对多个水平坐标系时所做的那样。在从Scene Viewer和ArcGIS Pro创建的网站场景中支持这一点。

WMS层支持

我们一直在支持OGC各种图层,目前增加了对Web Map Service(WMS)层的支持。在ArcGIS Online中,可以从组织的图库或我的内容将WMS图层添加到场景查看器。 Scene Viewer支持为此新图层类型配置的弹出窗口和图例。

这里写图片描述

访问最新的Scene Viewer

您现在也可以轻松地访问您一直在使用的网络场景,就像在地图查看器中一样。在“新建场景”按钮下,您将看到创建新的全局或本地场景以及您最近保存的一些网络场景的选项,以便您再次开始工作。

这里写图片描述

图层项配置增强

还有一些额外的增强功能和对AGOL功能的支持,您可以在Scene Viewer中查看此版本。

  • 支持弹出框的间断式刷新:在Scene Viewer中支持已配置为刷新媒体的弹出窗口。您可以在地图查看器或这些图层的项目详细信息中进行配置。在这里看看如何配置.
  • 弹出窗口和渲染器引入Arcade
  • 标签表达式中引入Arcade:在6月版本中,我们添加了对点特征属性的标签支持。现在,您可以对点要素图层使用标签Arcade表达式。您可以在地图查看器中使用Arcade创建这些标签,或者在功能图层的项目明细页面中创建这些标签,并将更改保存到图层。当您将图层添加到Scene Viewer时,您将看到使用该表达式或使用单个属性的选项。
  • 改进了要素简化功能。那些具有高水平细节的线和多边形,如电源线或轮廓线,现在将变得更平滑。
  • 支持WMTS数据的自定义参数。
<think>嗯,用户这次问的是Cesium中两个核心数据管理模块的区别,看来ta正在深入学习3DGIS开发。之前引用的三条站内资料刚好能组合使用:引用1展示了primitives的添加方式,引用2介绍了Viewer的整体功能结构,引用3则给出3DTiles的具体代码示例——这简直是专门为解释这个问题准备的素材。用户可能正在纠结该用哪个接口来加载不同数据源,ta的提问方式很专业,说明至少已经写过基础代码。考虑到Cesium的文档比较分散,深层需求应该是想建立系统性的数据管理认知,避免后续开发走弯路。从技术角度看,这两个模块的区别比表面更深刻:-原始primitives更接近WebGL底层(就像Three.js的BufferGeometry),连第3条引用的3DTiles这种复杂结构最终也被封装成primitive。特别要注意它直接控制场景渲染周期,适合需要精细性能优化的场景-而dataSources相当于高层业务封装,像GeoJSON或KML这些带地理属性的数据,用它会自动处理坐标转换、时间序列等细节。引用2里提到它是Viewer的集成功能之一,说明设计目标就是简化操作具体到使用场景的选择依据:-当加载glTF模型或自定义shader特效时(比如实时变化的洪水模拟),必须用primitives——这点可以结合引用1和引用3的add()方法说明-如果是要展示台风路径这种带动态属性的地理数据,dataSources会为每个点自动生成Entity,省去手动创建几百个primitive的麻烦突然想到用户可能还会遇到边界情况:比如同时需要高效率和属性查询时,其实可以用PrimitiveCollection配合CustomDataSource来混合使用。不过这个进阶用法等ta追问再展开比较合适...</think> 在 Cesium 中,**`viewer.scene.primitives`** 与 **`viewer.dataSources`** 是两种不同的数据管理模块,核心区别在于**数据抽象层级、功能定位和适用场景**: --- ### **1. `viewer.scene.primitives`** - **定位**:**底层图形渲染接口** 直接操作场景中的几何图形(Primitive),属于**图形渲染层**。 - **数据类型**: - 基本图元(如点、线、面) - 自定义几何体(`Primitive` 或 `PrimitiveCollection`) - 3D Tiles 瓦片集(`Cesium3DTileset`) - 模型(`Model`) - 自定义 GLSL 着色器效果 - **使用场景**: - **高性能渲染**(如大规模点云、建筑白模) - **精细控制图形属性**(顶点、材质、光照等) - **动态生成几何体**(如实时轨迹、自定义热力图) - 加载 3D Tiles 数据流(如倾斜摄影、BIM 模型)[^3] - **代码示例**: ```javascript // 添加 3D Tiles const tileset = viewer.scene.primitives.add( new Cesium.Cesium3DTileset({ url: "path/to/tileset" }) ); // 自定义多边形 const polygon = viewer.scene.primitives.add( new Cesium.Primitive({ geometryInstances: new Cesium.GeometryInstance({ geometry: new Cesium.PolygonGeometry({ ... }), attributes: { color: Cesium.ColorGeometryInstanceAttribute.fromColor(...) } }), appearance: new Cesium.PerInstanceColorAppearance() }) ); ``` --- ### **2. `viewer.dataSources`** - **定位**:**高层数据源管理接口** 基于 `Entity` 体系,属于**业务数据层**。 - **数据类型**: - 矢量数据(GeoJSON, KML, CZML) - 动态实体(`Entity` 集合,如移动的飞机、传感器) - 时间序列数据(支持时间轴动画) - **使用场景**: - **地理信息可视化**(行政区划、传感器网络) - **动态实体管理**(如航班追踪、车辆轨迹) - **数据绑定与交互**(支持点击弹出信息框、属性绑定) - 加载带属性的矢量数据(如点击显示详细属性)[^2] - **代码示例**: ```javascript // 加载 GeoJSON 数据源 const dataSourcePromise = Cesium.GeoJsonDataSource.load("data.geojson"); viewer.dataSources.add(dataSourcePromise); // 动态创建实体 const entity = viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees(116.4, 39.9), point: { pixelSize: 10, color: Cesium.Color.RED }, label: { text: "北京" } }); ``` --- ### **核心区别总结** | **特性** | `viewer.scene.primitives` | `viewer.dataSources` | |--------------------------|----------------------------------------|--------------------------------------| | **抽象层级** | 底层图形接口(直接操作 WebGL) | 高层实体接口(基于 `Entity` API) | | **性能** | 更高(适合静态/大批量数据) | 较低(动态实体需维护属性) | | **功能** | 精细控制图形渲染 | 支持时间序列、属性绑定、交互事件 | | **典型数据** | 3D Tiles、自定义几何体 | GeoJSON/KML、动态轨迹 | | **交互支持** | 需手动实现(如点击事件) | 内置(点击显示属性框) | --- ### **使用建议** - **优先选择 `dataSources` 当:** - 需要展示**带属性的地理数据**(如城市名称、人口数量) - 处理**动态对象**(如移动的车辆、实时传感器数据) - 需要**内置交互功能**(点击弹窗、时间轴控制) - **优先选择 `primitives` 当:** - 渲染**超大规模静态数据**(如 10 万+建筑物) - 实现**自定义着色器效果**(如水面波动、动态热力) - 需要**极致性能优化**(如点云、地形裁剪) > 例如,加载一栋带详细属性信息的建筑模型(如楼高、业主)使用 **`dataSources`**;而加载包含 10 万栋建筑的 3D Tiles 城市白模则用 **`primitives`**[^1][^3]。 --- ### 相关问题 1. **如何在 `primitives` 中实现点击交互?** (需通过 `Scene.pick` 手动计算射线拾取) 2. **`Entity` 最终会被转换成 `primitives` 吗?** (是,Cesium 内部将 `Entity` 转换为 `Primitive` 渲染) 3. **什么场景适合混合使用两者?** (如用 `primitives` 渲染地形,`dataSources` 叠加动态气象数据)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值