Skip to content

๐Ÿ›ฐ๏ธ Point Cloud Ingestion (LAZ / LAS)

MIRROR supports ingestion, querying, and experimentation with LiDAR-based point cloud data using an integrated Jupyter Notebook environment powered by PDAL and PostgreSQL.

This enables users to work with .laz / .las files interactively, visualize metadata, and validate storage inside the Postgres database using spatial extensions.


โœ… What's Included in This Feature

๐Ÿ“ฆ A custom Jupyter container (citymap-jupyter-pdal) with:

  • PDAL
  • PostgreSQL client libraries
  • Notebook support

๐Ÿง  PostgreSQL is extended with:

  • pointcloud
  • pointcloud_postgis

  • ๐Ÿ”— Full integration with your MIRROR database using the shared Docker network: citymap-network

๐Ÿ“ Mounted notebooks/ folder where users can:

  • Upload .laz or .las files
  • Create PDAL ingestion pipelines
  • Write point clouds directly into PostgreSQL
  • Run SQL for validation

๐Ÿงช Accessing the Notebook

Once the setup is complete, go to:

๐Ÿ‘‰ http://localhost:8888

Youโ€™ll land on the fully functional Jupyter Notebook environment pre-connected to the database.


Folder Structure

Make sure you have the following:

./db/
  โ””โ”€โ”€ notebooks/
      โ”œโ”€โ”€ example_pipeline.ipynb
      โ””โ”€โ”€ sample_data.laz

๐Ÿงฌ Reusable Ingestion Pipeline with PDAL

The Jupyter notebook uses pdal pipeline with the writers.pgpointcloud driver to ingest .laz files into PostgreSQL.

Example logic (within the notebook):

{
  "pipeline": [
    "sample_data.laz",
    {
      "type": "writers.pgpointcloud",
      "connection": "host='db-pg' dbname='citydb_v4' user='citymap' password='test'",
      "table": "lidar_building_patch",
      "srid": 4326
    }
  ]
}

Note

You can customize the table name, CRS (SRID), or add filters as needed.

๐ŸŽฅ Demo Video

Want to see it in action?

Click here for Demo Video

Volume and Storage

Point cloud ingestion can be disk intensive โ€” ensure Docker has enough memory and volume capacity allocated.

Testing

Always start with a small .laz file to confirm pipeline logic before scaling to large datasets.