EUDR Screening Methodology
Technical specification for GeoTown's satellite-based deforestation screening
1. Purpose & Scope
This document describes the methodology used by GeoTown's EUDR screening tool (geotown.io/eudr) to assess whether a plot of land shows evidence of forest cover loss after the EU Deforestation Regulation cutoff date of 31 December 2020.
This tool is a screening instrument. It provides satellite-based evidence to support due diligence under Regulation (EU) 2023/1115. It does not constitute a certification of EUDR compliance, does not assess legality of land use in the country of production, and does not replace ground-level verification or supplier audits.
2. Data Source
Satellite platform: Copernicus Sentinel-2, operated by the European Space Agency (ESA) under the EU Copernicus programme.
Product level: Level-2A (L2A) — atmospherically corrected surface reflectance.
Spatial resolution: 10 metres (Bands B04 Red, B08 NIR), 20 metres (Bands B8A NIR narrow, B11 SWIR, B12 SWIR).
Temporal resolution: 5-day revisit at the equator (with both Sentinel-2A and 2B).
Data archive: Element84 Earth Search STAC API (earth-search.aws.element84.com/v1), accessing the sentinel-2-l2a collection hosted on AWS.
Access method: Cloud-Optimized GeoTIFF (COG) via HTTP range requests using GDAL/rasterio. No bulk data downloads. Windowed reads extract only the pixels within the analysis bounding box.
Cost: Free and open access under the Copernicus data policy. No authentication or API key required.
Citation: Contains modified Copernicus Sentinel data [year]. Processed by GeoTown.
3. Analysis Area Definition
Point coordinates: When a user submits a single GPS point (latitude, longitude), the tool creates a square bounding box around the point to capture a statistically meaningful number of pixels.
| User-selected plot size | Buffer radius | Approximate area | Approximate pixel count (10m) |
|---|---|---|---|
| Under 4 hectares | 100 m | ~4 ha | ~400 |
| 4 to 25 hectares | 200 m | ~16 ha | ~1,600 |
| 25 to 100 hectares | 350 m | ~49 ha | ~4,900 |
| Default (batch) | 150 m | ~9 ha | ~900 |
This buffering ensures that NDVI statistics are computed over hundreds of pixels rather than a single 10×10m pixel, which would be subject to noise and edge effects.
Bounding box (region scan): When a user draws a rectangle or enters W/S/E/N coordinates, the tool analyses the full extent. Results are labelled as “Regional Overview — not a per-plot verification.”
Coordinate reference system: All input coordinates are expected in WGS 84 (EPSG:4326). Internal processing reprojects to the UTM zone of the scene for pixel-level computation.
4. Scene Selection
Baseline period: The tool selects the Sentinel-2 L2A scene closest in date to 31 December 2020 among scenes below the cloud-cover threshold, preferring the window 1 October 2020 to 31 March 2021.
Baseline window enforcement (v1.3): The baseline is hard-bounded to 1 July 2020 – 30 June 2021. If no usable scene exists in that window, the result is returned as “Inconclusive” rather than screening against an out-of-window scene. This matters because a baseline dated well after the cutoff would already have any post-cutoff clearing “baked in,” which would be invisible — a false “Deforestation-free”. When the baseline falls inside the hard window but outside the preferred Oct 2020 – Mar 2021 window, the result carries a data-quality note stating how many months the baseline sits from the cutoff, so a PASS can be read with appropriate caution.
Current period (season-matched, v1.3): The tool targets the most recent anniversary of the baseline scene's date so both scenes fall in the same season. Comparing a cool-season baseline against, say, a hot-dry-season current scene confounds genuine change with seasonal phenology (leaf and canopy-moisture cycles) and was a significant source of false positives in monsoonal and seasonal geographies. The seasonal match is judged from the actual chosen scene: the tool measures the day-of-year gap between the baseline and current scenes and flags the result as “seasonally mismatched” whenever that gap exceeds 45 days (and reports the gap in days), rather than assuming a match was achieved.
Cloud cover filter: Scenes with greater than 30% total cloud cover (as reported in STAC metadata) are excluded from consideration.
Scene metadata reporting: Every result reports the exact scene used for both baseline and current periods, including:
- Sentinel-2 scene identifier (e.g., S2B_29NQG_20210206_0_L2A)
- Capture date
- Cloud cover percentage
This allows independent verification — any user can retrieve the same scene from the Copernicus Open Access Hub or AWS and reproduce the analysis.
5. Cloud Masking
Cloud and cloud shadow pixels are excluded from analysis using the Sentinel-2 Scene Classification Layer (SCL), which is included in every L2A product.
Pixels classified as clear (included in analysis):
| SCL Value | Classification |
|---|---|
| 4 | Vegetation |
| 5 | Bare soils |
| 6 | Water |
| 7 | Cloud low probability (unmasked) |
| 11 | Snow/ice |
Pixels classified as cloud/shadow (excluded from analysis):
| SCL Value | Classification |
|---|---|
| 2 | Dark area pixels / terrain shadow (excluded in v1.2) |
| 3 | Cloud shadows |
| 8 | Cloud medium probability |
| 9 | Cloud high probability |
| 10 | Thin cirrus |
Terrain shadow (v1.2): SCL class 2 (“dark area pixels”), which captures topographic/terrain shadow, is now excluded from the clear set for deforestation screening. Shadowed pixels carry depressed near- and shortwave-infrared reflectance that distorts the moisture (NDMI) and burn-ratio (NBR) indices — a notable false-positive source in mountainous terrain. Excluding them means shadowed areas count against coverage (and can trigger “Inconclusive”) rather than silently corrupting the verdict.
Coverage requirement (v1.2): Each scene must be at least 60% clear over the plot (i.e. less than 40% obscured by cloud or shadow), and at least 50 valid pixels (~0.5 ha) must be clear on both dates. If either condition fails, the result is flagged “Inconclusive” rather than issuing a verdict.
6. Vegetation Index Computation
Primary index: Normalised Difference Vegetation Index (NDVI)
NDVI = (NIR − Red) / (NIR + Red)
Where:
- NIR = Band B08 (842 nm centre wavelength, 10m resolution)
- Red = Band B04 (665 nm centre wavelength, 10m resolution)
Interpretation:
- NDVI > 0.6: Dense vegetation / closed canopy forest
- NDVI 0.3–0.6: Moderate vegetation / open canopy / crops
- NDVI 0.1–0.3: Sparse vegetation / degraded land
- NDVI < 0.1: Bare soil / built-up / water
Forest classification threshold: Pixels with NDVI > 0.4 are classified as “forest or dense vegetation” for the purpose of forest cover percentage calculation.
Resampling: When bands are at different native resolutions (e.g., 20m SWIR bands), bilinear interpolation is used to resample to the 10m grid of the Red and NIR bands.
6b. Additional Vegetation Indices
In addition to NDVI, two supplementary indices are computed from the same satellite scenes to provide complementary corroboration of vegetation change. These indices are not statistically independent — all three share the near-infrared band, and NDMI and NBR differ only in which shortwave-infrared band they use — but each responds differently to canopy moisture and bare-soil exposure, so together they are more informative than NDVI alone.
NDMI — Normalised Difference Moisture Index
NDMI = (NIR − SWIR-1) / (NIR + SWIR-1)
- NIR = Band B08 (842 nm, 10m resolution)
- SWIR-1 = Band B11 (1610 nm, 20m native resolution, resampled to 10m)
What it measures: Canopy water content. Healthy forest canopy retains moisture (NDMI 0.2–0.5). Cleared or degraded land loses canopy moisture (NDMI < 0.1).
Why it helps: Drought reduces NDMI moderately but maintains canopy structure. Actual clearing causes a severe NDMI drop. This distinguishes drought stress from deforestation.
Forest classification threshold: NDMI > 0.2
NBR — Normalised Burn Ratio
NBR = (NIR − SWIR-2) / (NIR + SWIR-2)
- NIR = Band B08 (842 nm, 10m resolution)
- SWIR-2 = Band B12 (2190 nm, 20m native resolution, resampled to 10m)
What it measures: Land surface material change via shortwave infrared reflectance. Intact forest has NBR 0.3–0.7. Exposed soil, burned land, or cleared ground has NBR < 0.1.
Why it helps: SWIR bands are sensitive to soil moisture and mineral content. When forest is cleared, exposed soil produces a very different SWIR signature than canopy — even if replacement crops grow quickly enough to maintain NDVI.
Forest classification threshold: NBR > 0.2
Why these three indices
- NDVI captures vegetation presence (greenness / photosynthetic activity)
- NDMI captures canopy moisture (intact canopy holds moisture; cleared land does not)
- NBR captures surface material change (forest vs. exposed soil/crops via SWIR)
A real deforestation event changes all three. Drought mainly changes NDVI and partially NDMI. Seasonal leaf loss mainly changes NDVI. Sensor noise is random and unlikely to affect all three consistently.
7. Forest Cover Change Detection
For each plot, the tool computes per index:
- Baseline coverage (%): Percentage of cloud-free pixels above the index threshold in the baseline scene
- Current coverage (%): Percentage of cloud-free pixels above the index threshold in the current scene
- Change: Current coverage minus baseline coverage, expressed in percentage points (pp)
| Index | Threshold | Measures |
|---|---|---|
| NDVI | > 0.4 | Forest / dense vegetation presence |
| NDMI | > 0.2 | Healthy canopy moisture |
| NBR | > 0.2 | Intact vegetation cover |
The primary forest cover percentages displayed to the user are NDVI-based, consistent with v1.0. NDMI and NBR values are shown in the technical details section and included in CSV exports.
8. Verdict Classification
Per-index verdict
Each of the three indices independently produces a verdict using the same percentage-point thresholds:
| Verdict | Criterion | Interpretation |
|---|---|---|
| Deforestation-free | Coverage loss < 5 pp | No significant change detected by this index. |
| Review needed | Coverage loss 5–15 pp | Moderate change detected by this index. |
| Deforestation risk | Coverage loss > 15 pp | Significant loss detected by this index. |
Multi-index agreement (v1.1)
The final verdict is determined by a 2-of-3 majority vote across the three indices:
- If ≥2 indices flag “Deforestation risk” and NDVI shows forest-cover loss → Final verdict: Deforestation risk
- If ≥2 indices say “Deforestation-free” → Final verdict: Deforestation-free
- Everything else → Review needed (mixed signals, investigate)
Greenness guardrail (v1.2): A “Deforestation risk” verdict requires that NDVI (greenness) itself shows loss. If the moisture/burn-ratio indices (NDMI, NBR) drop but NDVI forest cover is unchanged, the result is downgraded to Review needed rather than a confident risk finding. Clearing removes green vegetation, so a SWIR-only signal with intact greenness is more consistent with seasonal moisture change or terrain shadow than with deforestation. This also guarantees the headline NDVI metric can never contradict a “Deforestation risk” verdict.
Mean-NDVI cross-check (v1.3): The forest-cover metric counts the percentage of pixels above the NDVI 0.4 threshold, which is insensitive to uniform canopy thinning that never crosses 0.4 (for example, a stand degrading from NDVI 0.7 to 0.45 registers no change in cover). To catch this, the tool also compares the mean NDVI of the plot between the two dates. On forested plots, if forest-cover percentage looks stable but mean NDVI has fallen by more than 0.05, a “Deforestation-free” result is downgraded to Review needed and the drop is reported. This protects against confident PASS verdicts on land that is degrading below the cover threshold.
Rationale: Requiring agreement from two further spectral measurements substantially reduces false positives from drought, seasonal phenology, and single-band sensor artefacts. A single-index anomaly (e.g., NDVI drops from drought but NDMI and NBR remain stable) no longer triggers a false alarm. The three indices are correlated (they share the NIR band), so this is corroboration by complementary — not fully independent — measurements; it strengthens confidence but does not constitute three statistically independent tests.
Special cases
- Non-forest baseline: If NDVI-based forest cover at baseline is below 10%, the plot is classified as “Deforestation-free” regardless of index agreement, because deforestation screening is not applicable to non-forest land.
- Inconclusive (v1.2): If either scene is less than 60% clear over the plot, or fewer than 50 valid pixels (~0.5 ha) are clear on both dates, the verdict is “Inconclusive” rather than a potentially unreliable determination. The clear-coverage of each scene and the valid-pixel count are reported with every result.
Note on thresholds: The 5pp and 15pp thresholds were selected to balance sensitivity (detecting real deforestation) against specificity (avoiding false alarms from seasonal changes, drought, or sensor noise). These thresholds are applied uniformly across all three indices. They may be revised in future methodology versions based on validation studies.
9. Known Limitations & Bias Direction
This section describes known limitations and the direction of potential errors.
Spatial resolution (10m): Sentinel-2 cannot detect clearing smaller than approximately 0.01 hectares (one pixel). Small-scale selective logging or narrow strip clearing may not trigger a verdict change. Bias direction: False negatives — real deforestation below detection threshold is missed.
NDVI as a proxy: NDVI measures vegetation greenness, not forest type. Conversion from natural forest to oil palm plantation or cocoa agroforestry may not produce a significant NDVI drop if the replacement crop has high canopy cover. Under EUDR Article 2, this conversion IS deforestation. Bias direction: False negatives — agroforestry replacement of natural forest may pass screening. Disclosure (v1.3): for tree-crop commodities (cocoa, coffee, oil palm, rubber) this caveat is printed explicitly on the per-plot screening report, since these are precisely the cases where a high-canopy replacement crop can pass the greenness screen while still being deforestation.
Seasonal phenology: Deciduous forests in dry seasons show lower NDVI. If the baseline scene was captured during the wet season and the current scene during the dry season, the NDVI drop may reflect seasonality, not deforestation. Bias direction: False positives — seasonal variation misidentified as clearing.
Cloud cover in tropical regions: Persistent cloud cover in equatorial regions (Côte d'Ivoire, Indonesia, DRC) may force the tool to use baseline scenes weeks or months away from the exact EUDR cutoff date of 31 December 2020. The tool first searches a tight window (October 2020 – March 2021); if no sufficiently cloud-free scene exists, it widens the search to July 2020 – June 2021 and selects the clearest available scene. The actual baseline date is reported in every result and should always be checked. Impact and bias direction: in the worst case the baseline scene can fall up to roughly six months after the cutoff. Deforestation that occurred between 31 December 2020 and the baseline scene date would already be absent from the “baseline” image, so such clearing could be missed — a false negative. The reported baseline date makes this checkable on a per-plot basis.
Single-date comparison: The methodology compares two dates rather than analysing a dense time series. This means transient events (temporary cloud shadow misclassification, sensor artefacts, temporary flooding) can influence individual index values. Mitigation (v1.1): Multi-index agreement across NDVI, NDMI, and NBR reduces the impact of single-index artefacts by requiring corroboration from two complementary spectral measurements (which, although correlated through the shared near-infrared band, respond differently to moisture and soil exposure).
No ground-truth validation dataset (yet): This methodology has not yet been validated against a labelled dataset of known deforested/non-deforested plots. Reported verdicts should be treated as screening indicators, not definitive classifications. Planned: Validation against JRC Tropical Moist Forests product in a future methodology version.
10. Regulatory Context
This tool is designed to support due diligence under:
- Regulation (EU) 2023/1115 of the European Parliament and of the Council of 31 May 2023 on the making available on the Union market and the export from the Union of certain commodities and products associated with deforestation and forest degradation (the “EUDR”)
- EUDR cutoff date: 31 December 2020 (Article 2(14))
- Geolocation requirement: Article 9(1)(d) requires geolocation of all plots where commodities were produced. Plots under 4 hectares may use a single GPS point; larger plots require a polygon.
- In-scope commodities: Cattle, cocoa, coffee, oil palm, rubber, soya, wood — and products derived from them (Annex I)
- Application date: 30 December 2026 for large and medium operators; 30 June 2027 for micro and small operators
This tool does not generate a Due Diligence Statement (DDS) and does not interface with the EU TRACES Information System.
11. Output Formats
- On-screen verdict with baseline/current forest cover percentages and change value
- PDF screening report including methodology summary, scene references, limitations, and legal disclaimer. Report reference numbers are auto-generated (format: GT-EUDR-XXXX-R1) for audit trail purposes.
- CSV export with per-plot data including scene IDs, dates, forest cover values, and verdicts
12. Version History
| Version | Date | Changes |
|---|---|---|
| v1.0 | April 2026 | Initial methodology. NDVI-based forest cover change detection with SCL cloud masking. |
| v1.1 | April 2026 | Added NDMI and NBR indices. Verdicts now require 2-of-3 index agreement to reduce false positives from drought and seasonal variation. |
| v1.2 | June 2026 | Season-matched current scene (compare like seasons with the baseline). Terrain shadow (SCL 2) excluded from clear pixels. Greenness guardrail: a risk verdict requires NDVI loss, not SWIR-only signals. Stricter “Inconclusive” thresholds (per-scene clear coverage + valid-pixel floor). Per-plot data-quality and scene metadata surfaced in all outputs. |
| v1.3 | June 2026 | Baseline hard-bounded to the EUDR cutoff window (Jul 2020 – Jun 2021) — out-of-window baselines return Inconclusive instead of a possible false PASS. Seasonal match judged from the actual scene's day-of-year gap (flagged beyond 45 days). Mean-NDVI cross-check downgrades a PASS when uniform canopy degradation is detected below the cover threshold. Tree-crop (agroforestry) caveat printed on cocoa/coffee/palm/rubber reports. |
| v1.4 | Planned | Seasonal median compositing of baseline and current scenes. Validation against JRC Tropical Moist Forests reference data. Published agreement rates. |
13. Contact
For questions about this methodology, data requests, or to report an issue:
Prosper Washaya, PhD Remote Sensing in Forestry
Email: prosper@geotown.io
Web: geotown.io/eudr