Module 5/5 · Weeks 13–15 · 27 h

Accuracy and delivery

UAT 361 Unmanned Aircraft Systems Technology for Surveying, Mapping and Inspection

About 90 minDraft, awaiting reviewLast updated 27 September 2026

Lesson

By the end of this module you will be able to

  1. Compute bias and horizontal and vertical RMSE from independent checkpoints
  2. Report accuracy under ASPRS Edition 2 Version 2, including the checkpoint survey error
  3. Trace causes from error patterns and check the completeness of the area
  4. Assemble a delivery package with a SHA-256 manifest and make a three-state acceptance decision

Prerequisites: UAT 361 modules 1–4

Why this matters

Map users always ask “how far can I trust it?” A good answer is not “very sharp” or “we used RTK”, but a number from independent checkpoints, computed to a standard, together with the area it covers and its limits. The other half is a delivery package that the recipient can open and check without phoning the surveyor. Without these two, however good the images look, the job is not a deliverable survey.

Bias and RMSE

For each checkpoint the error = map value − surveyed value, computed separately for E, N and Z.

  • Bias (): the mean error, showing systematic shift
  • RMSE (root mean square error): the square root of the mean of the squares, showing the total size of the error, both systematic and random

Zero bias does not mean accurate, because positive and negative errors can cancel. RMSE is not a standard deviation; do not use a spreadsheet’s standard deviation function instead, because that hides the bias.

Top view of the survey area with four checkpoints CP-A to CP-D. Each has a pink arrow showing the direction and size of its horizontal error, pointing in different directions. On the right is a 5 centimetre scale arrow
Figure 1. Horizontal error vectors at checkpoints

Reporting under ASPRS Edition 2

The ASPRS Positional Accuracy Standards, Edition 2 Version 2 (2024), contain points every drone surveyor must know, as summarised by Abdullah (2025):

  • Accuracy is reported as horizontal RMSE (RMSE) and vertical RMSE (RMSE); the 95% confidence level is no longer used
  • At least 30 checkpoints are required for projects up to 1,000 km². With fewer, as in many small drone jobs, the report must state that only that number of checkpoints was tested
  • Checkpoints should be at least twice as accurate as the product being tested
  • The checkpoint survey error must be included: , where RMSE comes from comparing the product with the checkpoints and RMSE is the accuracy of the checkpoint survey itself

Example 1. Accuracy from four checkpoints

Synthetic training data. The checkpoint survey accuracy is assumed to be 2 cm horizontal and 3 cm vertical.

import math

errors = {  # id: (eE, eN, eZ) m = map − surveyed
    "A": (0.03, 0.04, 0.10), "B": (-0.03, 0.04, 0.00),
    "C": (0.00, -0.05, -0.10), "D": (0.00, 0.05, 0.00),
}
SURVEY_H, SURVEY_V = 0.02, 0.03
n = len(errors)
rms = lambda values: math.sqrt(sum(v * v for v in values) / n)

e_e, e_n, e_z = zip(*errors.values())
rmse_h1 = math.hypot(rms(e_e), rms(e_n))
rmse_v1 = rms(e_z)
print(f"bias E {sum(e_e) / n:+.3f}  N {sum(e_n) / n:+.3f}  Z {sum(e_z) / n:+.3f} m")
print(f"product vs checkpoints: RMSE_H {rmse_h1:.3f} m, RMSE_V {rmse_v1:.3f} m")
print(f"including checkpoint survey: RMSE_H {math.hypot(rmse_h1, SURVEY_H):.3f} m, "
      f"RMSE_V {math.hypot(rmse_v1, SURVEY_V):.3f} m")
if n < 30:
    print(f"report as tested with ONLY {n} checkpoints (fewer than 30)")
bias E +0.000  N +0.020  Z +0.000 m
product vs checkpoints: RMSE_H 0.050 m, RMSE_V 0.071 m
including checkpoint survey: RMSE_H 0.054 m, RMSE_V 0.077 m
report as tested with ONLY 4 checkpoints (fewer than 30)

The vertical bias is zero, yet the vertical RMSE is about 7 cm, because some points are 10 cm too high and others 10 cm too low. Including the checkpoint error raises the reported numbers slightly, which is more honest. With only 4 points, the report must say clearly that only 4 checkpoints were tested.

Tracing causes from error patterns

FindingHypothesis to checkHow to separate causes
All points shift the same wayDatum, coordinate system or image position correctionCompare metadata and raw coordinates before any transformation
Horizontal fine, Z shifted by a constantHeight system or pole heightCheck ellipsoidal versus orthometric heights (module 2)
Error grows away from the centreDistribution of images or GCPsView camera, GCP and checkpoint positions together
A few points stand outWrong marking, or comparing different surfacesCheck that point’s images before deciding

Never delete a checkpoint just because it makes the RMSE look better. If a point really is wrong, give the reason and report results both before and after removing it.

Completeness and the delivery package

Completeness compares the area with usable data against the area that must be delivered, not the rectangular frame of the image file. If the 240 × 160 m yard has 36,480 m² of usable data, completeness is 95%, but the missing 5% might be the most important part, so show on a map where it is missing.

