Ground Sample Distance
Short answer. Ground sample distance is the real world size of one pixel in an aerial or satellite image, usually quoted in centimetres. It is set by the sensor pixel size, the lens focal length and the altitude, and it decides what can be labelled at all: a car is tens of pixels at fifteen centimetres and a licence plate is under four. Two datasets can both be described as aerial imagery and differ by a factor of twenty in what they contain, so a task description without a GSD is not a specification.
How to do it
Where the number comes from
Ground sample distance is the sensor pixel size multiplied by the altitude and divided by the focal length, with all three in the same units. A smaller pixel, a longer lens or a lower altitude all reduce it. The relationship is linear in altitude, so doubling the flight height doubles the GSD and quarters the number of pixels covering the same ground.
That trade is the central planning decision for an aerial collection. Flying lower gives finer detail and fewer hectares per frame, so the flight takes longer, produces more images and costs more to store and process. The right altitude follows from the smallest object the task has to resolve, not from the sensor specification.
- GSD = pixel size x altitude / focal length
- lower altitude, longer lens, smaller pixel: all reduce GSD
- halving the GSD quadruples the pixel count for the same ground area
What the number decides about the labels
The size of an object in pixels is its real size divided by the GSD, so a GSD states which tasks are possible. At fifteen centimetres a car is around thirty pixels and vehicle detection is straightforward, while a licence plate is under four pixels and reading it is impossible regardless of the model. At five centimetres the plate reaches ten pixels and becomes a hard but defined problem.
This is why a labelling guideline has to be written against a GSD. A rule like mark all vehicles is clear at five centimetres and ambiguous at thirty, where a car is fifteen pixels and a van is barely distinguishable from a truck. The minimum object size in pixels belongs in the guideline, and it translates directly into a minimum real world size at the stated GSD.
GSD is not the same as accuracy
A fine GSD does not guarantee that a position on the image maps to the right place on the ground. That depends on the georeferencing, which comes from the GPS and inertial data and from the ground control points used in processing. A five centimetre image with a two metre georeferencing error is worse for mapping than a twenty centimetre image with a ten centimetre error.
The two numbers are quoted together in a delivery specification: GSD for the detail, and a horizontal and vertical accuracy for the position. Ask for both, and ask whether the accuracy was measured against surveyed control points or estimated from the flight logs, because the second is a claim and the first is a measurement.
Code
Work out the GSD, the ground coverage and the pixel size of common objects across a range of flight altitudes for one camera.
# a typical survey camera: 3.76 micron pixels, 24 mm lens, 6000 x 4000 sensor
PIXEL_M = 3.76e-6
FOCAL_M = 24e-3
SENSOR_W, SENSOR_H = 6000, 4000
def gsd(altitude_m):
return PIXEL_M * altitude_m / FOCAL_M
def altitude_for(target_gsd):
return target_gsd * FOCAL_M / PIXEL_M
print("ground sample distance by flight altitude")
print(" %8s %10s %12s %14s" % ("altitude", "GSD", "swath", "area"))
for alt in (100, 200, 500, 1000, 2000):
g = gsd(alt)
w, h = SENSOR_W * g, SENSOR_H * g
print(" %6dm %9.1fcm %6.0fm x %5.0fm %10.1f ha"
% (alt, g * 100, w, h, w * h / 10000))
print()
print("to hold a GSD of 5.0 cm the ceiling is %.0f m." % altitude_for(0.05))
print("halving the GSD quadruples the number of pixels covering the same ground,")
print("so the image count and the storage both roughly quadruple for the same area.")
print()
print("what fits in one pixel, by GSD")
print(" %8s %12s %12s %12s" % ("GSD", "car 4.5m", "person 1.7m", "plate 0.5m"))
for g in (0.0157, 0.05, 0.10, 0.157, 0.30):
print(" %6.1fcm %9.0f px %11.0f px %11.1f px"
% (g * 100, 4.5 / g, 1.7 / g, 0.5 / g))
print()
print("at 15.7 cm a car is about 29 pixels long and a licence plate is under four,")
print("which is why vehicle detection survives that GSD and plate reading does not.")
print("state the task with the GSD. two datasets can both be described as aerial")
print("imagery and differ by a factor of twenty in what can be labelled.") - Standard library only. Altitude is above ground, not above sea level, and the calculation assumes a nadir view with the camera pointing straight down.
- Expected: at 100m the GSD is 1.6cm and one frame covers 94 by 63 metres. At 500m it is 7.8cm covering 470 by 313 metres, and at 1000m it is 15.7cm covering 940 by 627 metres. The area grows with the square of altitude while the detail falls linearly.
- Expected: holding a GSD of 5.0cm caps the altitude at 319 metres with this camera. A longer lens or a smaller pixel raises that ceiling, which is the usual reason mapping aircraft carry a different camera rather than flying lower.
- Expected: at 15.7cm a 4.5m car is about 29 pixels, a 1.7m person about 11, and a 0.5m licence plate about 3. That last number is the one to quote when a task turns out to be impossible, because it is a property of the collection and not of the model.
- Change FOCAL_M to 35e-3 and every GSD drops by about a third, which is what a longer lens buys at the same altitude.
Where this goes wrong
Describing a dataset without its GSD
Aerial imagery spans three orders of magnitude in detail, and the label set that is possible at one end is impossible at the other. A delivery described only as aerial imagery cannot be evaluated against a task, and a price quoted against it cannot be compared. State the GSD, and state the object size in pixels that the guideline requires.
Confusing GSD with positional accuracy
GSD is how much ground one pixel covers, and accuracy is how far that pixel is from where it should be. A fine GSD with poor georeferencing produces a sharp image in the wrong place, which is worse for mapping than a coarse image in the right place. Ask for both numbers and for how the accuracy was measured.
Assuming a constant GSD across a frame
The calculation holds at nadir. Toward the edge of a wide angle image the ground is further away and at an angle, so the effective GSD is coarser and the object shapes are distorted. On a large survey the same object is easier to label near the centre of a frame than at its edge, and the guideline may need to say so.
Planning storage from the image count
The pixel count for a fixed ground area grows with the square of the inverse GSD, so halving the GSD quadruples the storage and the processing time for the same survey. A plan that budgets from the number of images rather than from the ground area will be wrong by a large factor when the altitude changes.
When to buy the data instead of building the pipeline
Decide the GSD yourself, because it follows from the smallest object the task has to resolve and it fixes the collection cost. Buy the imagery when flying it yourself is not practical, or buy the labels when the volume is beyond your team, and specify the GSD, the object size in pixels, the positional accuracy and the coordinate reference system. Ask for a sample frame with its GSD and accuracy stated before agreeing to a survey. We deliver imagery and labels with the GSD, the accuracy and the coordinate reference system documented per delivery.
Need data for Ground Sample Distance?
Tell us the language, the hours, and what the data needs to look like. You will get a real number and a real timeline, not a range. If we cannot source it well, we will tell you that instead.
- Pilot batch before the full run, so problems surface early.
- Consent documentation delivered with the data.
- No medical or clinical data. No recorded telephone calls.
- You send the spec Language, hours, recording conditions, and the deadline.
- We reply within two business days A real number and a real timeline, not a range.
- You approve a pilot batch A small run first, so problems surface before the full order.
- Full run, then delivery with documents Audio, transcripts, and the consent record for every speaker.