Skip to content

Point clouds

Ivan Pađen edited this page May 24, 2022 · 7 revisions

The requirements for point clouds are the following:

  • They must be in XYZ or PLY (either binary or ASCII) format
  • Buildings and terrain are separated into different files. We give advice on how to prepare the data below

We suggest you use CloudCompare, an open-source point cloud manipulation project and we offer information on preparing a point cloud with it.

Thinning

Point clouds can get very dense, hence we need to remove some of the points for efficiency reasons. A rule of thumb is to keep the number of points up to a few million for a district level, but this number can vary on a case-by-case basis. The process of removal of points is referred to as thinning. You should use random thinning for building points, while space-based thinning can result in uniform terrain triangulation, should isotropic terrain triangulation be your goal. In CloudCompare, you perform subsampling of the point cloud to extract thinned points. Access it through EditSubsample.

Please note that City4CFD also has random thinning implemented as part of the workflow. The intention of this is to speed up the reconstruction during the initial setup iterations.

(back to top)

Separating terrain and buildings

Point clouds are generally available in LAS/LAZ formats, which, by default, contain specific classes, with the two of them reserved for ground (class 2) and buildings (class 6). However, not every point cloud is nicely classified. You can check for classification in CloudCompare.

pointcloud

In case the ground and buildings are properly classified, you can use this script that automatically loads the point cloud and extracts the classes, or through EditScalar FieldsFilter By Value with classification selected as an active scalar field in the property menu.

When buildings and ground are not properly classified, you can use the whole point cloud as input for buildings, whereas for the terrain you need to conduct terrain filtering. CloudCompare contains Cloth Simulation Filter (CSF) which handles filtering automatically. You can find it in PluginsCSF Filter.

(back to top)

Proposed workflow

We can propose the following workflow for preparing the point cloud:

  • Load the point cloud into CloudCompare
  • Subsample with random thinning in case of a large number of points (tens of millions)
  • If point cloud is classified:
    • Extract buildings (class 6), extract terrain (class 2) with water points (class 9)
    • Conduct additional space-based thinning (e.g. 10 m) if you would like isotropic terrain mesh
    • Export buildings and terrain + water separately to different PLY or XYZ files
  • If point cloud is not classified:
    • Perform terrain filtering with the CSF
    • Conduct additional space-based thinning on the filtered point cloud if you would like isotropic terrain mesh
    • Export unfiltered point cloud and use it as input for buildings, export filtered point cloud and use it for terrain

Please bear in mind that the program runtime greatly depends on the number of points that are used, especially with the terrain. Everything up to a few million (3-4) for terrain will be fairly quick. But still, a good rule of thumb is to use strong thinning in City4CFD (values of 80-90%) until your final reconstruction.

(back to top)

Importing point cloud into QGIS

QGIS natively supports LAS/LAZ format. You can import the point cloud into QGIS to make sure the polygon and point projections match. You can view the point cloud in 3D by selecting ViewNew 3D Map View. More information can be found here. If the original point cloud is too large, perform thinning before loading it into QGIS.

(back to top)