Short answer
Georeferencing assigns real-world coordinates to a scanned image so it aligns with other spatial data. In QGIS you do it in the Georeferencer (menu: Layer > Georeferencer): load the scan, place ground control points (GCPs) on features whose true coordinates you know, choose a transformation and a target CRS, inspect the residuals and RMS error, then output a GeoTIFF. The decisions that determine quality are which transformation you pick, how many and how well-spread the GCPs are, and whether the CRS you assign matches the map's actual projection. Get those right and the result aligns; get the CRS wrong and even a perfect RMS lands the map in the wrong place.
Where the coordinates come from
You can source GCP coordinates three ways, in rough order of reliability:
- From the map's own graticule or grid ticks. A topographic or geological sheet usually prints corner coordinates and grid intersections. These are the best GCPs because they are the map's own reference frame — type the coordinates directly.
- From a reference layer. Click From map canvas and match a sharp, durable feature (a road junction, a building corner, a confluence) to the same feature in an already-georeferenced layer or basemap. Avoid anything that moves or is fuzzy (river meanders, field edges, tree lines).
- From field survey. GPS-surveyed control points where available.
Whatever the source, the coordinates and the chosen CRS must agree. If the sheet's grid is in a national projection — say British National Grid (EPSG:27700) or a UTM zone (EPSG:32633) — type the grid coordinates and set the Georeferencer's Target SRS to that exact CRS. Mixing lat/long values with a projected target CRS is the classic silent failure.
Choosing the transformation
The transformation defines how pixel coordinates map to ground coordinates. Pick by the nature of the distortion, not by which one gives the lowest RMS:
- Linear / Helmert — translation, scale, rotation only. Use when the scan is geometrically faithful and you only need to place and rotate it.
- Polynomial 1 (affine) — adds shear; corrects for an image that is uniformly stretched or skewed. The right default for a flat, well-printed sheet. Needs at least 3 GCPs (use ~6).
- Polynomial 2 / 3 — fits mild systematic curvature (e.g. from a slightly bowed scan). Polynomial 2 needs ≥6 GCPs, polynomial 3 ≥10. Higher orders can oscillate wildly between points if GCPs are sparse — more is not better.
- Thin Plate Spline (TPS) — a rubber-sheet warp that forces the surface through every GCP exactly. Reserve it for genuinely locally distorted media (folded, torn, or non-uniformly shrunk paper). Because it fits GCPs perfectly, RMS at the GCPs reads as zero, which hides error everywhere else — never read TPS RMS as a quality measure.
For resampling, use Nearest neighbour when you intend to keep crisp linework or will re-digitise from the scan, and Cubic for a smoother visual product. Set the output target resolution sensibly; leaving it blank lets QGIS infer it.
Worked example: a 1:50,000 geological sheet on UTM
- Open Georeferencer, load
sheet_scan.tif. - Set the transformation settings first (the gear/settings dialog): Transformation type Polynomial 1, Resampling Cubic, Target SRS EPSG:32633, Output GeoTIFF path, and tick Load in QGIS when done.
- Add GCPs from the graticule. Zoom to the printed grid intersection at the SW corner, click Add Point, and type its easting/northing exactly as printed. Repeat for the other three corners and at least two interior intersections — six points spread to the edges.
- Watch the residuals table. Each GCP shows a residual in pixels; the overall RMS appears at the bottom. For a 1:50,000 sheet scanned around 300 dpi, ground pixel size is on the order of metres, and you want RMS within roughly one to two pixels — broadly tens of metres at this scale. One GCP with a huge residual is a mis-click or a mistyped coordinate; delete and re-add it.
- Run. QGIS writes a georeferenced GeoTIFF and loads it.
- Optional command-line equivalent. The Georeferencer is a GUI over GDAL; the same job is
gdal_translateto embed GCPs followed bygdalwarpto apply the transform:
gdalwarp -r cubic -t_srs EPSG:32633 -tps \
sheet_with_gcps.tif sheet_georef.tif
(omit -tps and let the embedded GCP count drive a polynomial fit for an affine result).
Reading RMS error honestly
RMS (root-mean-square) is the average GCP residual — how far, on average, the transform misses your control points. It is necessary but not sufficient:
- A low RMS with a wrong CRS still puts the map in the wrong country. RMS only measures internal consistency among GCPs, not absolute correctness.
- TPS always shows near-zero RMS by construction. Judge TPS by overlay, not RMS.
- Keep one or two GCPs as independent checks: place them, note the predicted vs true position, then exclude them from the fit. Their error is a fairer accuracy estimate than the fitted RMS.
A good practice is to convert RMS from pixels to ground units and compare it to the map's intended precision. If the sheet's smallest meaningful feature is ~25 m and your check-point error is 15 m, that is usually acceptable; if it is 200 m, the result is not fit for measurement.
Common pitfalls and why they happen
- Map lands in the ocean / wrong place. Cause: target CRS does not match the coordinates entered. Fix: confirm the sheet's grid system and set Target SRS to it.
- Map looks fine but RMS is large. Cause: a single bad GCP. Fix: sort the residuals, fix or delete the outlier.
- Edges align, centre drifts (or vice versa). Cause: GCPs clustered, leaving regions unconstrained. Fix: spread points to all corners and edges.
- Suspiciously perfect fit. Cause: TPS with few points. Fix: use a polynomial and check points, or trust an overlay, not the number.
- Warped, wavy result. Cause: high-order polynomial with too few GCPs oscillating. Fix: drop to polynomial 1 or add many well-spread points.
- Blurry linework. Cause: cubic resampling when you needed crisp lines for re-digitising. Fix: nearest neighbour.
Validation
Overlay the georeferenced GeoTIFF at ~50% opacity on a trusted reference (a basemap, a vector road layer, an existing georeferenced sheet) and pan to the corners and to any internal control you held back. Coastlines, road junctions, and grid intersections should sit within your accuracy budget across the whole sheet, not just where you placed GCPs. Confirm the output CRS in the layer properties, and check that the GeoTIFF carries a correct extent and pixel size before you digitise anything from it.
Bathyl perspective
A scanned sheet is only useful once its error is quantified, not just minimised. We match the transformation to the physical state of the paper, spread GCPs deliberately, hold back independent check points, and report error in ground units so downstream digitising inherits a known tolerance rather than a hidden one. The georeferenced raster then becomes a measurable base, not a decorative backdrop.
Related reading
- QGIS Digitizing Best Practices
- QGIS Topology Checks for Polygon Maps
- QGIS for Geological Mapping
- GIS and spatial analysis