Skip to main content

Lesson 7: Georeference a historical aerial photo

Complexity: intermediate
Outcome: download one historical aerial frame from Retrolens, align it to modern LINZ imagery and save a georeferenced GeoTIFF in EPSG:2193 without altering the source scan.

Before you begin

You need:

  • 03_project/qgis-course.qgz
  • the LINZ aerial basemap from Lesson 1
  • 01_source/historical-imagery/
  • 02_working/
  • Retrolens
  • a study area with several stable features visible in both historical and current imagery

This lesson uses modern imagery as a geographic reference. It does not assume that every visible feature stayed fixed through time.

1. Open the project and check the modern reference

  1. Start QGIS.
  2. Choose Project → Open….
  3. Open 03_project/qgis-course.qgz.
  4. Confirm the project CRS in the lower-right corner is EPSG:2193.
  5. Turn on the LINZ aerial basemap in the Layers panel.
  6. Use your bookmark or Pan Map and Zoom In to return to the study area.
  7. Turn on current parcels or another public reference layer if it helps you recognise stable features.
  8. Save the project.

Before downloading an old photograph, identify several features that may have survived for decades, such as long-lived road intersections, bridge approaches, large public buildings or clearly persistent structures.

Avoid using river edges, coastlines, vegetation edges or recent development as control points unless you know the feature stayed in the same location.

2. Find one Retrolens frame

  1. Leave QGIS open.
  2. Open Retrolens in a desktop web browser.
  3. Accept the site's terms if prompted.
  4. Navigate to the same general area as your QGIS project using the Retrolens search/map controls.
  5. Zoom in until individual aerial-photo footprints or frame coverage can be selected.
  6. Click a frame that covers your study area.
  7. Inspect the preview before downloading it.
  8. Prefer a frame containing at least six stable features distributed around the image rather than all clustered in one corner.
  9. Record the flight/run, frame number and capture date or year shown by Retrolens.
  10. Record any additional identifier or scale information displayed with the frame.

If the first image has very few recognisable stable features, choose another overlapping frame before continuing.

3. Download the original image into the source folder

  1. Use Retrolens' download control for the selected frame.
  2. Choose TIFF where the service offers it. If TIFF is not available for that frame, use the best available JPEG/image download.
  3. When your browser asks where to save the file, browse to:
qgis-course/01_source/historical-imagery/
  1. Keep the original filename supplied by Retrolens where practical.
  2. Click Save.
  3. Open File Explorer or Finder.
  4. Confirm the downloaded image exists in 01_source/historical-imagery.
  5. Do not crop, rotate, resize or overwrite the source image.

The unmodified source scan is the evidence copy. The georeferenced image created later is a derived file.

4. Record the source metadata before processing

Open 03_project/README.md and add:

