A guide to SceneLayers

What are scene layers?

A scene layer is a type of layer that is optimized for displaying large amounts of 3D data in a scene. A scene layer displays the following data types: 3D object ,building, integrated mesh, point, point cloud , or a voxel layer. The scene layer complies with the Indexed 3D Scene layer (I3S) format. The I3S format is an open 3D content delivery format used to disseminate 3D GIS data to mobile, web, and desktop clients.

The specification for Indexed 3D Scene Layers can be accessed on GitHub.

Visualizing your information in 3D makes it easier to intuitively understand and experience geographic information in a realistic way. Even audiences unfamiliar with GIS can understand complex and detailed data by viewing it in a 3D scene on the web. Being able to capture the three-dimensional nature of objects in the real world allows you to analyze, measure, and query information with more precision.

In the ArcGIS Maps SDK for JavaScript scene layers have four different classes: SceneLayer, BuildingSceneLayer, PointCloudLayer, IntegratedMeshLayer and VoxelLayer. This distinction is necessary because each layer has a different API. Point scene layer and 3D Object scene layer both expose a feature based API, with very similar functionality. This is why they share the same SceneLayer class.

Below is a table with the corresponding classes and supported functionality in the API:

Type of scene layerAPI classSupports renderersSupports labelingSupports queryingSupports popupsSamples
3D Object scene layerSceneLayeryes (see renderers)nopartially (see Query section of the SceneLayer class)yes (see popupTemplate) 3D-object-sample
Point scene layerSceneLayeryes (see renderers)yes (see labelingInfo)partially (see Query section of the SceneLayer class)yes (see popupTemplate) point-scene-sample
Building scene layerBuildingSceneLayeryes (see renderers)nopartially (see Query section of the BuildingSceneLayer class)yes (see popupTemplate) point-scene-sample
Point cloud scene layerPointCloudLayeryes (see supported
renderers in PointCloudRenderer)
nonono point-cloud-samples
Integrated mesh scene layerIntegratedMeshLayernononono integrated-mesh-sample
Voxel layerVoxelLayernononoyes (see popupEnabled) voxel-scene-sample

Read more about the types of scene layers at the platform level in the ArcGIS Online and ArcGIS Pro documentation.

The scene layer continuous to evolve and improve performance and usability. You can take advantage of the newest updates by converting your existing SLPKs with the I3S Converter tool:

  • Navigate to the I3S GitHub repository.
  • Select the I3SConverter folder.
  • Download i3s_converter.exe.
  • After running the converter, a version 1.7 scene layer package is created.

Levels of detail for scene layers

To improve performance scene layers are usually rendered with several levels of detail. At larger scales (close to the ground) all the geometry is loaded and displayed. When zooming out much coarser representations of the geometry with fewer vertices and smaller textures are shown to still have good performance. In addition to that some features are also removed, a process usually referred to as feature thinning.

For point scene layers and point cloud layers feature thinning is applied, so at smaller scales points are removed from display.

Point and 3D Object scene layers

Point and 3D Object scene layers share the same API class: SceneLayer. In this article we write SceneLayer to refer to the Point and 3D Object SceneLayer API class and we write scene layer to refer to the platform level general concept of scene layers.

3D Object scene layers are mainly used for displaying 3D features like buildings and other elements of a city scene. We refer to this type of geometry as a 3D Object. You can use this type of layer for realistic views of a city or for data visualization.

Point scene layers are designed for displaying large amounts of point data, up to millions of points.

city-scene-layer-guide

Publishing

A SceneLayer behaves just like the other layers, they can be styled with renderers, queried for attributes, but they have a more complicated internal logic. Every feature has a set of attributes that can be used to create visualizations or simply display the attributes in a popup for more information.

SceneLayers will have limited access to attributes depending on how they were published. Here is a breakdown on the two workflows for publishing these layers:

SceneLayer with cached attributes only

cached-scene-layer
SceneLayer with associated feature layer

data-connected-scene-layer
Definition - a SceneLayer where attributes are only stored in the cache of the service. The user can configure which attributes will be stored in the cache. See ArcGIS Pro documentation for this configuration. In this case only loaded features have access to the attributes, so it's impossible to make queries on the whole dataset. This type of layer can be used for styling buildings or displaying information about features in the view.Definition - a SceneLayer that is also connected to a feature layer. Through the associated feature layer edits to scene layers are applied on the fly and support a limited number of edits until you need to rebuild the cache. This concept allows access to individual features while benefiting from optimized display through scene layers. Attributes and mesh geometry for 3D object features that are configured for the cache are also directly available through the associated feature layer. When publishing layers like this, all features have access to all attributes and complex queries on the layer are supported. See also ArcGIS Pro documentation.
Publishing:
  • When uploading a scene layer package to ArcGIS Online or Portal (created with ArcGIS Pro, City Engine or third party software). See documentation for Portal and for ArcGIS Online.
Publishing:
  • In Portal when publishing a scene layer directly from ArcGIS Pro (see documentation).
  • In ArcGIS Online with an Organizational account with a publisher role when publishing a scene layer from a feature layer. (see documentation).

Publishing: Scene layer for editing mesh geometry (model upload) in ArcGIS Online (beta)

To upload, update and delete 3D objects using scene layer editing capabilities (released in beta) services need to be published in the following manner.

