Terrain Schema
Alias: trrn
Version: 1.0.0
Base schema for the Terrain domain.
This schema contains classes that are used to provide context terrains. Cuts, fills and modifications to terrain are defined in the Earthwork schema.
See the ITerrain documentation for details on how terrain is defined in iModels.

Table of contents
Entity Classes
Terrain (Terrain) EntityClass 
A bis:PhysicalElement modeling the base terrain for a small portion of the earth.
Base Class: BisCore:PhysicalElement
Inherited properties
| Name | Description | Type | Extended Type |
|---|---|---|---|
| Model | The bis:Model that contains this bis:Element. | navigation | |
| LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
| CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeValue | Nullable string property that holds the actual text of an Element's Code. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
| UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
| Parent | The parent bis:Element that owns this bis:Element. | navigation | |
| FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
| JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
| Category | The bis:SpatialCategory used to categorize this bis:GeometricElement3d | navigation | |
| InSpatialIndex | If true, this element will have an entry in the Spatial Index. | boolean | |
| Origin | The placement origin of this bis:Element. | point3d | |
| Yaw | The Yaw angle (in degrees) of the orientation of this bis:Element. | double | |
| Pitch | The Pitch angle (in degrees) of the orientation of this bis:Element. | double | |
| Roll | The Roll angle (in degrees) of the orientation of this bis:Element. | double | |
| BBoxLow | The 'low' point of the element-aligned bounding box of this bis:Element. | point3d | |
| BBoxHigh | The 'high' point of the element-aligned bounding box of this bis:Element. | point3d | |
| GeometryStream | Binary stream used to persist the geometry of this bis:Element. | binary | GeometryStream |
| TypeDefinition | Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. | navigation | |
| PhysicalMaterial | Indicates the bis:PhysicalMaterial of which the bis:PhysicalElement is made. | navigation |
Terrain is used to define context for assets and projects that may be expected to change and therefore, it is fully contained within an iModel. Terrains are expected to be of small or medium size in order to not negatively impact performance of iModels. Large terrains are expected to be captured by TerrainReferences.
Every Terrain owns multiple TerrainSourceFeatures, which capture details of the Terrain that are not calculated, such as its boundary, breaklines or spot elevations. Calculated details such as contours, flow arrows or triangles are not expected to be captured as child elements of a Terrain. Instead, they are expected to be calculated at display-time. They can be still captured in iModels as, for instance, DrawingElements in DrawingModels if needed for sheet-production.
Terrains already calculated will have their calculated Surface stored in their GeometryStream as a Polyface.
Terrains must be contained in PhysicalModels. The same repercussions of the choice of the containing Model for TerrainReference apply to Terrain.
Instances of Terrain, by default, shall use the Domain-ranked trrn:Terrain category.
TerrainBoundary (Terrain Boundary) EntityClass 
A bis:SpatialLocationElement capturing the maximum external limits an ITerrain element is modeling.
Base Class: BisCore:SpatialLocationElement
Inherited properties
| Name | Description | Type | Extended Type |
|---|---|---|---|
| Model | The bis:Model that contains this bis:Element. | navigation | |
| LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
| CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeValue | Nullable string property that holds the actual text of an Element's Code. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
| UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
| Parent | The parent bis:Element that owns this bis:Element. | navigation | |
| FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
| JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
| Category | The bis:SpatialCategory used to categorize this bis:GeometricElement3d | navigation | |
| InSpatialIndex | If true, this element will have an entry in the Spatial Index. | boolean | |
| Origin | The placement origin of this bis:Element. | point3d | |
| Yaw | The Yaw angle (in degrees) of the orientation of this bis:Element. | double | |
| Pitch | The Pitch angle (in degrees) of the orientation of this bis:Element. | double | |
| Roll | The Roll angle (in degrees) of the orientation of this bis:Element. | double | |
| BBoxLow | The 'low' point of the element-aligned bounding box of this bis:Element. | point3d | |
| BBoxHigh | The 'high' point of the element-aligned bounding box of this bis:Element. | point3d | |
| GeometryStream | Binary stream used to persist the geometry of this bis:Element. | binary | GeometryStream |
| TypeDefinition | Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. | navigation |
One TerrainBoundary is expected for every ITerrain instance.
An ITerrain, if already calculated, has a Boundary captured by a single child element of type TerrainBoundary, which stores the boundary's geometrical details in its GeometryStream as a closed line-string (i.e. no arcs) encoded into a single LineString3d. The first and last point of the LineString3d shall be the same.
Instances of TerrainBoundary, by default, shall use the Domain-ranked trrn:Boundary category.
TerrainBreakline (Terrain Breakline) EntityClass 
A TerrainSourceFeature capturing a linear feature in a terrain where abrupt changes of slope occur.
Base Class: Terrain:TerrainSourceFeatureElement
Inherited properties
| Name | Description | Type | Extended Type |
|---|---|---|---|
| Model | The bis:Model that contains this bis:Element. | navigation | |
| LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
| CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeValue | Nullable string property that holds the actual text of an Element's Code. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
| UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
| Parent | The parent bis:Element that owns this bis:Element. | navigation | |
| FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
| JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
| Category | The bis:SpatialCategory used to categorize this bis:GeometricElement3d | navigation | |
| InSpatialIndex | If true, this element will have an entry in the Spatial Index. | boolean | |
| Origin | The placement origin of this bis:Element. | point3d | |
| Yaw | The Yaw angle (in degrees) of the orientation of this bis:Element. | double | |
| Pitch | The Pitch angle (in degrees) of the orientation of this bis:Element. | double | |
| Roll | The Roll angle (in degrees) of the orientation of this bis:Element. | double | |
| BBoxLow | The 'low' point of the element-aligned bounding box of this bis:Element. | point3d | |
| BBoxHigh | The 'high' point of the element-aligned bounding box of this bis:Element. | point3d | |
| GeometryStream | Binary stream used to persist the geometry of this bis:Element. | binary | GeometryStream |
| TypeDefinition | Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. | navigation |
TerrainBreaklines are used to designate linear features such as edges of pavement, ditch bottoms, ridges, etc. where an abrupt change of slope occurs. Any longitudinal element may be defined as a break line. One TerrainBreakline typically captures one of such linear features, but multiple of them could be captured by a single TerrainBreakline instance if they do not capture additional data per breakline feature.
A TerrainBreakline stores its geometrical details in its GeometryStream as line-strings (i.e. no arcs) which may be open or closed. These line-strings shall be encoded as a LineString3d. If a single instance of TerrainBreakline is capturing multiple breaklines, each breakline shall be encoded into a separate LineString3d in the GeometryStream.
Instances of TerrainBreakline, by default, shall use the Domain-ranked trrn:Breakline category.
TerrainDrapeBoundary (Terrain Drape Boundary) EntityClass 
A TerrainSourceFeature capturing a surface boundary that determines its elevations by draping on the underlying surface.
Base Class: Terrain:TerrainSourceFeatureElement
Inherited properties
| Name | Description | Type | Extended Type |
|---|---|---|---|
| Model | The bis:Model that contains this bis:Element. | navigation | |
| LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
| CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeValue | Nullable string property that holds the actual text of an Element's Code. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
| UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
| Parent | The parent bis:Element that owns this bis:Element. | navigation | |
| FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
| JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
| Category | The bis:SpatialCategory used to categorize this bis:GeometricElement3d | navigation | |
| InSpatialIndex | If true, this element will have an entry in the Spatial Index. | boolean | |
| Origin | The placement origin of this bis:Element. | point3d | |
| Yaw | The Yaw angle (in degrees) of the orientation of this bis:Element. | double | |
| Pitch | The Pitch angle (in degrees) of the orientation of this bis:Element. | double | |
| Roll | The Roll angle (in degrees) of the orientation of this bis:Element. | double | |
| BBoxLow | The 'low' point of the element-aligned bounding box of this bis:Element. | point3d | |
| BBoxHigh | The 'high' point of the element-aligned bounding box of this bis:Element. | point3d | |
| GeometryStream | Binary stream used to persist the geometry of this bis:Element. | binary | GeometryStream |
| TypeDefinition | Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. | navigation |
Up to one TerrainDrapeBoundary is expected for every Terrain instance, if a terrain's limits were explicitely defined on its source.
A TerrainDrapeBoundary stores its geometrical details in its GeometryStream as a closed line-string (i.e. no arcs) encoded as a LineString3d. Z-coordinates shall be the same (planar). The first and last point of the LineString3d shall be the same.
Instances of TerrainDrapeBoundary, by default, shall use the Domain-ranked trrn:DrapeBoundary category.
TerrainDrapeVoid (Terrain Drape Void) EntityClass 
A TerrainSourceFeature capturing an area defined by a closed shape that delineates a region of missing or invalid data that should not be used. It determines its elevations by draping on the underlying surface.
Base Class: Terrain:TerrainSourceFeatureElement
Inherited properties
| Name | Description | Type | Extended Type |
|---|---|---|---|
| Model | The bis:Model that contains this bis:Element. | navigation | |
| LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
| CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeValue | Nullable string property that holds the actual text of an Element's Code. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
| UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
| Parent | The parent bis:Element that owns this bis:Element. | navigation | |
| FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
| JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
| Category | The bis:SpatialCategory used to categorize this bis:GeometricElement3d | navigation | |
| InSpatialIndex | If true, this element will have an entry in the Spatial Index. | boolean | |
| Origin | The placement origin of this bis:Element. | point3d | |
| Yaw | The Yaw angle (in degrees) of the orientation of this bis:Element. | double | |
| Pitch | The Pitch angle (in degrees) of the orientation of this bis:Element. | double | |
| Roll | The Roll angle (in degrees) of the orientation of this bis:Element. | double | |
| BBoxLow | The 'low' point of the element-aligned bounding box of this bis:Element. | point3d | |
| BBoxHigh | The 'high' point of the element-aligned bounding box of this bis:Element. | point3d | |
| GeometryStream | Binary stream used to persist the geometry of this bis:Element. | binary | GeometryStream |
| TypeDefinition | Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. | navigation |
The same restrictions described for TerrainVoids are applicable to TerrainDrapeVoids.
A TerrainDrapeVoid stores its geometrical details in its GeometryStream as closed line-strings (i.e. no arcs) encoded into a LineString3d. Z-coordinates shall be the same (planar). The first and last point of the LineString3d shall be the same. If a single instance of TerrainVoid is capturing multiple void features, each void feature shall be encoded into a separate LineString3d in the GeometryStream.
Instances of TerrainVoid, by default, shall use the Domain-ranked trrn:Void category.
TerrainHole (Terrain Hole) EntityClass 
A TerrainSourceFeature capturing an area defined by a closed shape that delineates a region where the current terrain is ignored and the underlying terrain is utilized.
Base Class: Terrain:TerrainSourceFeatureElement
Inherited properties
| Name | Description | Type | Extended Type |
|---|---|---|---|
| Model | The bis:Model that contains this bis:Element. | navigation | |
| LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
| CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeValue | Nullable string property that holds the actual text of an Element's Code. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
| UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
| Parent | The parent bis:Element that owns this bis:Element. | navigation | |
| FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
| JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
| Category | The bis:SpatialCategory used to categorize this bis:GeometricElement3d | navigation | |
| InSpatialIndex | If true, this element will have an entry in the Spatial Index. | boolean | |
| Origin | The placement origin of this bis:Element. | point3d | |
| Yaw | The Yaw angle (in degrees) of the orientation of this bis:Element. | double | |
| Pitch | The Pitch angle (in degrees) of the orientation of this bis:Element. | double | |
| Roll | The Roll angle (in degrees) of the orientation of this bis:Element. | double | |
| BBoxLow | The 'low' point of the element-aligned bounding box of this bis:Element. | point3d | |
| BBoxHigh | The 'high' point of the element-aligned bounding box of this bis:Element. | point3d | |
| GeometryStream | Binary stream used to persist the geometry of this bis:Element. | binary | GeometryStream |
| TypeDefinition | Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. | navigation |
TerrainHoles can be used for marking areas of the Terrain that are not used or displayed. TerrainHoles are typically used to mark areas of a design terrain that are not intended for use. One TerrainHole typically captures one hole feature, but multiple of them could be captured by a single TerrainHole instance if they do not capture additional data per hole feature.
A TerrainHole stores its geometrical details in its GeometryStream as closed line-strings (i.e. no arcs) encoded into a single LineString3d. The first and last point of the LineString3d shall be the same. If a single instance of TerrainHole is capturing multiple hole features, each hole feature shall be encoded into a separate LineString3d in the GeometryStream.
Instances of TerrainHole, by default, shall use the Domain-ranked trrn:Hole category.
TerrainIsland (Terrain Island) EntityClass 
A TerrainSourceFeature capturing an area defined by a closed shape that demarcates a region for which data exists within a void of a terrain.
Base Class: Terrain:TerrainSourceFeatureElement
Inherited properties
| Name | Description | Type | Extended Type |
|---|---|---|---|
| Model | The bis:Model that contains this bis:Element. | navigation | |
| LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
| CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeValue | Nullable string property that holds the actual text of an Element's Code. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
| UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
| Parent | The parent bis:Element that owns this bis:Element. | navigation | |
| FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
| JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
| Category | The bis:SpatialCategory used to categorize this bis:GeometricElement3d | navigation | |
| InSpatialIndex | If true, this element will have an entry in the Spatial Index. | boolean | |
| Origin | The placement origin of this bis:Element. | point3d | |
| Yaw | The Yaw angle (in degrees) of the orientation of this bis:Element. | double | |
| Pitch | The Pitch angle (in degrees) of the orientation of this bis:Element. | double | |
| Roll | The Roll angle (in degrees) of the orientation of this bis:Element. | double | |
| BBoxLow | The 'low' point of the element-aligned bounding box of this bis:Element. | point3d | |
| BBoxHigh | The 'high' point of the element-aligned bounding box of this bis:Element. | point3d | |
| GeometryStream | Binary stream used to persist the geometry of this bis:Element. | binary | GeometryStream |
| TypeDefinition | Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. | navigation |
One TerrainIsland typically captures one island feature, but multiple of them could be captured by a single TerrainIsland instance if they do not capture additional data per island feature.
A TerrainIsland stores its geometrical details in its GeometryStream as closed line-strings (i.e. no arcs) encoded into a LineString3d. The first and last point of the LineString3d shall be the same. If a single instance of TerrainIsland is capturing multiple island features, each island feature shall be encoded into a separate LineString3d in the GeometryStream.
Instances of TerrainIsland, by default, shall use the Domain-ranked trrn:Island category.
TerrainReference (Terrain Reference) EntityClass 
A reference to a bis:RepositoryLink capturing the location of the service providing the base terrain for a portion of the earth.
Base Class: BisCore:PhysicalElement
Terrain data in TerrainReferences is always provided by a service, but may be locally cached. The location of the service providing the TerrainReference is captured by the RepositoryLink instance stored in the iModel's global RealityDataSourcesModel. Such instance is referenced via the RepositoryLink navigation-property.
Where multiple TerrainReferences overlap, the TerrainReference with the highest Priority will be used.
TerrainReferences must be contained in PhysicalModels. The choice of the containing Model has these repercussions:
- The visibility of the terrain is controlled along with the visibility of other
Elements in theModel. - There is an implication that the party responsible for the other
Elements in theModelis also responsible for theTerrainReference.
Every TerrainReference has a Footprint captured in an associated RealityDataMask element. This Footprint is used to clip overlapping areas of TerrainReferences with lower priority.