Six boxes for folders: 01-brief scope and criteria; 02-raw raw image list; 03-control GCPs, checkpoints, field log; 04-processing software, settings, logs; 05-products GeoTIFF, LAZ, QGIS project; and 06-qa RMSE, limits, verdict. Below is a box for manifest.csv holding file name, size and SHA-256
Figure 2. Structure of the survey delivery package

A manifest lists every file with its size and SHA-256 value (the hash function of FIPS 180-4). The recipient recomputes the values to confirm that files are complete and unchanged. But SHA-256 only shows that a file has not changed; it does not show that the coordinates are correct.

Example 2. Building a manifest and checking completeness

import hashlib

files = {  # file name: content (short stand-ins for real files)
    "01-brief/brief.md": b"Yard survey 240 x 160 m, EPSG:32647, orthometric height",
    "03-control/points.csv": b"id,role,E,N,H\nG1,control,500.00,1000.00,80.430\n",
    "06-qa/qa_report.md": b"RMSE_H 0.054 m, RMSE_V 0.077 m, ONLY 4 checkpoints",
}
for name, data in files.items():
    print(f"{name:<24} {len(data):>3} B  {hashlib.sha256(data).hexdigest()[:16]}...")

required, valid = 240 * 160, 36_480
print(f"coverage {valid / required:.0%} of {required:,} m2")
01-brief/brief.md         55 B  15e94383f7b44355...
03-control/points.csv     47 B  98ffe3c8ec044706...
06-qa/qa_report.md        50 B  04b86c732b8a4bf4...
coverage 95% of 38,400 m2

The hashes are cut to 16 characters for readability; a real manifest must keep all 64.

Three-state acceptance

  • Pass: the evidence meets all criteria agreed in the brief, and the person responsible for checking accepts it
  • Fail: results clearly show which requirement is not met, with a fix or plan to collect again
  • Insufficient evidence: checkpoints, the reference system or other data needed for a decision are missing. Never report this as a pass

Module lab

Lab: quality report and delivery

  1. Read checkpoint coordinates from the module 3 products, compute bias and RMSE with Example 1, and check one row by hand
  2. Load the checkpoints into QGIS, show the error arrows, check the pattern against the table and write hypotheses for the causes
  3. Draw the boundary of usable data, compute completeness and identify missing areas
  4. Organise the package as in Figure 2 and create a SHA-256 manifest of every real file
  5. Hand the package to another team to open without asking questions; they recompute one checkpoint and make a three-state acceptance decision with reasons

Common mistakes

Watch out

  • Using standard deviation instead of RMSE, hiding the bias
  • Reporting GCP errors instead of checkpoint errors
  • Leaving out the checkpoint survey error, or not stating that there were fewer than 30 checkpoints
  • Deleting a checkpoint with a large error without evidence
  • Believing SHA-256 proves the coordinates are correct

Summary

  • Bias shows systematic shift and RMSE the total size of the error; report both from independent checkpoints
  • ASPRS Ed. 2 V2 uses RMSE including checkpoint error and requires at least 30 checkpoints, or a statement when there are fewer
  • Error patterns point to causes, and completeness must be shown on a map
  • The delivery package has a clear structure and a SHA-256 manifest, and acceptance is pass, fail or insufficient evidence

Check your understanding

  1. Errors on one axis are +0.06 and 0.00 m. What are the bias and RMSE?
  2. RMSE = 0.03 m and RMSE = 0.04 m. What is RMSE?
  3. Compared with checkpoints, RMSE = 0.06 m, and the checkpoints were surveyed to 0.02 m. What value is reported?
  4. 9,120 m² of usable data out of 9,600 m² required. What is the completeness?
  5. Which state applies to a job where no checkpoints were ever measured?
Answers
  1. Bias m, RMSE m
  2. m
  3. m
  4. Insufficient evidence

Key formulas

Bias and RMSE per axis
Horizontal RMSE
Including checkpoint error (ASPRS Ed. 2)
Area completeness

Key references

  1. American Society for Photogrammetry and Remote Sensing. (2024). ASPRS positional accuracy standards for digital geospatial data (Edition 2, Version 2). link
  2. Abdullah, Q. (2025). Overview of the ASPRS positional accuracy standards for digital geospatial data, Edition 2, Version 2 (2024). Photogrammetric Engineering & Remote Sensing, 91(5), 247–255. link
  3. OpenDroneMap Authors. Ground control points. OpenDroneMap documentation (Version 3.5). link
  4. NIST/SEMATECH. e-Handbook of statistical methods. National Institute of Standards and Technology. link
  5. National Institute of Standards and Technology. (2015). Secure hash standard (SHS) (FIPS 180-4). link
  6. Sampath, A., Shrestha, M., While, M., & Scholl, V. M. (2023). Guidelines for calibration of uncrewed aircraft systems imagery (Open-File Report 2023–1033). U.S. Geological Survey. link

Further reading

Study the assigned knowledge units in advance, review media and take the module quiz

In class / field

Intensive lab and field practice recorded in a lab notebook

Learning evidence: Lab notebook signed by the instructor

Module quiz

This is a formative self-check, not a graded exam

Knowledge domain: Surveying, mapping and geoinformatics