Skip to content

2. Tutorial LoD1.3 building reconstruction

Ravi Peters edited this page Apr 13, 2022 · 11 revisions

The gfc-lod13 repository contains the flowcharts necessary to perform LoD1.3 building reconstruction.

Running the reconstruction in production

To finally perform the reconstruction for the test dataset run the geof.exe exectutable as follows from the C:\3dbag-tooling directory:

.\bin\geof.exe flowcharts\runner.json

If everything works this should produce an output file from the test dataset: C:\3dbag-tooling\test-data\wippolder-output.gpkg.

Global parameters

If you want to run it with your own data you can specify several paramaters with the geof command, either by passing them directly on the command line (append eg. --OUTPUT_FORMAT GPKG) or by passing a configuration file that contains them (see the section below):

  • INPUT_FOOTPRINT_SOURCE: input dataset with footprints. Can be a vector file or a postgresql database connection string
  • INPUT_LAS_FILES: the input point cloud files. In LAS or LAZ format. Can be a list of files separated by a space.
  • OUTPUT_FORMAT: The output vector format. See OGR documentation. For example GPKG or PostgreSQL.
  • OUTPUT_SOURCE_*: Output filename or database connection string to write the output to.
  • OUTPUT_LAYERNAME_*: Output layer name.
  • TILE_ID: Tile ID.
  • OUTPUT_OBJ_DIR: Output directory for obj files (obj files are written to {{OUTPUT_OBJ_DIR}}/{{OUTPUT_LAYERNAME_*}}_{{TILE_ID}}.obj).
  • OUTPUT_CITYJSON_DIR: Output directory for CityJSON files (CityJSON files are written to {{OUTPUT_CITYJSON_DIR}}/{{TILE_ID}}.json).
  • id_attribute: Specify the attribute name that carries a unique identifier per input footprint. Must be string. Is used for the OBJ output and CityJSON output.
  • CJ_DATASET_TITLE: CityJSON metadata
  • CJ_GEOGRAPHIC_LOCATION: CityJSON metadata
  • RUN_REFERENCE: an identifier to the run this execution is part of (eg 3DBAG version number or hash)

Notice that relative input paths are treated as being relative to the location of the flowchart file (runner.json). Of course you can also specify absolute paths.

The default values are set such that it should work for the test dataset if extracted in the directory specified above:

Parameter Default value
INPUT_FOOTPRINT_SOURCE ../test-data/wippolder.gpkg
INPUT_LAS_FILES ../test-data/wippolder.las
OUTPUT_SOURCE ../test-data/wippolder-output.gpkg
OUTPUT_FORMAT GPKG

Output specification

The 3DBAG software requires 2 inputs: building footprints and point clouds. It is assumed that the point cloud tiles are classified and have at least the building class and the ground class (ASPRS LAS classes 6 and 2 respectively). It is also assumed that the point clouds completely cover all the footprints.

Raw output and attributes

When run as above the software will create 6 output layers (tables):

  • lod11_2d: Input 2D footprints with elevation attributes (no groundpart separation as in LoD12)
  • lod11_3d: Input footprints extruded to fixed height (no groundpart separation as in LoD12)
  • lod12_2d: LoD1.2 output as 2D footprints with elevation attributes
  • lod13_2d: LoD1.3 output as 2D footprints with elevation attributes
  • lod22_2d: LoD2.2 output as 2D footprints with elevation attributes
  • lod12_3d: LoD1.2 output as 3D model
  • lod13_3d: LoD1.3 output as 3D model
  • lod22_3d: LoD2.2 output as 3D model

The attributes from the input are copied to the output features. In addition a number of attributes are added depending on the LoD. The LoD12 layer has the most attributes (best for analysis).

Attribute name Description
dak_type Type of roof detected in point cloud (see next table)
rmse Root mean square error between 3D model and input point cloud (only roof points)
h_maaiveld ground elevation
h_dak_50p roof elevation 50th percentile
h_dak_70p roof elevation 70th percentile
h_dak_min min roof elevation
h_dak_max max roof elevation
t_run total reconstruction time in ms (for all LoDs)
roofplane_cnt number of detected roof planes
roof_pt_cnt total number of points in roof planes
wall_pt_cnt total number of points in wall planes
usegmented_pt_cnt number of unsegmented points
val3dity_codes val3dity error codes for the model given as a JSON array
data_area area in footprint that has a roofplane above it
data_coverage portion of the geometry covered by roof points
error_his* histogram of errors measure from point cloud to mesh triangles
m2pc_error_hist histogram of errors measure from mesh vertices to point cloud
m2pc_error_max maximum errors from any mesh vertex to point cloud
lod11_replace bool that indicates whether the LoD1.2, LoD1.3 and LoD2.2 output was replaced by a LoD1.1 model
reconstruction_skipped bool that indicates whether full LoD1.2/LoD1.3/LoD2.2 reconstruction was skipped for this feature (and also LoD1.2 if lod11_replace==false)
is_ground bool that indicates if this part is a groundpart. If true the part is a ground part, otherwise it is a roof part (lod13_2d/lod22_2d only)
labels semantic labels of triangles in the same order as they are stored in the geometry
dak_type value Meaning
2 roof with at least one slanted surface
1 roof with multiple, only horizontal surfaces
0 roof with a single horizontal surface
-1 no point was found for the building
-2 could not detect a roof surface, even though points were found

Parameter tuning

Clone this wiki locally