Esri Indexed 3D Scene Layer (I3S) Writer

FME can write large 3D datasets in the Esri® I3S format for use in the ArcGIS Pro and ArcGIS Online environments. For more information on the I3S format, see https://github.com/Esri/i3s-spec.

The I3S format allows scene viewers to efficiently display very large datasets of 3D objects, such as an entire city. The dataset is divided into a hierarchy of tiles, and viewers will only render tiles that are visible from the current viewpoint.

An I3S layer consists of an .slpk file, which contains the tile structure of the 3D dataset. Each tile has additional files that contain features, attributes, geometries and textures.

Esri Indexed 3D Scene Layer (I3S) Product and System Requirements

Format

FME Platform

Operating System

Reader/Writer

FME Form

FME Flow

FME Flow Hosted

Windows 64-bit

Linux

Mac

Writer

Yes

Yes

Yes

Yes

Yes

Yes

Writer Overview

The I3S writer produces a separate layer for each FME feature type. For each layer, the writer will assemble a pyramid of tiles. All features will be placed into tiles at the lowest level of the tree. Viewers will render these tiles when the scene view is zoomed in close to the features. Tiles at higher levels in the pyramid will be populated with a sampling of features present in the lower levels. This allows viewers to display a subset of the dataset when the view is zoomed out.

This format only writes out mesh geometries. Features with no geometry, or whose geometries cannot be converted to a triangular mesh, will not be written.

The coordinate system for a scene layer will be determined from the first feature written to that layer.

  • If the first feature has a geographic coordinate system, the layer will be written in WGS84 coordinates.
  • If the first feature has a projected coordinate system with a valid EPSG code, the layer will be written in that coordinate system. Otherwise the layer will be written in WGS84 coordinates.

Writing Large Mesh or Point Cloud Features

The writer does not split up features. For example, if a feature written is one large mesh, there will only be a few tiles written. The result will be tiles with too many faces, and this will likely make rendering slow on the client side.

In this case, you can divide the mesh into more features. One way to do this is by inserting a Tiler transformer, and setting Define Tiles By to Number of Tiles.

  • Columns – Specify the number of tiles desired along the x axis.
  • Rows – Specify the number of tiles desired along the y axis.

For example, if you set both Columns and Rows to 7, this will yield 47 tiles.

Note that this solution can also be used to break up other single-feature datasets such as point clouds when writing them to 3D Tiles.