# I3SDataProvider

#### new Cesium.I3SDataProvider(options)
engine/Source/Scene/I3SDataProvider.js 97

An I3SDataProvider is the main public class for I3S support. The url option should return a scene object. Currently supported I3S versions are 1.6 and 1.7/1.8 (OGC I3S 1.2). I3SFeature and I3SNode classes implement the Object Model for I3S entities, with public interfaces.

Name | Type | Description
--- | --- | ---
`options` | object | Object with the following properties:
Name | Type | Default | Description
--- | --- | --- | ---
`url` | Resource | string |  | The url of the I3S dataset.
`name` | string |  | optional The name of the I3S dataset.
`show` | boolean | `true` | optional Determines if the dataset will be shown.
`geoidTiledTerrainProvider` | ArcGISTiledElevationTerrainProvider |  | optional Tiled elevation provider describing an Earth Gravitational Model. If defined, geometry will be shifted based on the offsets given by this provider. Required to position I3S data sets with gravity-related height at the correct location.
`traceFetches` | boolean | `false` | optional Debug option. When true, log a message whenever an I3S tile is fetched.
`cesium3dTilesetOptions` | object |  | optional Object containing options to pass to an internally created `Cesium3DTileset`. See `Cesium3DTileset` for list of valid properties. All options can be used with the exception of `url` and `show` which are overridden by values from I3SDataProvider.

##### Examples:

    const i3sData = new I3SDataProvider({
      url: 'https://tiles.arcgis.com/tiles/z2tnIkrLQ2BRzr6P/arcgis/rest/services/Frankfurt2017_vi3s_18/SceneServer/layers/0'
    });
    viewer.scene.primitives.add(i3sData);

    const geoidService = new Cesium.ArcGISTiledElevationTerrainProvider({
      url: "https://tiles.arcgis.com/tiles/z2tnIkrLQ2BRzr6P/arcgis/rest/services/EGM2008/ImageServer",
    });
    let i3sData = new I3SDataProvider({
      url: 'https://tiles.arcgis.com/tiles/z2tnIkrLQ2BRzr6P/arcgis/rest/services/Frankfurt2017_vi3s_18/SceneServer/layers/0',
      geoidTiledTerrainProvider: geoidService
    });
    viewer.scene.primitives.add(i3sData);

### Members

#### readonly data : object
engine/Source/Scene/I3SDataProvider.js 221

Gets the I3S data for this object.

#### readonly extent : Rectangle
engine/Source/Scene/I3SDataProvider.js 241

Gets the extent covered by this I3S.

#### readonly geoidTiledTerrainProvider : ArcGISTiledElevationTerrainProvider
engine/Source/Scene/I3SDataProvider.js 189

The terrain provider referencing the GEOID service to be used for orthometric to ellipsoidal conversion.

#### readonly layers : Array.<I3SLayer>
engine/Source/Scene/I3SDataProvider.js 201

Gets the collection of layers.

#### readonly name : string
engine/Source/Scene/I3SDataProvider.js 136

Gets a human-readable name for this dataset.

#### readonly ready : boolean
engine/Source/Scene/I3SDataProvider.js 274

When `true`, the I3S scene is loaded. This is set to `true` right before `I3SDataProvider#readyPromise` is resolved.

#### readonly readyPromise : Promise.<I3SDataProvider>
engine/Source/Scene/I3SDataProvider.js 261

Gets the promise that will be resolved when the I3S scene is loaded.

#### readonly resource : Resource
engine/Source/Scene/I3SDataProvider.js 286

The resource used to fetch the I3S dataset.

#### show : boolean
engine/Source/Scene/I3SDataProvider.js 147

Determines if the dataset will be shown.

#### traceFetches : boolean
engine/Source/Scene/I3SDataProvider.js 170

Gets or sets debugging and tracing of I3S fetches.

### Methods

#### destroy()
engine/Source/Scene/I3SDataProvider.js 306

Destroys the WebGL resources held by this object. Destroying an object allows for deterministic release of WebGL resources, instead of relying on the garbage collector to destroy this object.

Once an object is destroyed, it should not be used; calling any function other than `isDestroyed` will result in a `DeveloperError` exception. Therefore, assign the return value (`undefined`) to the object as done in the example.

##### Throws:

- DeveloperError : This object was destroyed, i.e., destroy() was called.

##### See:

- I3SDataProvider#isDestroyed

#### isDestroyed() → boolean
engine/Source/Scene/I3SDataProvider.js 327

Returns true if this object was destroyed; otherwise, false.

If this object was destroyed, it should not be used; calling any function other than `isDestroyed` will result in a `DeveloperError` exception.

##### Returns:

`true` if this object was destroyed; otherwise, `false`.

##### See:

- I3SDataProvider#destroy

Need help? The fastest way to get answers is from the community and team on the Cesium Forum.