## 3 Results  
To analyse the proposed algorithm's large-scale performance, it was applied on the basis of airborne LiDAR data and 2D buildings' outlines. The input data cover a 6.153 km\({}^{2}\) large geographic area of the city of Maribor, Slovenia (bounding box: 46 deg33'8.54301''N 15 deg37''29.23113''E, 46 deg34'13.15573''N 15 deg39'52.97941''E). The provided LiDAR data's average density is 11.3 pts/m\({}^{2}\) and the considered 14,227,123 building points and 31,420,386 ground points are shown in Figure 6. Buildings' outlines were obtained from a public spatial database maintained by The Surveying and Mapping Authority of the Republic of Slovenia. There were 5254 buildings' outlines contained entirely within the bounding box of the area. Figure 5: Illustration of shaping the model with obstructed half-spaces, where (**a**) shows the input model from the previous step, and (**b**) illustrates a slice that will be subtracted from the model. The slice is determined by three obstructed half-spaces that determine the smallest possible slice for one of the half-spaces. The result of the subtraction of the first slice is shown in (**c**). This is followed by the next slice (**d**), after which the final building model is obtained (**e**). First, the building points for each corresponding building's outline were segmented. For this, a graph-based segmentation [41] that takes point cloud density and local curvature of faces into account was selected, as roofs of buildings are not always completely flat. The segmentation establishes the initial topology over the point cloud as an undirected graph by the \(k\)-nearest neighbour approach, and is controlled by the local curvature \(t_{\theta}\) and distance \(t_{d}\) thresholds. The building points from the input LiDAR point cloud for each corresponding building's outline were segmented using the settings given in Table 1. A minimum of 50 points were required for each segment (\(t_{CC}=50\)), which was set to avoid too small roof faces. The resulting segmentation of building points from Figure 6 is shown in Figure 7.  
The building models were generated next. A building model is deemed geometrically valid, if the building's floor face remains intact which, as such, does not necessarily imply an accurately reconstructed model. In some cases, especially with height jumps, the obtained building models were invalid. To achieve a higher validity rate the number of obstructed \begin{table}
\begin{tabular}{c c} \hline \hline
**Parameter** & **Value** \\ \hline \(k\) & 20 \\ \hline \(t_{\theta}\) & 2.0 \\ \hline \(t_{CC}\) & 50 \\ \hline \(t_{d}\) [m] & 2 \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Parameters used for segmentation of the point cloud. Figure 6: Input LiDAR point cloud. half-spaces was limited to 10 for cases with height jumps. In such cases, only unobstructed half-spaces were considered for shaping the model. An example of handling these cases is shown in Figure 8.  
Figure 8: Illustration of shaping a large building with height jumps and too many obstructed half-spaces where from (**a**) the input point cloud segments of points (**b**) were obtained and only unobstructed half-spaces were considered for the reconstruction of the building (**c**). Figure 7: Segmented building points from Figure 6.  
The reconstruction produced a geometrically valid model for 4817 building outlines in 92% of cases. The resulting buildings' reconstruction is shown in Figure 9.  
In practice, many buildings' roofs contain height jumps and, as they are not considered by the proposed method, several geometrically invalid models are to be expected. Next, we examined various cases of buildings from the reconstructed city model with roofs of different types without height jumps, which are shown in Figure 10.  
Figure 10a shows a relatively simple case that is described by eight half-spaces of a single building, of which five are obstructed. The next case from Figure 10b shows an example of two terraced buildings, where the same roof faces are shared between buildings.