Spaces:
Sleeping
Sleeping
A newer version of the Gradio SDK is available: 6.9.0
metadata
title: RoofSight
emoji: 🏠
colorFrom: blue
colorTo: green
sdk: gradio
sdk_version: 5.50.0
python_version: '3.11'
app_file: app.py
pinned: false
models:
- nvidia/C-RADIOv4-H
RoofSight — Roof Plane Segmentation
Extract individual roof plane polygons from satellite imagery as georeferenced GeoJSON.
How It Works
- Google Solar API fetches high-resolution RGB imagery, building mask, and Digital Surface Model (DSM) at 0.1 m/pixel.
- RANSAC 3D plane fitting detects geometric roof planes from the DSM point cloud — completely shadow-invariant.
- C-RADIOv4-H (NVIDIA, 631M params) provides zero-shot appearance-based segmentation using DINOv3 + SAM3 + SigLIP2 features distilled into one backbone.
- Fusion merges geometry (RANSAC) with appearance (RADIO) for accurate plane boundaries.
- GeoJSON export with per-plane pitch, azimuth, and area.
Requirements
- Google Cloud API key with Solar API + Geocoding API enabled.
Usage
Enter a property address and click Segment Roof. The app will:
- Download satellite imagery from Google Solar API
- Isolate the primary building
- Fit 3D planes to the roof surface
- Run zero-shot segmentation for visual refinement
- Output a downloadable GeoJSON file
Architecture
Address -> Geocode -> Google Solar API (RGB + Mask + DSM)
-> Building Isolation -> RANSAC Planes + C-RADIOv4-H
-> Fusion -> GeoJSON Polygons
| Module | Purpose |
|---|---|
google_solar.py |
API calls, GeoTIFF parsing |
building.py |
Building isolation, cropping |
ransac_planes.py |
3D plane fitting, DSM upscaling |
radio_backbone.py |
C-RADIOv4-H model, zero-shot segmentation |
fusion.py |
Geometry + appearance merge |
geo_export.py |
GeoJSON polygon extraction |
pipeline.py |
Orchestration |
app.py |
Gradio UI |