LiDAR Building Detection Pipeline
Budget: €250 – €750 EUR
LiDAR Data Processing: Detect Windows Surfaces from Building Parcels (Python)
Project Description
We are looking for a LiDAR data specialist or geospatial developer with experience in working with .las / .laz point cloud data to build a Python-based tool for automated detection of windows on buildings in Switzerland.
This tool will:
Objectives
• Load and process public LiDAR datasets (Swiss federal geoportal, .las / .laz files).
• Filter noise, ground points, vegetation, etc.
• Segment buildings from the scene.
• Detect wall surfaces by azimuth (e.g., N/S/E/W).
• Identify and calculate window areas in square meters per wall surface.
• Return structured output (e.g., dictionary or JSON) with per-building window surface summaries.
Inputs
• Coordinates of the bounding box (bbox) of a building parcel (CH1903+ / EPSG:2056).
• Path or URL to a public .las or .laz file from swisstopo.
• Optional parameters (e.g., intensity threshold, azimuth resolution, DBSCAN tuning).
Public Data Example
• We use the Swiss swisstopo STAC API to find LiDAR tiles that intersect a given bounding box.
Example bounding box request:
GET https://data.geo.admin.ch/api/stac/v0.9/collections/ch.swisstopo.swisssurface3d/items?bbox=6.597540,46.533747,6.598231,46.534055
The API returns a JSON containing an asset URL: item['assets']['http']['href']
# Example content:
https://data.geo.admin.ch/ch.swisstopo.swisssurface3d/swisssurface3d_2019_2535-1153/swisssurface3d_2019_2535-1153_2056_5728.las.zip
These files are standard LiDAR .las.zip format and need to be downloaded, unzipped, and parsed in Python using tools like laspy, PDAL, or Open3D.
Expected Outputs
• Python function or script that returns:
Total window surface area in m² per wall (grouped by azimuth).
Optional: visualization (e.g., using Open3D or Matplotlib) for debugging or verification.
• Clean, well-commented, modular Python code.
• (Bonus) Export to GeoJSON, CSV, or similar.
Required Skills
• Experience working with LiDAR point clouds (especially .las, .laz) and building detection.
• Strong Python programming.
• Familiar with tools/libraries like:
laspy, Open3D, PDAL, scikit-learn, numpy, matplotlib
(Optional) LAStools, PCL, CloudCompare
• Knowledge of geospatial concepts (CRS, EPSG:2056) and azimuth-based segmentation.
• Ability to handle Swiss coordinate systems is a plus.
Deliverables
• Python code for point cloud filtering, building segmentation, and window detection.
• Brief documentation or Jupyter Notebook explaining usage.
• Example run over a test .las file and parcel coordinates.
• (Optional but appreciated): suggestions for performance optimization or scalable architecture.
How to Apply
We are open to candidates with strong geospatial / LiDAR experience and competitive rates.
Communication languages: English, French or Spanish
Please include:
• Brief explanation of similar projects you’ve done.
• Which tools/libraries you would use and why.
• (Optional) A short code snippet or GitHub repo with similar work.
• Your availability and time estimate.
Project Description
We are looking for a LiDAR data specialist or geospatial developer with experience in working with .las / .laz point cloud data to build a Python-based tool for automated detection of windows on buildings in Switzerland.
This tool will:
Objectives
• Load and process public LiDAR datasets (Swiss federal geoportal, .las / .laz files).
• Filter noise, ground points, vegetation, etc.
• Segment buildings from the scene.
• Detect wall surfaces by azimuth (e.g., N/S/E/W).
• Identify and calculate window areas in square meters per wall surface.
• Return structured output (e.g., dictionary or JSON) with per-building window surface summaries.
Inputs
• Coordinates of the bounding box (bbox) of a building parcel (CH1903+ / EPSG:2056).
• Path or URL to a public .las or .laz file from swisstopo.
• Optional parameters (e.g., intensity threshold, azimuth resolution, DBSCAN tuning).
Public Data Example
• We use the Swiss swisstopo STAC API to find LiDAR tiles that intersect a given bounding box.
Example bounding box request:
GET https://data.geo.admin.ch/api/stac/v0.9/collections/ch.swisstopo.swisssurface3d/items?bbox=6.597540,46.533747,6.598231,46.534055
The API returns a JSON containing an asset URL: item['assets']['http']['href']
# Example content:
https://data.geo.admin.ch/ch.swisstopo.swisssurface3d/swisssurface3d_2019_2535-1153/swisssurface3d_2019_2535-1153_2056_5728.las.zip
These files are standard LiDAR .las.zip format and need to be downloaded, unzipped, and parsed in Python using tools like laspy, PDAL, or Open3D.
Expected Outputs
• Python function or script that returns:
Total window surface area in m² per wall (grouped by azimuth).
Optional: visualization (e.g., using Open3D or Matplotlib) for debugging or verification.
• Clean, well-commented, modular Python code.
• (Bonus) Export to GeoJSON, CSV, or similar.
Required Skills
• Experience working with LiDAR point clouds (especially .las, .laz) and building detection.
• Strong Python programming.
• Familiar with tools/libraries like:
laspy, Open3D, PDAL, scikit-learn, numpy, matplotlib
(Optional) LAStools, PCL, CloudCompare
• Knowledge of geospatial concepts (CRS, EPSG:2056) and azimuth-based segmentation.
• Ability to handle Swiss coordinate systems is a plus.
Deliverables
• Python code for point cloud filtering, building segmentation, and window detection.
• Brief documentation or Jupyter Notebook explaining usage.
• Example run over a test .las file and parcel coordinates.
• (Optional but appreciated): suggestions for performance optimization or scalable architecture.
How to Apply
We are open to candidates with strong geospatial / LiDAR experience and competitive rates.
Communication languages: English, French or Spanish
Please include:
• Brief explanation of similar projects you’ve done.
• Which tools/libraries you would use and why.
• (Optional) A short code snippet or GitHub repo with similar work.
• Your availability and time estimate.