## 2 Materials and Methods
### Roof Segmentation Clustering Approach  
In 3D building modeling, the segmentation process generally aims to find which LIDAR cloud points belong to which specific rooftop segments and to represent them with as many details as possible. In particular, the segmentation process begins with exploration of the proprieties of local distribution of the points' normal vector (\(N_{i}\)) that uniquely determines the direction of a roof plan in order to return the planes with the same normal vectors. This section describes an approach in which this is treated as a cluster problem, as widely proposed in literature studies (e.g., [6; 7; 19; 20]). In particular, the fuzzy c-means method was used to determine the clusters (see Figure 1c). This method belongs to the partitioning methods clustering category, relocating iteratively data points among various clusters until they achieve the greatest distinction. In this method, a data point does not belong to only one cluster entirely. Instead, it can belong to any of the clusters at a certain degree of belonging estimated measuring the similarity, that is, the inverse distance measure of each data point to the cluster centers. The fuzzy c-means algorithm requires determination of the number of clusters and their approximate centers in order to start the iterative computation. In this context, the LIDAR data is pre-processed for c-means clustering using a potential-based clustering approach. The point with high potential (i.e., the highest number of data points within its (fixed-distance) sphere of influence) is used to determine the first cluster center; the potential (\(P_{i}^{f}\)) of data point (\(N_{i}\)) is calculated as:  
\[P_{i}^{f}=\sum_{i=1}^{j}e^{[-\frac{4}{\gamma}\|N_{i}-N_{j}\|^{2}]}, \tag{1}\]  
Figure 1: Clustering and segmentation of roof light detection and ranging (LIDAR) points. (**a**) orthopotho provided by GEOCART; (**b**) LIDAR points; (**c**) clustered points; (**d**) Planar segments. where \(j\) is the number of data points, \(N_{j}\) is the \(j\)th data point and \(r_{f}\) is the radius of the point \(N_{i}\) sphere of influence. The other cluster center's potential (\(P_{i}^{o}\)) is then estimated based on the distance to the previously selected cluster centre(s) to reduce the possibility of two cluster centers being close:  
\[P_{i}^{o}=P_{i}^{f}-P_{f}^{*}e^{[-\frac{4}{\pi}\frac{4}{\sigma}|N_{i}-N_{j}|^{ 2}]}, \tag{2}\]  
where \(N_{f}^{*}\) and \(P_{f}^{*}\) are the previously selected center and its potential, respectively. To avoid obtaining closely spaced cluster centers, we set \(r_{0}\) to be somewhat greater than \(r_{f}\), i.e., \(r_{0}=1.5\,r_{f}\). This process stops when the cumulative potential \(P_{i}^{o}\) reaches a threshold that is below 15% of the first potential \(P_{i}^{f}\). If the potential falls between 15% and 50% of the first potential, we check if the data point provides a good trade-off between having a sufficient potential and being sufficiently far from existing cluster centers, as evaluated by [19]. This algorithm has been implemented iteratively, changing the value of the radius of the sphere of influence. This results in a set of scenarios depending on the radius \(r\) of the sphere of influence utilized, where the final number of the clusters is inversely proportional with the magnitude of the \(r\). Selection of the best approximation value of the cluster numbers and the cluster center positions was determined by the likelihood (i.e., compactness) of each cluster, calculated as in the following equation:  
\[d=\sum\
olimits_{i=1}^{c}\frac{d^{i}}{c}, \tag{3}\]  
where \(d^{i}\) is the mean distance in cluster \(i\) of data points to its respective clusters and \(c\) the number of clusters. Finally, rooftop segmentation was refined by the separation of parallel and coplanar planes as well, as proposed in [7], because the planes may have roof segments that are parallel to each other or roof segments that are mathematically the same but are separated spatially (see Figure 1d).