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
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?
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
- Sentinel-2 products (SentiWiki), European Space Agency and European Commission, Copernicus, SentiWiki, read 2026-09-22. Level-2A surface reflectance: L2A_SR = (L2A_DN + BOA_ADD_OFFSET) / QUANTIFICATION_VALUE, band-dependent offset introduced at processing baseline 04.00 on 25 January 2022; DN 0 is no-data.
- How do I use a scale factor with Landsat Level-2 science products?, United States Geological Survey, USGS FAQ, read 2026-09-22. Collection 2 surface reflectance: DN x 0.0000275 - 0.2, valid range 7,273 to 43,636, fill value 0.
Experimental means this tool has not yet met the stable bar: at least 20 golden vectors, differential tests, and an independent worked example.