Boundary-free monitoring

Explorer

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

Technical notes

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.