Workflow to publish directly from ArcGIS Pro 3.2 to ArcGIS Online or ArcGIS Enterprise 11.2
  1. Open ArcGIS Pro 3.2 and newer and create a new Scene:
    • Global: for GCS like WGS84 to use in a scene in viewingmode global
    • Local: for PCS to use in a scene in viewingmode local Make sure the Scene and the File Geodatabase Feature Class has the same coordinate system, see "Prepare your data".
  2. Create a 3D object feature class in a file geodatabase, see ArcGIS Pro documentation "Create a 3D object feature class"
  3. Add storage format GLB (Khronos Group glTF binary) that enables support for uploading and downloading models on the web, see ArcGIS Pro documentation "Modify a 3D object feature class"
    a. Open Analysis > Tools
    b. Search for and open Add 3D Formats to multipatch
    c. Add .glb and run the tool
  4. Right-click on your Feature Class in the Contents tab in the 3D Layers section and point to Sharing and click Share as a Web Layer, see Share a web scene layer
  5. In the newly opened pane, fill out necessary fields and make sure to select with who do you want to share a layer before clicking Publish
    • Configuration Caching: Cache Online
    • Configuration Associated web feature layer operations: Enable editing
  6. Once the layer is published you can check it in ArcGIS Online by clicking on the Manage the web layer link in the success message
Workflow to publish with uploading a file geodatabase created with ArcGIS Pro 3.1 and newer to ArcGIS Online
  1. Open ArcGIS Pro 3.1 and newer and create a new Scene:
    • Global: for GCS like WGS84 to use in a scene in viewingmode global
    • Local: for PCS to use in a scene in viewingmode local
      Make sure the Scene and the File Geodatabase Feature Class has the same coordinate system, see "Prepare your data".
  2. Create a 3D object feature class in a file geodatabase, see ArcGIS Pro documentation "Create a 3D object feature class"
  3. Add storage format GLB (Khronos Group glTF binary) that enables support for uploading models on the web, see ArcGIS Pro documentation "Modify a 3D object feature class"
    a. Open Analysis > Tools
    b. Search for and open Add 3D Formats to multipatch
    c. Add .glb and run the tool
  4. Create a zip file of the file geodatabase containing only your new 3D object feature class

Publish data using your organization on ArcGIS Online:

  1. Upload the .zip file and publish as a feature layer, see ArcGIS Online documentation "Publish the contents of a file geodatabase"
  2. From the published feature layer publish the scene layer, see ArcGIS Online documentation "Publish hosted scene layers"
  3. Enable editing on the feature layer as appropriate for your workflows, see ArcGIS Online documentation "Manage hosted feature layer editing"

Where do attributes come from?

Renderers, visual variables, popups, labels, filters and queries retrieve attributes either from the cache or from the associated feature layer, depending on how layers are published. The following table summarizes this behavior.

SceneLayer with cached attributes only
SceneLayer with associated feature layer
Renderers / Visual variablesCached attributes are used.If the associated feature layer is editable, then attributes on the associated feature layer are used.* Otherwise, cached attributes are used.
FilterCached attributes are used.If the associated feature layer is editable, then attributes on the associated feature layer are used.* Otherwise, cached attributes are used.
LabelsCached attributes are used.If the associated feature layer is editable, then attributes on the associated feature layer are used.* Otherwise, cached attributes are used.
PopupsCached attributes are displayed.Attributes on the associated feature layer are displayed.
Layer queryNot possible.Layer query gets results from attributes on the associated feature layer.
LayerView queryQuery gets results from cached attributes for currently loaded features.If the associated feature layer is editable, then Query gets results from attributes on the associated feature layer.* Otherwise, cached attributes are used.

* If the layer is edited, the features with edited attributes are rendered with the updated attributes until the number of edited features exceeds 50,000. After that, the edited attributes are not retrieved, and the features are rendered with the cached, outdated attributes. To edit a SceneLayer in ArcGIS Maps SDK for JavaScript, the associated feature layer should have editing and change tracking enabled.

For details about each of these features, read the description of the SceneLayer class.

Tips and tricks

  • How can I get statistics on attribute values?

You can use the smartMapping summaryStatistics method on the SceneLayer. If the layer doesn't have an associated feature layer, then statistics are only displayed for the features that are loaded in the view.

  • How do I know what functionality my SceneLayer supports?

For each field you can use the getFieldUsageInfo() method to find out whether popups, labels, renderers or queries using that field are supported:

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
sceneLayer.then(function () {
  // get information on whether `OBJECTID` is available for query:
  console.log(sceneLayer.getFieldUsageInfo("OBJECTID"));
  // the result shows that layer queries are not available for this field
  // this means that either the associated feature layer is not available
  // or that the field can't be found in the associated feature layer
  /* Object {
    supportsLabelingInfo: true,
    supportsLayerQuery: false,
    supportsPopupTemplate: true,
    supportsRenderer: true
  }*/

  // query layer for features
  sceneLayer
    .queryFeatures()
    .then(function (result) {
      console.log(result);
    })
    .catch(function (err) {
      console.error(err);
    });
  // querying the layer will result in an error:
  // message: "SceneLayer queries are not available without associated feature layer",
  // name: "scenelayer:query-not-available",
});

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.