NDVI — Vegetation density
Normalised red and near-infrared contrast gives a first view of canopy density and broad vegetation vigour.
View on terrain ↑Pan to an agricultural area, zoom to field scale, and select Load indices. No boundary registration is required. Seven Sentinel-2 indices render as surfaces above satellite imagery fitted to the current map bounds. Switch indices with the camera and imagery held in place, or orbit the surface to inspect it from another angle. After live analysis, Scene RGB displays the lower-resolution Sentinel image from the same acquisition date. Terrain displays contours.
Run analysis to view
Normalised red and near-infrared contrast gives a first view of canopy density and broad vegetation vigour.
View on terrain ↑The red-edge band remains sensitive in dense canopy where NDVI can saturate, revealing chlorophyll and nitrogen-related patterns.
View on terrain ↑Visible and near-infrared contrasts highlight drainage, inundation, and surface water.
View on terrain ↑Near-infrared and short-wave infrared response indicate canopy hydration and patterns of moisture stress.
View on terrain ↑Reduced atmospheric and soil-background effects make EVI useful in dense vegetation or haze, where NDVI becomes less stable.
View on terrain ↑Compensates for exposed soil brightness in sparse canopy, early growth, dry fields, and mixed bare-soil scenes.
View on terrain ↑The near-infrared to red-edge ratio indicates chlorophyll variation, helping reveal nutrition and canopy patterns within a field.
View on terrain ↑The live path is Sentinel-2 L2A imagery -> Cloudflare Worker -> encoded index rasters -> browser value grids -> Three.js terrain geometry. The browser sends viewport bounds, date, and an adaptive grid size to the Worker. At field scale, up to and including 10 ha (0.1 km²), the Explorer requests a 512 × 512 grid; larger allowed viewports up to 200 ha use 256 × 256.
The Worker returns seven spectral indices as base64-encoded PNGs, plus scene metadata. Base64 is only a text wrapper and PNG compression is lossless; the intentional precision limit is the one-byte channel used to transport each index value. For NDVI, which is encoded across -1 to +1, that means about 0.0078 index units per step. A representative 10 ha request is roughly 0.3 MB over the wire, mostly the encoded PNG rasters.
The PNGs are not used as surface textures. The Explorer decodes each image into a numeric grid, maps
each grid cell to a vertex height and colour, and builds a Three.js BufferGeometry mesh.
At 10 ha the display grid is denser than Sentinel-2's native 10-20 m bands, so neighbouring
vertices should be read as resampled display points rather than independent source observations.
The base context defaults to sharper MapTiler imagery for orientation, while Scene RGB uses the same
Sentinel acquisition as the index grids when the live response includes it.
If the live path is unavailable, a procedural fixture keeps the interaction working with synthetic values.
The fallback does not contain real crop observations.