Lesson 7 Retrolens source
Source: Retrolens
Website: https://retrolens.co.nz/
Flight/run: [exact value shown]
Frame: [exact value shown]
Capture date/year: [exact value shown]
Other source identifier: [if shown]
Download date: [today's date]
Original filename: [exact filename]
Original stored at: 01_source/historical-imagery/[filename]

Save the README before continuing.

5. Prepare the reference map canvas

Return to QGIS.

  1. Turn on LINZ Aerial Basemap.
  2. Put the aerial imagery below any useful current roads/parcels in the Layers panel.
  3. Zoom to approximately the area covered by the Retrolens frame.
  4. Look for the stable features you identified earlier.
  5. Confirm the project CRS remains EPSG:2193.
  6. Save the project.

6. Open QGIS Georeferencer

QGIS 3.44 includes Georeferencer in the Layer menu.

  1. Choose Layer → Georeferencer….
  2. A separate Georeferencer window opens.
  3. If it opens behind the main QGIS window, bring it to the front using your operating system's window controls.

You should now see

A Georeferencer window with its own blank image canvas, toolbar and a Ground Control Point table area.

7. Open the original Retrolens image

  1. In Georeferencer choose File → Open Raster…, or click the Open Raster toolbar button.
  2. Browse to qgis-course/01_source/historical-imagery.
  3. Select the downloaded Retrolens TIFF or JPEG.
  4. Click Open.
  5. The historical photograph should appear in the Georeferencer canvas.
  6. If QGIS asks you to assign a CRS to the raw scan, do not simply assign EPSG:2193 to make the warning disappear. The unreferenced scan does not yet have valid map coordinates.

Use the Georeferencer zoom and pan tools to inspect the photograph.

8. Add the first Ground Control Point

A Ground Control Point, or GCP, connects one exact location in the old image with the same location in the already georeferenced QGIS map.

  1. In Georeferencer click Add GCP Point.
  2. Zoom into a stable feature in the historical image.
  3. Click the precise part of the feature you can also identify in modern imagery. For example, use the centre of a long-lived road intersection rather than a vague area beside the road.
  4. A coordinate-entry dialog opens.
  5. Choose From map canvas.
  6. QGIS brings the main map canvas forward.
  7. Zoom in if needed without losing the location.
  8. Click the same physical feature on the modern LINZ aerial imagery.
  9. Return to the Georeferencer window if it does not return automatically.
  10. Confirm one GCP row now appears in the GCP table.

Do not worry about the error value yet. One point is not enough to calculate a useful transformation.

9. Add at least five more GCPs

Repeat the exact process from step 8 until you have at least six control points.

Spread them across the image. Aim for something like:

GCP             GCP

GCP

GCP GCP
GCP

For every point:

  1. click Add GCP Point
  2. click a precise stable feature in the historical image
  3. choose From map canvas
  4. click the identical feature in the modern QGIS canvas
  5. return to Georeferencer
  6. confirm the new GCP appears in the table

Do not place all six points along one road, in one settlement or in the centre of the photograph. Poorly distributed controls can make one area look accurate while the edges distort badly.

10. Save the GCPs

Do not rely on the points existing only in the current Georeferencer session.

  1. In the Georeferencer toolbar or menu choose Save GCP Points As….
  2. Browse to qgis-course/02_working.
  3. Save them with a clear filename such as:
historical-georef-gcps.points
  1. Confirm the file is created.

If you later need to reopen the georeferencing session, the saved GCP file can help you restore the work rather than clicking every point again.

11. Configure the transformation

  1. In Georeferencer choose Settings → Transformation Settings….
  2. Set Transformation type to Polynomial 1.
  3. Set Resampling method to Bilinear.
  4. Set Target SRS/CRS to NZGD2000 / New Zealand Transverse Mercator 2000 – EPSG:2193.
  5. Find the output raster filename control.
  6. Browse to qgis-course/02_working.
  7. Set the output filename to:
historical_georeferenced.tif
  1. Tick Load in QGIS when done.
  2. Leave the source image in 01_source unchanged.
  3. Click OK.

Polynomial 1 is intentionally conservative for the first attempt. Do not choose a more flexible transformation solely to force a smaller residual number.

12. Inspect GCP residuals before running

  1. Look at the GCP table in Georeferencer.
  2. Scan the residual/error values.
  3. Look for one point whose error is much larger than the others.
  4. If you find one, click/select that GCP row.
  5. Zoom to the corresponding historical-image point.
  6. Check that you really clicked the same physical feature in both old and modern imagery.
  7. If the point is clearly wrong, delete or move that GCP and add it again accurately.
  8. Make sure you still have enough well-distributed points after any deletion.
  9. Save the GCP file again after corrections.

The goal is not to produce the smallest possible number at any cost. The transformation must make geographic sense across the whole photograph.

13. Start georeferencing

  1. Click Start Georeferencing in the Georeferencer toolbar.
  2. Wait for the process to finish.
  3. Watch for an error message. If one appears, read it before closing the message.
  4. When processing finishes successfully, switch back to the main QGIS window.
  5. Look in the Layers panel for historical_georeferenced or a similar name based on the output filename.
  6. If it was not added automatically, choose Layer → Add Layer → Add Raster Layer…, browse to 02_working/historical_georeferenced.tif and add it manually.
  7. Save the QGIS project.

You should now see

The historical image drawn over the same general location as the modern aerial imagery.

14. Make old and new imagery easy to compare

  1. In the Layers panel put historical_georeferenced above the modern LINZ aerial basemap.
  2. Double-click historical_georeferenced.
  3. Open Transparency in Layer Properties.
  4. Reduce the raster opacity until both the historical and modern imagery can be compared. Around 40–60% opacity is a useful starting point.
  5. Click Apply.
  6. Adjust if necessary.
  7. Click OK.
  8. Turn the historical raster on and off several times using its checkbox.

15. Check independent features you did not use as GCPs

Do not judge the result only at the points used to create it.

  1. Choose at least three stable features that were not used as GCPs.
  2. Check one near the centre of the image.
  3. Check one toward an edge.
  4. Check another in a different part of the image.
  5. Compare historical and modern positions.
  6. Record where alignment is strong and where it is weaker.

Add to README.md:

Lesson 7 alignment check
Transformation: Polynomial 1
Resampling: Bilinear
Target CRS: EPSG:2193
Output: 02_working/historical_georeferenced.tif
GCP file: 02_working/historical-georef-gcps.points
Independent check features: [describe three]
Alignment good at: [describe]
Alignment weaker at: [describe]

Save the README.

16. Do not treat real landscape change as georeferencing error automatically

If an old river channel, coastline, track or building does not match the current image, ask two different questions:

  1. Is the georeferencing poor here?
  2. Or has the feature genuinely changed since the historical photograph?

Use stable control features to judge alignment before deciding that a moving natural feature is an error.

17. Create a separate historical interpretation layer

You will digitise historical interpretation separately rather than drawing it into current parcel data or altering the raster.

  1. Choose Layer → Create Layer → New GeoPackage Layer….
  2. Select 02_working/course.gpkg as the database.
  3. Set Table name to:
historical_features
  1. Choose a geometry type appropriate to something clearly visible in your image. Use Point for the simplest first exercise.
  2. Set CRS to EPSG:2193.
  3. Add these Text fields one at a time:
feature_id
source_id
source_date
feature_type
interpretation
confidence
notes
  1. Click OK.
  2. Confirm historical_features appears in the Layers panel.

18. Add one teaching interpretation feature

  1. Select historical_features.
  2. Click Toggle Editing.
  3. Click Add Point Feature.
  4. Click one clearly identifiable feature visible in the historical image.
  5. In the form enter a stable ID such as HIST-001.
  6. In source_id, enter the Retrolens flight/frame reference you recorded.
  7. In source_date, enter the historical capture date/year as text if that is how you designed the field.
  8. Enter a simple feature type.
  9. In interpretation, describe what you think the feature represents.
  10. In confidence, enter something explicit such as high, medium or low.
  11. Add a short note explaining any uncertainty.
  12. Click OK.
  13. Click Save Layer Edits.
  14. Turn editing off.
  15. Save the QGIS project.

The interpretation belongs to a new layer with its own provenance. It does not become part of a current authoritative layer.

19. Save and reopen everything

  1. Save the project.
  2. Close QGIS.
  3. Reopen QGIS.
  4. Open 03_project/qgis-course.qgz.
  5. Confirm historical_georeferenced loads.
  6. Confirm historical_features loads.
  7. Turn the old raster on and off over the modern aerial imagery.
  8. Confirm your teaching interpretation feature remains.

Verify before moving on

You should be able to show:

  • the untouched Retrolens source image in 01_source/historical-imagery
  • flight/run, frame and capture metadata in the README
  • at least six well-distributed GCPs
  • a saved GCP file
  • Polynomial 1 transformation
  • Bilinear resampling
  • EPSG:2193 as target CRS
  • 02_working/historical_georeferenced.tif
  • at least three independent alignment checks
  • any weak-alignment areas documented rather than hidden
  • historical_features stored separately from current data

Common problems

Georeferencer is not where the lesson says

In QGIS 3.44 use Layer → Georeferencer…. If you are using a different major QGIS version, menu placement may differ. This course is written for 3.44 LTR.

The historical image is blank in Georeferencer

Use Zoom to Layer inside Georeferencer. Confirm you opened the actual TIFF/JPEG rather than a web shortcut or HTML download page.

The output appears nowhere near the study area

Check the target CRS is EPSG:2193 and review every GCP target captured with From map canvas. A single wildly wrong target location can distort the result badly.

One side aligns but the other does not

Check GCP distribution. Add or replace stable controls around the weak area rather than dragging the output raster manually.

Residual error is very high for one point

Recheck whether the old-image click and modern-map click refer to the same physical feature. Delete and recreate a clearly mistaken GCP.

Historical riverbanks do not match modern riverbanks

That may be real geomorphic change. Judge georeferencing against stable independent features before treating the river movement as an error.

Retrolens has several overlapping frames

Complete this workflow with one frame first. Georeference each additional frame independently before considering any mosaic.

Next: Lesson 8: Make a map for hui.

Official reference: QGIS Georeferencer.

Related: Retrolens historical imagery workflows.

Test basis: QGIS 3.44 LTR. Last reviewed: 4 September 2026