A computer implemented method comprising: removing one or more three dimensional points of a cloud depicting vertical structures detected in a geographic area in response to analyzing a set of three dimensional points of the cloud corresponding to the geographic area in which each of the points comprise data indicating geocoordinates of the geographic area; segmenting rooftops of the vertical structures detected in the geographic area, in response to the analyzing of the set, by separating each of the rooftops (57, 59, 61) from another respective rooftop; wherein segmenting rooftops comprises clustering points of the rooftops (57, 59, 61) that touch each other into different groups and assigning respective labels to the different groups to denote different heights of the rooftops corresponding to the different groups; generating a tree, denoting a relationship among the segmented rooftops (57, 59, 61), identifying segmented rooftops (57, 59, 61) that touch each other relative to a subset of the points of the cloud representing a ground; delineating the points of the segmented rooftops (57, 59, 61), in response to extracting an outer boundary and at least a subset of an inner portion of the segmented rooftops (57, 59, 61); determining respective heights of the delineating points using the generated tree; and generating one or more three dimensional geographic models depicting the geographic area in three dimensions based in part on connecting each of the delineating points of the segmented rooftops (57, 59, 61) to a corresponding base comprising a height that is lower than the respective heights of the delineating points. removing one or more three dimensional points of a cloud depicting vertical structures detected in a geographic area in response to analyzing a set of three dimensional points of the cloud corresponding to the geographic area in which each of the points comprise data indicating geocoordinates of the geographic area; segmenting rooftops of the vertical structures detected in the geographic area, in response to the analyzing of the set, by separating each of the rooftops (57, 59, 61) from another respective rooftop; wherein segmenting rooftops comprises clustering points of the rooftops (57, 59, 61) that touch each other into different groups and assigning respective labels to the different groups to denote different heights of the rooftops corresponding to the different groups; generating a tree, denoting a relationship among the segmented rooftops (57, 59, 61), identifying segmented rooftops (57, 59, 61) that touch each other relative to a subset of the points of the cloud representing a ground; delineating the points of the segmented rooftops (57, 59, 61), in response to extracting an outer boundary and at least a subset of an inner portion of the segmented rooftops (57, 59, 61); determining respective heights of the delineating points using the generated tree; and generating one or more three dimensional geographic models depicting the geographic area in three dimensions based in part on connecting each of the delineating points of the segmented rooftops (57, 59, 61) to a corresponding base comprising a height that is lower than the respective heights of the delineating points.