Six ways a stockpile volume comes out quietly wrong
Volume change between two flights is the most trusted number in drone surveying and the easiest to get wrong without any error message.
Comparing two surveys of the same site to get a volume is a subtraction: take one surface, subtract the other, multiply by pixel area. Every step of that has a way of producing a confident, plausible, wrong number — and none of them raise an error. These are six we have hit and now guard against.
1. The two surfaces were never aligned
If two rasters do not share an origin, something has to decide how they line up. A fallback that aligns them by pixel index — row 0 to row 0, column 0 to column 0 — will happily compare two areas of ground that are hundreds of metres apart.
We reproduced this with two surfaces containing zero true change. The result was 84 cubic metres of material that did not exist. The fix is not a better fallback; it is refusing to report a volume when the alignment came from a fallback at all.
2. Degrees were treated as metres
A geographic coordinate system measures position in degrees. A projected one measures in metres. If code converts pixel size to metres but leaves the origin in degrees, offsets are computed by subtracting metres from degrees.
The failure is silent and always in the same direction: a real offset of 100 pixels computed as 0.001293, which rounds to zero. The two surfaces are declared perfectly aligned and subtracted anyway.
3. The pixels are not square
In a geographic CRS, a pixel of constant angular size is not a constant ground size. One degree of longitude shrinks as you move away from the equator; one degree of latitude does not.
On a real 30-metre elevation tile at 46 degrees north, the pixel measures 21.09 m across and 30.71 m down — a 45 per cent difference. Multiply a change in height by the wrong pixel area and the volume is wrong by that factor, with no symptom.
4. The units were feet
Plenty of projected coordinate systems in the United States are defined in feet, including survey feet. Code that assumes a projected CRS means metres will under-report volume by a factor of about 10.8 for an area measurement. The number still looks like a number.
The defence against 2, 3 and 4 is the same: read the linear unit out of the coordinate system instead of assuming it, and refuse to proceed when it is not one you recognise.
5. The two flights were at different resolutions
Fly higher and your ground sample distance grows. Subtracting a 3 cm surface from a 5 cm surface means resampling one of them, and resampling a surface model averages away exactly the small height differences you are trying to measure. Small changes disappear into the interpolation.
6. You subtracted surface models, not terrain models
A surface model is the top of everything the camera could see: ground, plant, vehicle, building, the operator's van. A terrain model is bare earth with those stripped out.
If a truck was parked on the pile during one flight and not the other, a surface-model subtraction books the truck as material. Vegetation growing between visits does the same thing, more slowly and less obviously.
What to ask for
A volume figure without those five answers is an estimate wearing the clothes of a measurement. We would rather hand you a refusal than a number we cannot stand behind, which is why our change detection declines to report a volume when it cannot establish alignment honestly.