Where every layer comes from

The landscape, the parcels, the satellite series, the terrain and the drone flights are real public datasets. The scouting and spraying steps are a simulated scenario and are marked in amber wherever they appear.

Full data and honesty table

One vineyard. One season. One closed loop.

From orbit to the row, and back. A real Penedès landscape, a real 2024 season, played end to end.

—loading the season…rain vs ET0 arrives with the ERA5 file
bare soildense canopy

The landscape around Canyelles, Penedès

Tap any parcel. Every one of them has a season.

10 m satellite pixels mix vine, soil and cover crop, so this is block-level trend only. Dates where haze slipped past the cloud mask are skipped and counted above. The 2024 story is a drought, not an outbreak: the DO Penedès brought in its earliest harvest on record (Nació Digital, Wine Intelligence).

1 · Detect satellite against drone, same day

10-metre pixels from orbit. 1-centimetre pixels from the drone.

Both images are from 18 June 2024. The satellite sees the block. The drone sees the row (the published mosaic has 0.9 cm pixels).

Sentinel-2 NDVI · 10 mDrone vigour · relative
⇔

Drone tiles are being built — the satellite side is live

Real

Weakest fifth, located

—computed from the drone cell grid when it is published

Drone vigour is relative: read from the colour of the public NDVI map, which is stretched per flight. It ranks vines within the block; it is not absolute NDVI.

1 · Detect the 3D canopy twin

Every vine, as a column of its own height.

A drone surface model minus an estimated ground gives the canopy. Columns rise where the canopy is 0.5 m or taller. Rows are found from the pattern itself.

Two fingers tilt and rotate
Building the canopy twin

Measured from the canopy model

Derived Rows and gaps are detected from the canopy height model alone. A gap is a run along a row where the canopy stays under 0.5 m for more than 1.5 m. Each gap is a candidate, not ground-verified: a scout confirms or rejects it in the field.

Columns are coloured by canopy height until the 1 m drone vigour grid loads, then by relative drone vigour.

2 · Risk a disease model on public weather

Risk from the weather record, not from a guess.

Hourly 2024 weather drives two published rules: the Gubler-Thomas powdery-mildew index and the 3-10 downy-mildew rule. Model output from public weather, not field-confirmed disease.

Model

Weather and risk series are being computed from ERA5

Scout here first

Cells ranked by risk × low vigour on the selected day. Needs the drone cell grid.

  • Waiting for the drone cell grid

Gubler-Thomas: 0-100, +20 per day with 6 h or more at 21-30 °C, -10 otherwise; 0-30 low, 40-50 intermediate, 60-100 high (UC IPM). 3-10 rule: 10 °C, 10 cm shoots from an assumed budbreak date (shown on the chart), and 10 mm or more of rain in 24-48 h.

3 · Scout an offline field app

The alert reaches the phone. The phone works without signal.

Turn the phone offline, walk the route, log what you find. Entries queue on the device and sync when the signal returns. Confirmed or rejected findings become labelled ground truth for retraining.

Simulated scenarioScout points are a seeded scenario. Entries never leave this device.
9:41LTE
Vine Loop Field
Online
SIMULATED SCENARIO
Pending 0Synced 0
Entries stay in this browser's IndexedDB
Synced points drop here with a pulse, in the same tick as the phone.

Standalone app: vineloop.geolink.dev/field installs as a PWA and keeps working offline.

4 · Prescribe zones and a file the sprayer accepts

From cells to zones to litres, in the browser.

k-means runs in a Web Worker on the canopy cells. Set the base rate and the adjustment per zone, then download the prescription in the format your machine reads.

Clustering the canopy cells

Rate table

Simulated
ZoneAreaAdjustRate

—from your inputs above, not an agronomic recommendation

Published canopy-adaptive studies report 20-55% less spray volume (Gil et al. 21.9%; CARTS 20-55%). This demo computes only what you typed.

Every file name carries DEMO-SIMULATED-NOT-AGRONOMIC-ADVICE. Format-faithful structure, not field-validated.

5 · Apply the closed-loop replay

Capture, alert, spray, refill, land. Logged as it happens.

Simulated flightThe flight and spray track are a seeded scenario on the real block. No aircraft flew this route.
The spray track is being simulated
Coverage is computed from the track when it is published.

Event log

  1. ·Waiting for the simulated track

Compliance card

Simulated

Illustrative checklist, not legal advice.

6 · Re-measure the real second flight

Fly again. Compare. Close the loop.

No treatment was applied in this public dataset, so each zone should keep its place: the weak zone on 18 June is still the weak zone on 3 July. After a real application, the treated zone is the one that should climb. This is the check an operator runs after every application.

