Roof measurement from aerial photos: what a usable image needs
A roof photo is measurable when a 1 ft feature spans several pixels, the camera points straight down, and one known length sets the scale. Here is how to get all three.
A usable aerial photo for roof measurement needs four things: enough resolution that a 1 ft feature spans several pixels, a camera pointing straight down, one known length to set the scale, and light that doesn't bury edges in shadow. Miss one and every length you trace inherits the error. (Satellite imagery in RoofStruct scales itself; this is about your own drone or phone photo.)
Resolution: what a 1 ft feature needs to look like
The number that matters is ground sample distance (GSD): how much roof one pixel covers. Zoom to 100% and look at something about a foot wide, like a ridge cap course or a box vent.
- 3 in per pixel or finer: a 1 ft feature is 4 or more pixels wide.
- 6 in per pixel: 2 pixels. Edges are visible but soft, and your clicks wander by a pixel either way.
- 12 in per pixel: 1 pixel. The ridge cap is a smudge, and a 1-pixel miss is a foot of footage.
You can work out a drone's GSD before you fly: sensor width × height above the roof ÷ (focal length × image width in pixels). With a 13.2 mm sensor, an 8.8 mm lens, a 5,472-pixel-wide image and the camera 200 ft (2,400 in) above the roof: 13.2 × 2,400 ÷ (8.8 × 5,472) = 31,680 ÷ 48,154 = about 0.66 in per pixel. Plenty. Double the height and GSD doubles, so you have room to fly higher, which helps with the next problem.
Nadir vs oblique
A nadir photo is shot straight down, gimbal at 90 degrees, and it is the only angle you can trace a plan from. An oblique photo puts the near eave closer to the camera than the far one, so the scale changes across the frame: one reference length is only correct at its own spot. Obliques are for damage and penetrations, not measuring.
Even a true nadir shot has a catch: the ridge sits closer to the camera than the eaves. Lengths at ridge height read long by roughly camera height ÷ (camera height − ridge height above the eave). Run it on a ridge 10 ft above the eave:
| Camera above eave | Ridge scale factor | A 40 ft ridge reads |
|---|---|---|
| 100 ft | 100 ÷ 90 = 1.11 | 44.4 ft |
| 200 ft | 200 ÷ 190 = 1.05 | 42.1 ft |
| 300 ft | 300 ÷ 290 = 1.03 | 41.4 ft |
Fly higher and keep the house centered. A tight, low shot that fills the frame looks sharper and measures worse.
A nadir photo also can't show pitch. You trace plan dimensions, then apply pitch per facet or as one predominant pitch; if you didn't get it on site, the free pitch finder estimates it from the street.
A scale reference: one known length
In RoofStruct an uploaded photo stays unscaled until you give it one real distance. Press R (Set Scale), draw a line across something you've measured, and type its length; lengths and areas stay blank until you do. Measure your first roof in RoofStruct covers the rest of the trace. The reference you pick decides the result:
- Use the longest known length you can. A 3 in mistake on a 10 ft reference is 2.5% on every length and about 5% on area (area goes with the square: 1.025 × 1.025 = 1.05). The same 3 in mistake on a 40 ft eave is 0.6% on lengths and about 1.25% on area.
- Measure it at roof height. A measured eave run, tape to tape, sits on the same plane you trace. A tape laid on the ground sits lower. With the camera 200 ft above the ground and the eave 10 ft up, a ground reference makes the roof read 200 ÷ 190 = 5% long on lengths and about 11% heavy on area. If a ground tape is all you have, fly higher and lay it beside the house.
- Run it across the frame, not in a corner. Lens distortion is worst at the edges.
Lens distortion on phones
Phone ultra-wide lenses (the 0.5x setting) bow straight lines near the corners of the frame. The phone's software straightens most of it, not all of it, and you can't tell how much from the photo. Use the main 1x lens, keep the roof in the middle third of the frame, and skip panorama mode, which stitches several shots with their own small errors. A phone shot from the ground or a ladder is oblique by definition: fine for damage, not for tracing the plan.
Season and shadows
- Leaves off beats leaves on. An overhanging maple can hide a valley in July and show it in November.
- No snow. Snow fills valleys, rounds off the ridge line and hides drip edge.
- Short shadows. Fly near midday or on a bright overcast day. Low sun throws long shadows over lower roofs and the far eave, and you end up guessing where the edge is.
- Dry roof. Wet shingles throw glare that washes out edges.
Pre-flight checklist
- Camera straight down, house centered, nothing important in the outer edges of the frame
- Height chosen so a 1 ft feature still spans 3 or 4 pixels at 100% zoom
- One eave run measured on site, the longer the better
- Midday or overcast light, dry roof, no snow
- Main lens, no panorama, full-resolution file (messaging apps often shrink photos)
Where you trip
- Calibrating on a short length. A 6 ft door width multiplies every reading error across the whole roof. Use the longest eave you measured.
- Mixing a ground reference with a low flight. That is how a 30-square roof turns into 33 squares on the order.
- Tracing the shadow line instead of the drip edge. On the shaded side, the dark band is not the eave.
- Trusting one oblique shot. If it isn't straight down, it isn't a measurement.
FAQ
Can I measure a roof from a drone photo?
Yes, if it's shot straight down with the house centered and you set the scale from one known length. In RoofStruct that is one Set Scale (R) line over a measured distance.
What resolution does a roof photo need?
Enough that a 1 ft feature spans 3 or 4 pixels at 100% zoom: about 3 to 4 in per pixel or finer.
Is a tape on the ground good enough for scale?
It works, but it reads the roof long, because the roof is closer to the camera than the ground. Fly higher, or use a measured eave run instead.
Do I need my own photo to measure a roof?
No. Satellite imagery in RoofStruct scales itself, so you can trace without uploading anything. Your own photo earns its place when trees or an old capture make the satellite view hard to read.