使用场景图层
什么是场景图层?
场景图层是一种针对在场景中显示大量 3D 数据而优化的图层类型。场景图层显示以下数据类型:3D 对象、建筑物、集成格网、点、点云或体元图层。场景图层符合索引 3D 场景图层 (I3S) 格式。I3S 格式是一种开放式 3D 内容交付格式,移动、Web 和桌面客户端都支持。
I3S规范可以在 Github 上访问。
以 3D 形式可视化您的信息可以轻松且直观地理解和以逼真的方式体验地理信息。即使是不熟悉 GIS 的观众也可以通过在 Web 3D 场景中查看复杂而详细的数据来理解这些数据。能够捕捉现实世界中对象的 3D 特性,可以让您更精确地分析、测量和查询信息。
在 GeoScene API for JavaScript 中,场景图层有五个不同的类:SceneLayer、BuildingSceneLayer、PointCloudLayer、IntegratedMeshLayer 和 VoxelLayer。每一图层都有不同的 API。点场景图层和 3D 对象场景图层都公开了一个基于功能的 API,具有非常相似的功能。这就是为什么它们共享相同的 SceneLayer 类。
下表列出了 API 中对应的类和支持的功能:
场景图层类型 | API 类 | 支持渲染器 | 支持标注 | 支持查询 | 支持弹出窗口 | 示例 |
---|---|---|---|---|---|---|
3D 对象场景图层 | SceneLayer | 是(请参阅 renderers) | 否 | 部分(参见 SceneLayer 类的查询部分 ) | 是 (请查阅 popupTemplate) | |
点场景图层 | SceneLayer | 是(请参阅 renderers) | 是(请查阅 labelingInfo) | 部分(参见 SceneLayer 类的查询部分 ) | 是(请查阅 popupTemplate) | |
建筑场景图层 | BuildingSceneLayer | 是 (请参阅 renderers) | 否 | 部分(参见 BuildingSceneLayer 类的查询部分) | 是(请查阅 popupTemplate) | |
点云场景图层 | PointCloudLayer | 是(请参阅 PointCloudRenderer 中的支持渲染器) | 否 | 否 | 否 | |
集成格网场景图层 | IntegratedMeshLayer | 否 | 否 | 否 | 否 | |
体素图层 | VoxelLayer | 否 | 否 | 否 | 否 |
在 GeoScene Online 和 GeoScene Pro 文档中阅读有关平台级别场景图层类型的详细信息。
场景图层不断发展并提高了性能和可用性。您可以通过使用 I3S 转换器工具转换现有 SLPK 来利用最新功能:
- 导航到 I3S I3S Github 库。
- 选择 I3SConverter 文件夹。
- 下载 i3s_converter.exe。
- 运行转换器后,将创建一个 1.7 版的场景图层包。
场景图层的细节层次
为了提高性能,场景图层通常使用多个细节级别进行渲染。 在较大的比例(接近地面)下,将加载和显示所有几何。 当缩小具有较少顶点和较小纹理的几何的更粗糙表示时,显示仍然具有良好的性能。 除此之外,还移除了一些要素,此过程通常称为要素概化。
对于点场景图层和点云图层,应用了要素概化,因此在较小的比例下,点会从显示中移除。
点和 3D 对象场景图层
点和 3D 对象场景图层共享相同的 API 类:SceneLayer。
3D 对象场景图层主要用于显示 3D 要素,如建筑物和城市场景的其他元素。我们将这种类型的几何体称为 3D 对象。 您可以将这种类型的图层用于城市的真实视图或数据可视化。
点场景图层旨在显示大量点数据,最多可显示数百万个点。
发布
SceneLayer 的行为与其他图层一样,可以使用渲染器设置样式,查询属性,但它们具有更复杂的内部逻辑。每个功能都有一组属性,可用于创建可视化效果,或仅在弹出窗口中显示属性以获取更多信息。
SceneLayers 对属性的访问权限有限,具体取决于其发布方式。以下是发布这些图层的两个工作流的详细信息:
定义 - 属性仅存储在服务缓存中的 SceneLayer。用户可以配置将哪些属性存储在缓存中。有关此配置,请参阅 GeoScene Pro 文档。在这种情况下,只有加载的要素才能访问属性,因此不可能对整个数据集进行查询。这种类型的图层可用于设置建筑物的样式或在视图中显示有关要素的信息。 | 定义 - SceneLayer 除了具有缓存属性外,它还连接到存储属性的要素图层。在这种情况下,为缓存配置的属性也将出现在关联要素图层中。像这样发布图层时,所有要素都可访问所有属性,并且支持图层上的复杂查询。 |
发布:
| 发布:
|
属性从何而来?
渲染器、视觉变量、弹出窗口、标注、过滤器和查询可从缓存或关联要素图层中检索属性,具体取决于图层的发布方式。下表总结了这种行为。
渲染器/视觉变量 | 使用缓存属性。 | 如果关联要素图层是可编辑的,则使用关联要素图层上的属性。* 否则,将使用缓存属性。 |
过滤器 | 使用缓存属性。 | 如果关联要素图层是可编辑的,则使用关联要素图层上的属性。* 否则,将使用缓存属性。 |
标注 | 使用缓存属性。 | 如果关联要素图层是可编辑的,则使用关联要素图层上的属性。* 否则,将使用缓存属性。 |
弹出窗口 | 显示缓存属性。 | 将显示关联要素图层上的属性。 |
图层查询 | 不支持。 | 图层查询从关联要素图层的属性中获取结果。 |
LayerView 查询 | 查询从当前已加载要素的缓存属性中获取结果。 | 如果关联要素图层是可编辑的,则查询会从关联要素图层上的属性中获取结果。*否则,将使用缓存属性。 |
*如果图层已编辑,具有已编辑属性的要素将使用更新的属性进行渲染。直到已编辑要素的数量超过 50,000后,不会检索已编辑的属性,而是使用缓存的属性呈现要素。要在 GeoScene API for JavaScript 中编辑 SceneLayer,关联的要素图层应启用编辑和更改追踪。
有关每个功能的详细信息,请阅读 SceneLayer 类的描述。
技巧和窍门
- 如何获取属性值的统计信息?
您可以在 SceneLayer 上使用 smartMapping summaryStatistics 方法。如果图层没有关联的要素图层,则仅显示视图中加载的要素的统计信息。
- 我如何知道 SceneLayer 支持哪些功能?
对于每个字段,您可以使用 getFieldUsageInfo() 方法来确定是否支持使用该字段的弹出窗口、标注、渲染器或查询: