CityGML LOD explained

The level of detail, LOD, says how much of an object's shape a geometry holds. LOD 0 is the footprint, LOD 1 a block extruded from it, LOD 2 the shape with its roof and LOD 3 every detail. CityGML 2.0 adds LOD 4 for interiors; CityGML 3.0 and CityJSON stop at LOD 3 and allow interiors at any level.

  1. LOD 0Footprint

    The object flattened onto the ground: a building footprint, or the floor plan of its rooms.

  2. LOD 1Block

    The footprint extruded straight up into a solid with a flat top.

  3. LOD 2Shape and roof

    The generalized shape with its roof. Small details such as balconies, dormers and bulges are left out.

  4. LOD 3Full detail

    Every shape detail the data has, including windows, doors and what is on the roof.

  5. LOD 4Interior

    Rooms and what is inside them. CityGML 2.0 only: 3.0 and CityJSON model the interior at any level from 0 to 3.

CityGML 2.0 and 3.0

CityGML 3.0 keeps the levels but ties them to shape only. In 2.0 a level also decided which parts of a building could exist at all.

CityGML 2.0CityGML 3.0
LevelsLOD 0 to 4LOD 0 to 3
Wall, roof and ground surfacesFrom LOD 2At any level
Windows and doorsFrom LOD 3At any level
Rooms and interiorLOD 4 onlyAt any level
Geometry elementsIn each module, such as bldg:lod2MultiSurfaceIn the core module, such as core:lod2MultiSurface

CityJSON follows the CityGML 3.0 data model and has LOD 0 to 3. Its lod is text, so it can also hold a refined level such as "2.2".

LOD 2.2 and other decimal levels

TU Delft's refined levels split each LOD further, such as LOD 2.2, and Japan's PLATEAU uses decimal levels of its own. In a CityGML file they are not separate elements: the geometry is still lod2MultiSurface, and the decimal is a rule about what the model includes. CityJSON can store the decimal in lod.

Setting the LOD in Insula3D

The LOD is what a file declares. Writing a model as LOD 3 does not add windows, and writing it as LOD 1 does not take them away, so set the level that matches the geometry you have.

  • Set the LOD per layer in the Layers panel, 1 to 4.
  • Surfaces writes the faces of the model as they are. Solid extrudes the footprint to the top of the object, with a flat roof, the shape of an LOD 1 block.
  • With Semantic surfaces on, faces are marked as wall, roof or ground surfaces from LOD 2 up.
  • A layer at LOD 4 is written as LOD 4 in CityGML 2.0. For CityGML 3.0 and CityJSON, the Output window asks which LOD to write instead: LOD3 or LOD2.
  • In CityGML 2.0 a room exists only at LOD 4. A room at another level is written as BuildingPart in 2.0, and Insula3D counts it.

Read more in Set up layers and Buildings, parts and storeys in the user guide.

Questions

Which LOD do I need?

The one the project or the receiving software asks for. Without a requirement, write the level the geometry has: a block is LOD 1, a shape with its roof is LOD 2.

Is LOD 4 gone in CityGML 3.0?

Yes. CityGML 3.0 has LOD 0 to 3, and interiors such as rooms can be modeled at any of them.

Can one building have several LODs?

Yes. A CityGML object can hold geometry at several levels at once. Insula3D writes each layer at one LOD.

Does CityJSON have LOD 4?

No. CityJSON stops at LOD 3. See CityJSON vs CityGML for the other differences.