Drone vigour · 18 Jun 2024Drone vigour · 3 Jul 2024
⇔

Both drone dates are being tiled

Rank per zone

Zone ranks need both drone cell grids

Average rank of each prescription zone inside its own flight (0 = weakest vine in the block, 100 = strongest). Ranks, not values, because each flight is stretched on its own.

Grower report shareable and printable

One page the grower can keep.

The state of this page lives in the link. Copy it and the same view opens on another phone; print it and you get an A4 report.

Vigour classes on 18 June 2024

    Terciles of the 1,036 parcels by mean satellite NDVI on the hero date. Ha and parcel counts are real; the classes are a convention.

    Season, landscape median NDVI

    Scout outcomes on this device

    From the entries you logged in the field app above. Simulated scenario.

    Loop counters

    What Geolink builds

    The software layer that closes the loop.

    Map portal

    For growers and agronomists: parcels, seasons, drone flights and zones in one 3D web map that opens on a phone. White-label, on your domain.

    Offline field app

    For scouts: routes, findings, photos and notes that queue on the device and sync later. Every confirmed or rejected finding becomes labelled training data.

    Integration layer

    Prescription exports (shapefile + GeoTIFF, XAG, ISOXML), OGC and ArcGIS services, spray and compliance records, WhatsApp alerts.

    Data and honesty

    LayerStatusSourceLicenceDate
    ParcelsRealDUN-SIGPAC 2024, Generalitat de Catalunya (DARPA), via Fields of The World harmonized dataGeneralitat open data licence2024
    Satellite NDVI seriesRealCopernicus Sentinel-2 L2A via Element84 Earth SearchCopernicus / ESA openMar-Oct 2024
    Drone orthomosaics, canopy modelRealDJI Mavic 3M flights by Noumena, EU ICAERUS UC1, via Zenodo. Public research dataset, not a client.CC BY 4.018 Jun and 3 Jul 2024
    Rows, gaps, canopy columnsDerivedComputed from the canopy height model. Gaps are candidates, not ground-verified.—2024-06-18
    Terrain and slopeRealCopernicus DEM GLO-30© DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018, provided under COPERNICUS by the European Union and ESA—
    WeatherRealERA5, Copernicus Climate Change ServiceCopernicus open2024
    Disease risk lanesModelGubler-Thomas and 3-10 rules on the weather above. Not field-confirmed disease.—2024
    Zones and ratesDerived Simulatedk-means on canopy cells; rates come from the visitor's inputs——
    Scout points and findingsSimulatedSeeded scenario plus whatever the visitor logs——
    Flight and spray track, coverage, complianceSimulatedSeeded scenario on the real block——
    Basemap—Esri World Imagery (Esri, Maxar, Earthstar Geographics, and the GIS User Community)Esri terms—

    Methods

    Cloud mask. Sentinel-2 SCL classes 3, 8, 9 and 10 masked; scenes under 20% cloud; the -1000 BOA offset applied for processing baseline 04.00 and later. Dates where haze slipped through are flagged and skipped.

    Indices. NDVI = (B08 - B04) / (B08 + B04). NDRE = (B8A - B05) / (B8A + B05). Per parcel: mean, p10, p90 and valid-pixel share.

    Drone vigour. The public dataset ships NDVI as a colour picture stretched per flight. Vigour 0-1 is read from its hue (red low, green high) and averaged per 1 m canopy cell. NDVI recomputed from the separate band mosaics was rejected: those mosaics are offset by up to 2 m, and the same vines two weeks apart agreed at r 0.005. The hue index agrees at r 0.67. Low vigour is the weakest 20% of each flight.

    Canopy. CHM = DSM minus a morphological-minimum ground estimate; cells at 0.5 m or more count as vine (Burgos et al.). Gaps: runs under 0.5 m longer than 1.5 m along a row.

    Zoning. k-means (k = 2-5) on canopy cells only, seeded for repeatability, run in a Web Worker.

    Weather. Hourly ERA5 at 25 km. The cell nearest the block is half sea, which flattens the day-night swing to 5 °C, so the inland Penedès cell next to it is used (swing 10 °C). ET0 is Hargreaves, from daily minimum and maximum temperature.

    Disease rules. Gubler-Thomas powdery-mildew index (UC IPM); 3-10 downy-mildew rule with a stated assumed budbreak. The Goidanich index is left out until its lookup table is sourced.

    Run your operation on this.

    Geolink IT Engineering builds the GIS, field apps and dashboards. Your hardware stays the hero.