geoprimsField-grade geospatial math

Digital number to reflectance

Turns a band's stored digital number into surface reflectance with its sensor's own scaling: the Sentinel-2 Level-2A offset and quantification value, or the Landsat Collection 2 gain and offset.

Experimental: not yet fully verified. How results are checked

0.045

Reflectance is 0.045, by Sentinel-2 Level-2A: (DN - 1000) / 10000.

Scaling applied
Band
Provenance
Computed by
raster.scale.reflectance 1.0.0, core 0.1.0
Model
Sentinel-2 L2A: (DN + BOA_ADD_OFFSET) / QUANTIFICATION_VALUE, offset -1000 and quantification 10000 unless given; Landsat Collection 2 Level-2: DN x 0.0000275 - 0.2
Accuracy
Exact arithmetic on the product's own constants. The offset is band-dependent and both values are in the product metadata, which governs.
Notes
1 shown with the answer
Cites
European Space Agency and European Commission, Copernicus, Sentinel-2 products (SentiWiki); United States Geological Survey, How do I use a scale factor with Landsat Level-2 science products?

Something look off?

Your values

Showing an example. Change anything.
More options 2
Run many at once from a CSV

Loading…

How we got thisFormula, worked example, sources, and proof

Model: Sentinel-2 L2A: (DN + BOA_ADD_OFFSET) / QUANTIFICATION_VALUE, offset -1000 and quantification 10000 unless given; Landsat Collection 2 Level-2: DN x 0.0000275 - 0.2

Accuracy: Exact arithmetic on the product's own constants. The offset is band-dependent and both values are in the product metadata, which governs.

When to use this: Use this before any index, when the numbers you have came out of a GeoTIFF rather than out of a reflectance product: bands are stored as integers, and each sensor undoes that differently. It is also the tool to reach for when an NDVI looks wrong by a constant amount, which is usually the Sentinel-2 baseline offset applied or not applied.

Limitations: The Sentinel-2 offset is band-dependent and both it and the quantification value come from the product metadata, which governs over the usual values assumed here; pass them when the product says otherwise. The Landsat constants are for Collection 2 Level-2 surface reflectance, not for surface temperature or Collection 1. A digital number of zero is no-data in both products and is refused rather than scaled.

Worked example: Sentinel-2 L2A digital number 1,450 at baseline 04.00. Source: add-spatial-indexing-and-raster imagery-indices scenario: (1450 - 1000) / 10000 = 0.045.

You enter

Band
B8
Digital number
1450
Sensor preset
sentinel-2-l2a

You get

Reflectance
0.045
Scaling applied
Sentinel-2 Level-2A: (DN - 1000) / 10000
Band
near-infrared

Review: Not yet independently reviewed by a GIS professional.

Last verified: 2026-09-22, when a maintainer last confirmed this tool's sources at the issuer. See the sources ledger.

Status: version 1.0.0, core 0.1.0. See this tool in the verification report.

Checked against: 17 golden test vectors (download the test vectors, each with its source and tolerance). See how results are checked and every source.

Sources

Experimental means this tool has not yet met the stable bar: at least 20 golden vectors, differential tests, and an independent worked example.