3D Tiles

specdraftimplproposal

Publish geographic data as 3D Tiles.

Scope

The building block 3D Tiles adds support for 3D Tiles 1.1 for feature collections that can be encoded by ldproxy using the building block Features - glTF.

This building block supports glTF as the tile format and implicit quadtree tiling. Subtrees are encoded using the binary format for compactness.

The only refinement strategyopen in new window that is supported is ADD. Use the contentFilters configuration option to specify at which level of the tile hierarchy a building will be represented. Each building should be included on exactly one level.

The 3D Tiles can be inspected in a web browser using an integrated Cesium client.

Limitations

See Features - glTF.

In addition, the following information in Subtrees is not supported: property tables, tile metadata, content metadata, and subtree metadata.

Conformance Classes

3D Tiles implements support for the OGC Community Standard 3D Tiles 1.1open in new window. glTF is the only supported tile format. All tilesets use implicit quadtree tiling.

Operations

ResourcePathMethodsMedia TypesDescription
3D Tiles Tileset
collections/{collectionId}/3dtiles
GET
Access a 3D Tiles 1.1 tileset with implicit quadtree tiling.
3D Tiles Subtree
collections/{collectionId}/3dtiles/subtree_{level}_{x}_{y}
GET
Access a 3D Tiles 1.1 Subtree file.
3D Tiles Content (glTF)
collections/{collectionId}/3dtiles/content_{level}_{x}_{y}
GET
Access a 3D Tiles 1.1 Content file, a glTF 2.0 binary file.

Path Parameters

NameResourcesDescription
collectionId
3D Tiles Tileset, Subtree, Content
The identifier of the feature collection.
level
3D Tiles Subtree, Content
The level of the subtree or tile.
x
3D Tiles Subtree, Content
The column of the subtree or tile.
y
3D Tiles Subtree, Content
The row of the subtree or tile.

Query Parameters

NameResourcesDescription
f
3D Tiles Tileset
Select the output format of the response. If no value is provided, the standard HTTP rules apply, i.e., the "Accept" header will be used to determine the format.

Configuration

Prerequisites

The building block requires that the feature provider includes a type building. The requirements for the type are the same as in the configuration of the CityJSON encoding.

Options

NameDefaultDescriptionTypeSince
buildingBlock
Always TILES3D.
string
v2.0
enabled
false
Enable the building block?
boolean
v2.0
firstLevelWithContent
0
The first level of the tileset which will contain buildings. The value will depend on the spatial extent of the dataset, i.e., at what level of the implicit tiling scheme large buildings can be displayed.
number
v3.4
maxLevel
0
The last level of the tileset which will contain buildings. The value will depend on the spatial extent of the dataset, i.e., at what level of the implicit tiling scheme small buildings can be displayed in detail.
number
v3.4
contentFilters
[]
A CQL2 text filter expression for each level between the firstLevelWithContent and the maxLevel to select the buildings to include in the tile on that level. Since the refinement strategyopen in new window is always ADD, specify disjoint filter expressions, so that each building will be included on exactly one level.
array
v3.4
tileFilters
[ ... ]
A CQL2 text filter expression for each level between the firstLevelWithContent and the maxLevel to select the buildings to include in the tile on that level or in any of the child tiles. This filter expression is the same as all the contentFilters on this or higher levels combined with an OR. This is also the default value. However, depending on the filter expressions, this may lead to inefficient tile filters and to improve performance the tile filters can also be specified explicitly.
array
v3.4
geometricErrorRoot
0
The error, in meters, introduced if a tile at level 0 (root) is rendered and its children at level 1 are not. At runtime, the geometric error is used to compute screen space error (SSE), i.e., the error measured in pixels.
number
v3.4
subtreeLevels
3
The number of levels in each Subtree.
number
v3.4
seeding
{}
Controls how and when tiles are precomputed, see Seeding options in the tile provider "Features".
object
v3.4
clampToEllipsoid
false
If set to true, each building will be translated vertically so that the bottom of the building is on the WGS 84 ellipsoid. Use this option, if the data is intended to be rendered without a terrain model.
boolean
v3.4
ionAccessToken
null
If the 3D Tiles should be rendered in the integrated Cesium client using the terrain model from Cesium Ion, specify the access token to use in requests.
string
v3.4
maptilerApiKey
null
If the 3D Tiles should be rendered in the integrated Cesium client using the terrain model from MapTiler, specify the api key to use in requests.
string
v3.4
customTerrainProviderUri
null
If the 3D Tiles should be rendered in the integrated Cesium client using an external Terrain Provider, specify the URI of the provider.
string
v3.4
terrainHeightDifference
0
If the terrain does not match the height values in the data, this option can be used to translate the buildings vertically in the integrated Cesium client.
number
v3.4
style
DEFAULT
A style in the style repository of the collection to be used in maps with 3D Tiles. With DEFAULT the defaultStyle from the HTML building block is used. With NONE the default 3D Tiles style is used. The style must be available in the 3D Tiles Styling format. If no style is found, 'NONE' is used.
string
v2.0

Examples


- buildingBlock: TILES3D
  enabled: true
  maxLevel: 9
  firstLevelWithContent: 5
  contentFilters:
  - diameter3d("bbox")> 200
  - diameter3d("bbox")<=200 and diameter3d("bbox")> 100
  - diameter3d("bbox")<=100 and diameter3d("bbox")> 40
  - diameter3d("bbox")<=40 and diameter3d("bbox")> 18
  - diameter3d("bbox")<=18
  tileFilters:
  - true
  - diameter3d("bbox")<=200
  - diameter3d("bbox")<=100
  - diameter3d("bbox")<=40
  - diameter3d("bbox")<=18
  geometricErrorRoot: 8192
  clampToEllipsoid: true
  subtreeLevels: 3
  seeding:
    runOnStartup: true
    runPeriodic: false
    purge: false
    maxThreads: 4