Properties
| Name | Description | Type | Extended Type |
|---|---|---|---|
| RepositoryLink | Reference to the bis:RepositoryLink capturing the location of the service that provides the terrain. | navigation | |
| Priority | The relative priority of this ITerrain to other ITerrain's. Where ITerrain overlap, the one with the larger Priority is used. | int |
Inherited properties
| Name | Description | Type | Extended Type |
|---|---|---|---|
| Model | The bis:Model that contains this bis:Element. | navigation | |
| LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
| CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeValue | Nullable string property that holds the actual text of an Element's Code. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
| UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
| Parent | The parent bis:Element that owns this bis:Element. | navigation | |
| FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
| JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
| Category | The bis:SpatialCategory used to categorize this bis:GeometricElement3d | navigation | |
| InSpatialIndex | If true, this element will have an entry in the Spatial Index. | boolean | |
| Origin | The placement origin of this bis:Element. | point3d | |
| Yaw | The Yaw angle (in degrees) of the orientation of this bis:Element. | double | |
| Pitch | The Pitch angle (in degrees) of the orientation of this bis:Element. | double | |
| Roll | The Roll angle (in degrees) of the orientation of this bis:Element. | double | |
| BBoxLow | The 'low' point of the element-aligned bounding box of this bis:Element. | point3d | |
| BBoxHigh | The 'high' point of the element-aligned bounding box of this bis:Element. | point3d | |
| GeometryStream | Binary stream used to persist the geometry of this bis:Element. | binary | GeometryStream |
| TypeDefinition | Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. | navigation | |
| PhysicalMaterial | Indicates the bis:PhysicalMaterial of which the bis:PhysicalElement is made. | navigation |
TerrainSourceContour (Terrain Source Contour) EntityClass 
A TerrainSourceFeature capturing a linear element(s) at the same elevation created as source data for a terrain.
Base Class: Terrain:TerrainSourceFeatureElement
Inherited properties
| Name | Description | Type | Extended Type |
|---|---|---|---|
| Model | The bis:Model that contains this bis:Element. | navigation | |
| LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
| CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeValue | Nullable string property that holds the actual text of an Element's Code. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
| UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
| Parent | The parent bis:Element that owns this bis:Element. | navigation | |
| FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
| JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
| Category | The bis:SpatialCategory used to categorize this bis:GeometricElement3d | navigation | |
| InSpatialIndex | If true, this element will have an entry in the Spatial Index. | boolean | |
| Origin | The placement origin of this bis:Element. | point3d | |
| Yaw | The Yaw angle (in degrees) of the orientation of this bis:Element. | double | |
| Pitch | The Pitch angle (in degrees) of the orientation of this bis:Element. | double | |
| Roll | The Roll angle (in degrees) of the orientation of this bis:Element. | double | |
| BBoxLow | The 'low' point of the element-aligned bounding box of this bis:Element. | point3d | |
| BBoxHigh | The 'high' point of the element-aligned bounding box of this bis:Element. | point3d | |
| GeometryStream | Binary stream used to persist the geometry of this bis:Element. | binary | GeometryStream |
| TypeDefinition | Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. | navigation |
One TerrainSourceContour typically captures one contour, but multiple of them could be captured by a single TerrainSourceContour instance if they do not capture additional data per contour.
A TerrainSourceContour stores its geometrical details in its GeometryStream as an open or closed line-string (i.e. no arcs), encoded into a LineString3d. If it is closed then the first and last point of the LineString3d shall be the same. If a single instance of TerrainSourceContour is capturing multiple contours, each contour shall be encoded into a separate LineString3ds in the GeometryStream.
Instances of TerrainSourceContour, by default, shall use the Domain-ranked trrn:SourceContour category.
TerrainSourceFeatureElement Abstract EntityClass 
A bis:SpatialLocationElement serving as base class for elements capturing specific details of a parent Terrain element that came from the source data that was utilized to create the Terrain element.
Base Class: BisCore:SpatialLocationElement
Inherited properties
| Name | Description | Type | Extended Type |
|---|---|---|---|
| Model | The bis:Model that contains this bis:Element. | navigation | |
| LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
| CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeValue | Nullable string property that holds the actual text of an Element's Code. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
| UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
| Parent | The parent bis:Element that owns this bis:Element. | navigation | |
| FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
| JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
| Category | The bis:SpatialCategory used to categorize this bis:GeometricElement3d | navigation | |
| InSpatialIndex | If true, this element will have an entry in the Spatial Index. | boolean | |
| Origin | The placement origin of this bis:Element. | point3d | |
| Yaw | The Yaw angle (in degrees) of the orientation of this bis:Element. | double | |
| Pitch | The Pitch angle (in degrees) of the orientation of this bis:Element. | double | |
| Roll | The Roll angle (in degrees) of the orientation of this bis:Element. | double | |
| BBoxLow | The 'low' point of the element-aligned bounding box of this bis:Element. | point3d | |
| BBoxHigh | The 'high' point of the element-aligned bounding box of this bis:Element. | point3d | |
| GeometryStream | Binary stream used to persist the geometry of this bis:Element. | binary | GeometryStream |
| TypeDefinition | Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. | navigation |
TerrainSourceFeatureElements store its geometrical details in their GeometryStream.
TerrainSpotElevation (Terrain Spot Elevation) EntityClass 
A TerrainSourceFeature capturing a specific point-location(s) with no functional relationship with any other point in a terrain.
Base Class: Terrain:TerrainSourceFeatureElement
Inherited properties
| Name | Description | Type | Extended Type |
|---|---|---|---|
| Model | The bis:Model that contains this bis:Element. | navigation | |
| LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
| CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeValue | Nullable string property that holds the actual text of an Element's Code. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
| UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
| Parent | The parent bis:Element that owns this bis:Element. | navigation | |
| FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
| JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
| Category | The bis:SpatialCategory used to categorize this bis:GeometricElement3d | navigation | |
| InSpatialIndex | If true, this element will have an entry in the Spatial Index. | boolean | |
| Origin | The placement origin of this bis:Element. | point3d | |
| Yaw | The Yaw angle (in degrees) of the orientation of this bis:Element. | double | |
| Pitch | The Pitch angle (in degrees) of the orientation of this bis:Element. | double | |
| Roll | The Roll angle (in degrees) of the orientation of this bis:Element. | double | |
| BBoxLow | The 'low' point of the element-aligned bounding box of this bis:Element. | point3d | |
| BBoxHigh | The 'high' point of the element-aligned bounding box of this bis:Element. | point3d | |
| GeometryStream | Binary stream used to persist the geometry of this bis:Element. | binary | GeometryStream |
| TypeDefinition | Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. | navigation |
One TerrainSpotElevation typically captures one point, but multiple of them could be captured by a single TerrainSpotElevation instance if they do not capture additional data per spot elevation.
A TerrainSpotElevation stores its geometrical details in its GeometryStream as a PointString3d. The elevation captured by a TerrainSpotElevation can be read from each point's Z-coordinate in the PointString3d. If a single instance of TerrainSpotElevation is capturing only one Spot elevation, its GeometryStream shall contain a PointString3d with one single point in it.
Instances of TerrainSpotElevation, by default, shall use the Domain-ranked trrn:SpotElevation category.
TerrainVoid (Terrain Void) EntityClass 
A TerrainSourceFeature capturing an area defined by a closed shape that delineates a region of missing or invalid data that should not be used.
Base Class: Terrain:TerrainSourceFeatureElement
Inherited properties
| Name | Description | Type | Extended Type |
|---|---|---|---|
| Model | The bis:Model that contains this bis:Element. | navigation | |
| LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
| CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
| CodeValue | Nullable string property that holds the actual text of an Element's Code. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
| UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
| Parent | The parent bis:Element that owns this bis:Element. | navigation | |
| FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
| JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
| Category | The bis:SpatialCategory used to categorize this bis:GeometricElement3d | navigation | |
| InSpatialIndex | If true, this element will have an entry in the Spatial Index. | boolean | |
| Origin | The placement origin of this bis:Element. | point3d | |
| Yaw | The Yaw angle (in degrees) of the orientation of this bis:Element. | double | |
| Pitch | The Pitch angle (in degrees) of the orientation of this bis:Element. | double | |
| Roll | The Roll angle (in degrees) of the orientation of this bis:Element. | double | |
| BBoxLow | The 'low' point of the element-aligned bounding box of this bis:Element. | point3d | |
| BBoxHigh | The 'high' point of the element-aligned bounding box of this bis:Element. | point3d | |
| GeometryStream | Binary stream used to persist the geometry of this bis:Element. | binary | GeometryStream |
| TypeDefinition | Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. | navigation |
TerrainSpotElevations or TerrainBreaklines located within a TerrainVoid area are ignored. That is, no point or break-line data located within the void area is utilized and no triangles are created inside the void areas. The void coordinates are included in the triangulation and void lines, between successive void coordinates, are inserted as drape lines on the surface. Therefore, they do not change the slope or elevations of the surface. A TerrainVoid never overrides a TerrainIsland.
One TerrainVoid typically captures one void feature, but multiple of them could be captured by a single TerrainVoid instance if they do not capture additional data per void feature.
A TerrainVoid stores its geometrical details in its GeometryStream as closed line-strings (i.e. no arcs) encoded into a LineString3d. The first and last point of the LineString3d shall be the same. If a single instance of TerrainVoid is capturing multiple void features, each void feature shall be encoded into a separate LineString3d in the GeometryStream.
Instances of TerrainVoid, by default, shall use the Domain-ranked trrn:Void category.
Mixins
ITerrain Abstract Mixin 
Mix-in to be supported by bis:PhysicalElement-subclasses modeling the base terrain of a portion of the earth.
Applies To: PhysicalElement
ITerrain is a common mix-in expected to be implemented by element-classes defining a static context for assets and projects.
There are three terrain types in iModels:
- Background Default Terrain (defined in the iModel settings)
TerrainReferencesTerrains
TerrainReference and Terrain implement ITerrain. These three terrain types interact as follows.
The Background Default Terrain comes from a service (typically Cesium World Terrain). This background terrain is typically available world-wide. For the iModel, the Background Default Terrain is used wherever there is no other terrain defined.
TerrainReferences also provide terrain from a service while Terrains fully capture terrain in the iModel itself.
The terrain defined by TerrainReferences and Terrains tends to be from data that was captured specifically for the project or asset under consideration and is generally more accurate and/or more current than the terrain provided by the Background Default Terrain.
TerrainReferences and Terrains are always used instead of Background Default Terrain where they overlap. In many large projects there will be multiple TerrainReferences and Terrains provided. For example, one TerrainReference may provide a low-resolution terrain for the entire project site and other Terrains may define high-resolution terrain for focused areas where most of the work will occur. Where TerrainReferences' and Terrains' overlap, the Terrain elements will be used.
In Digital Twins, all three types of terrain can provide the context for the infrastructure or the starting (or current) conditions of the site, but it is more typical for Background Default Terrain and TerrainReferences to do so.
Relationship Classes
ITerrainOwnsBoundary RelationshipClass 
Base Class: BisCore:ElementOwnsChildElements
Strength: Embedding
Strength Direction: Forward
Source
Target
TerrainOwnsSourceFeatures RelationshipClass 
Base Class: BisCore:ElementOwnsChildElements
Strength: Embedding
Strength Direction: Forward
Source
Target
TerrainReferenceViaRepositoryLink RelationshipClass 
Relationship enabling a TerrainReference to refer to the bis:RepositoryLink that captures the location of the service providing its details.
Strength: Referencing
Strength Direction: Forward
Source
Target
Last Updated: 11 June, 2025