CityGML procedural modeling open source engine and dataset

During my PhD, I encountered the following shortcomings in my 3D GIS research:

  • CityGML datasets containing multiple levels of detail are rare.
  • There is no programmatically generated data in CityGML format.
  • There is no free procedural modeling engine.
  • Publicly available CityGML models often contain a large number of (topological) errors.

insert image description here

Recommendation: Use NSDT editor to quickly build programmable 3D scenes

To address these issues, I developed Random3Dcity, a basic experimental open-source procedural modeling engine for the automated construction of synthetic buildings and their implementation in multiple LODs in CityGML. I used the generated dataset for various purposes in my PhD project, such as benchmarking the performance of using a specific LOD in a use case, but the possible applications are not limited thereto. Hereby, I bridge the gap and publicly release the dataset . The code for the engine has also been released.

In addition to this project, I have also designed a new LOD specification for 3D city models, which extends the specification in CityGML. This specification has been implemented by this engine.

With its diverse buildings and large number of representations, Random3Dcity aims to be the most complete CityGML (and possibly 3D) dataset available. However, be aware of its limitations, such as experimental nature and synthetic results.

1. From random parameter description to multiple representations of CityGML

Random3Dcity consists of two parts.

The first to construct buildings with random properties (procedural modeler) such as height, roof type and number of windows and their dimensions.

The algorithm that does this is relatively clever, and it does so by respecting a large number of constraints (such as windows not overlapping), and taking care to design buildings that look as realistic as possible. The engine stores this data in human-readable parameter descriptions (own XML schema), eg: Gabled2.89.

Because of this randomness, the dataset is well suited as an unbiased data source for many analyses, and for recreating many different scenarios that might not be available in real-world data. As currently configured, the number of different buildings is about 1054.

The second part of the engine reads these data and realizes them in 3D by generating CityGML files with multiple levels of detail.

The method is described in the following publication: Generation of Multi-LOD 3D City Models in CityGML Using the Procedural Modeling Engine Random3Dcity .

2. Finer LOD division

As one of the goals of my doctoral research, I developed a new specification that refines the CityGML LOD specification to 16 LODs, four less vague and well-specified Variant, intended to complement the CityGML specification. They are the product of thorough research into 3D production workflows, engagement with practitioners, and examination of existing 3D models.

insert image description here

The top image shows a visual depiction of the specification, and the bottom shows a combination of four LODs for a dataset containing 100 buildings.

insert image description here

Detailed specifications are published in: Improved LOD Specifications for 3D Building Models.

3. The internal entity of the floor

Random3Dcity is capable of generating basic interiors at three levels of detail: one solid per floor, one solid for the entire building (offset from the shell), and one 2D polygon per floor. For example, these entities can be used to construct ground truth models for volumetric calculations.

The engine generates some internal parameters, such as joist and wall thickness, and calculates the geometry of the solid.

insert image description here

4. Multiple geometric references

Each building is generated with multiple levels of detail (16 in total). Also, they are generated in multiple geometry references (eg different heights on top of LOD1 block model).

Below you can see seven variants of the LOD1 block model, referring to the geometric reference used for the top surface.

insert image description here

Furthermore, different references are used for the footprint: the actual footprint and the projection of the roof edge. This also applies to LOD2 models.

The following publication describes this topic: Variations of LOD for 3D Building Models and Their Implications for Spatial Analysis.

5. Example of CityGML dataset generated by the engine

Version as of March 11, 2015 (Random3Dcity v. 0.1.4). All datasets contain 900 buildings. Please read additional information before downloading data. If you use this data to prepare an excellent publication, please cite the following paper: Generation of multi-LOD 3D city models in CityGML using the procedural modeling engine Random3Dcity.

If you don't want to download the code source and generate the dataset yourself, here I prepared a zipped collection of sample CityGML data. The zip also contains OBJ files generated using my tool CityGML2OBJs, if you need to convert 3D models into other formats, you can use this online 3D format conversion tool.

A description of each representation is given below.

