Agent skill · data analytics · datadrivenconstruction
drone-site-survey
Process drone survey data for construction sites. Generate orthomosaics, DEMs, point clouds, calculate volumes, track progress, and integrate with BIM models for comparison.
Why this skill is useful
Provides domain-specific algorithms for processing drone survey data, including volume calculations and integration with BIM models.
What it needs
Requires python3 installed locally. About 7k tokens when loaded. Last updated 2026-02-14. 265 stars on the source repository.
What this skill does
Drone Site Survey Processing Overview This skill implements drone data processing for construction site monitoring. Process aerial imagery to generate maps, measure volumes, track progress, and compare with design models. Capabilities: Orthomosaic generation Digital Elevation Model (DEM) creation Point cloud processing Volume calculations Progress monitoring BIM comparison Stockpile measurement Quick Start Comprehensive Drone Survey System Image Processing Pipeline Volume Calculation Engine Progress Monitoring BIM Comparison `python class BIMDroneComparator: """Compare drone survey with BIM model""" def init(self, bimsurface: np.ndarray, dronepointcloud: PointCloud): self.bim = bimsurface self.drone = dronepointcloud def compareelevations(self, gridsize: float = 1.0) -> Dict: """Compare drone elevations with BIM design""" # Create comparison grid xmin = max(np.min(self.bim[:, 0]), np.min(self.drone.points[:, 0])) xmax = min(np.max(self.bim[:, 0]), np.max(self.drone.points[:, 0])) ymin = max(np.min(self.bim[:, 1]), np.min(self.drone.points[:, 1])) ymax = min(np.max(self.bim[:, 1]), np.max(self.drone.points[:, 1])) xgrid = np.arange(xmin, xmax, gridsize) ygrid = np.arange(ymin, ymax, gridsize) xx, yy = np.meshgrid(xgrid, ygrid) # Interpolate both surfaces bimz = griddata(self.bim[:, :2], self.bim[:, 2], (xx, yy), method='linear') dronez = griddata( self.drone.points[:, :2], self.drone.points[:, 2], (xx, yy), method='linear' ) # Calculate differences diff = dronez - bimz validmask = ~np.isnan(diff) validdiff = diff[validmask] return { 'meandiffm': float(np.mean(validdiff)), 'stddiffm': float(np.std(validdiff)), 'maxdiffm': float(np.max(validdiff)), 'mindiffm': float(np.min
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills datadrivenconstruction/drone-site-survey