Footprint decomposition combined with point cloud segmentation for producing valid 3D models

More Info


For the creation of three-dimensional (3D) city models, extrusion of building footprints is widely applied. Extrusion results in block shaped buildings. The main problem with these 3D models is that they do not represent height differences within a building. This thesis presents a method to improve building footprints by subdivision into parts describing height differences and roof shapes. These improved building footprints are used for creating 3D models by separate extrusion of each of these parts. Applying this method results in 3D building models with multiple heights. Several subjects are discussed in this thesis: generalization, decomposition, segmentation, 3D geometry reconstruction and their validation. This research is based on the combination of two existing methods, one for generalization and decomposition of building footprints, and one for segmentation of point clouds. These methods are extended and problems are solved by including: (1) direction of lines, (2) best fitting line, (3) adjacent buildings, (4) preservation of holes, (5) handling of slant lines, (6) quality statistics and (7) validation. The existing generalization method creates topology errors which are reduced by including knowledge from adjacent buildings. Decomposed building footprints are merged based on the segmented point cloud. The resulting decomposition is a subdivision describing multiple roof shapes and height jumps, based on linear features in the building footprint. Reconstruction of the actual 3D geometry is performed by extrusion of the decomposition cells. The resulting reconstruction is a Level of Detail 1 (LoD) model with height differences. To test the usability of the improved footprints for reconstruction of a LoD2 model, parametric shape fitting is applied. These tests are executed using a small set of roof shapes proving the usability. All reconstructed 3D building geometries are validated using Oracle Spatial 11g. In order to analyze, test and improve the developed algorithms, a prototype is implemented in C++. This prototype is tested intensively with several real-world data sets. Results from these tests are proving proper functioning of the developed method and support the conclusions.