3D Tilesspecdraftimplproposal
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 strategy 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.1. glTF is the only supported tile format. All tilesets use implicit quadtree tiling.
Operations
Resource | Path | Methods | Media Types | Description |
---|---|---|---|---|
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
Name | Resources | Description |
---|---|---|
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
Name | Resources | Description |
---|---|---|
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 module 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
Name | Default | Description | Type | Since |
---|---|---|---|---|
buildingBlock | Always TILES3D . | string | v2.0 | |
extensionType | Deprecated See buildingBlock . | 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 strategy 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 Tiles building block. | 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 module HTML 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