level of detail geometric reference Brep or solid file name note
LOD0.1 Actual land occupation Brep LOD0_1_F0_H3.gml Only includes floor space
LOD0.2 Actual land occupation, half the height of the roof Brep LOD0_2_F0_H3.gml Contains footprint and roof edge polygons
LOD0.3 Actual footprint, independent height Brep LOD0_3_F0_H3.gml Contains footprint and roof edge polygons
LOD1.1 Actual land occupation, the height of the half-height of the roof Brep LOD1_1_F0_H3.gml
LOD1.2 Actual land occupation, the height of the half-height of the roof Brep LOD1_2_F0_H3.gml
LOD1.2 Footprint offset 20 cm from roof edge Solid LOD1_2_Fd_H5_solid.gml different footprint (offset)
LOD1.3 Actual land occupation, the height of the half-height of the roof Solid LOD1_3_F0_H3_solid.gml
LOD2.0 Actual land occupation Brep LOD2_0_F0.gml
LOD2.0 Actual land occupation Brep LOD2_0_F0_S0.gml no semantics
LOD2.1 Actual land occupation Brep LOD2_1_F0.gml
LOD2.2 Actual land occupation Brep LOD2_2_F0.gml
LOD2.2 Actual land occupation Brep LOD2_2_F0_S0.gml no semantics
LOD2.2 Project from roof edge Brep LOD2_2_F1.gml
LOD2.3 actual footprint Brep LOD2_3_F0.gml
LOD3.0 Walls are projected from the edge of the roof Brep LOD3_0.gml air element
LOD3.1 not applicable Brep LOD3_1.gml land feature
LOD3.2 not applicable Brep LOD3_2.gml
LOD3.2 not applicable Brep LOD3_2_S0.gml no semantics
LOD3.3 not applicable Brep LOD3_3.gml Very detailed model (best in the series)
LOD3.3 not applicable Brep LOD3_3_S0.gml no semantics
Interior-LOD0 not applicable Brep Interior-LOD0.gml one polygon per layer
Interior-LOD1 not applicable Brep Interior-LOD1.gml an entity of a building
Interior-LOD2 not applicable Brep Interior-LOD2_2.gml one entity per layer

Remarks and future work

  • You can use my tool CityGML2OBJs to convert this data to OBJ, if you need to convert 3D models in other formats, you can use this online 3D format conversion tool .
  • All gml:LinearRing and gml:Polygon have a gml:id which is randomly generated (UUID).
  • Datasets ending in _S0.gml do not contain semantically differentiated surfaces.
  • Coordinate systems are local.
  • Data complies with CityGML 2.0.

The full product of this engine contains even more datasets (392 to be more precise) with shuffled variants. For example, not all LOD1 variants with heights are placed here. If you need other variants, please contact me, or use the provided code to generate them.

6. Wrong dataset (deliberately)

An auxiliary engine has been created to simulate the acquisition errors of the raw dataset mentioned above. This data is suitable for error propagation analysis (see, for example, my related paper). Furthermore, since the topology may be corrupted in some files, its use may extend to other areas such as test validation and repair tools.

6.1 Position error

insert image description here

LOD distribution error wrong data set note
LOD1 σ = 0.0 m (GT) LOD1-F1H1 [5.7MB] Solid
σ = 0.2 m LOD1-F1H1-0.2 [5.7MB] Solid
LOD2 σ = 0.0 m (GT) LOD2-F1 [8.7MB] Brep
σ = 0.2 m LOD2-F1-0.2 [8.7MB] Brep
LOD3 σ = 0.0 m (GT) LOD3 [81.4MB] Brep
σ = 0.2 m LOD3-0.2 [81.4MB] Brep

Notice:

  • Error is equivalent to ISO 19157 Spatial Data Quality Element Position Accuracy.
  • Assume no spatial correlation of uncertainty.
  • All coordinates have the same uncertainty. Vertical (z) coordinates are not handled separately.

6.2 Overlapping objects

Overlapping objects are not required. Therefore, these datasets may also be useful for testing validation and repairing software. The following dataset contains buildings that overlap in multiple LODs.
insert image description here

LOD wrong data set note
LOD2 LOD2-overlap [519kB] Brep
LOD3 LOD3 - Overlap [5.2MB] Brep

6.3 Ambiguous Semantics

These datasets contain perturbed semantic surfaces and/or missing semantic classes. The semantics of the surface are uniformly random (1/3 for each of the following: GroundSurface, RoofSurface, WallSurface).

insert image description here

LOD wrong data set note
LOD2 LOD2-F1 - Arbitrary Semantics [2.2MB] Brep
LOD3 LOD3 - Arbitrary Semantics [21.2MB] Brep, doors and windows are missing (replaced with 3 classes)

6.4 Serious topological errors

The following LOD3 dataset contains topological errors such as broken solids and polygons whose interiors lie outside them.
insert image description here

LOD wrong data set note
LOD3 LOD3 - Error Topology [21MB] Brep, most errors are peripheral windows
LOD3 LOD3_solid-error-topology [1.9MB] Solid, most errors are self-overlapping roof tips

Original link: CityGML procedural modeling - BimAnt

Guess you like

Origin blog.csdn.net/shebao3333/article/details/132285649