FlightCoverageAnalyzer
Judges whether nadir drone passes constitute a photogrammetrically valid capture — a real multi-line grid with adequate side overlap, or a single wide-altitude pass whose footprint covers the target — with a green/amber/red verdict instead of eyeballing a flight map.
Low pass -- roof / lot detail (~66 ft AGL)clip 0020
Insufficient overlap
- Mean AGL
- 20.0 m
- Detected legs
- 3
- Est. footprint width
- 29.6 m
- Side overlap
- 74%, 65%
3-line grid but minimum side overlap is only 65% (< 65% target) — adjacent lines may not photogrammetrically match up.
High pass -- whole-block context (~159 ft AGL)clip 0022
Covers target
- Mean AGL
- 48.4 m
- Detected legs
- 1
- Est. footprint width
- 71.6 m
Single line, but footprint (~72m) already exceeds the target width (20m) — full coverage without needing multiple lines.
Legend
- Valid coverage — grid side-overlap meets the target, or a single pass whose footprint already covers the target width.
- Insufficient — adjacent lines may not photogrammetrically match up, or a single pass doesn't reach the target width.
- Inconclusive — a single line with no target width supplied to check against.
Usage
import { FlightCoverageAnalyzer } from "@/components/FlightCoverageAnalyzer";
import type { FlightPass } from "@/components/FlightCoverageAnalyzer";
const passes: FlightPass[] = [
{ id: "0020", label: "Low pass", points: [{ timestampMs: 0, lat: 30.26, lon: -97.71, altitudeMeters: 156 }, /* ... */] },
];
<FlightCoverageAnalyzer
passes={passes}
options={{ groundRefMeters: 136.35, targetWidthMeters: 20 }}
/>