=== versions === python 3.12.0 | odc-stac 0.5.3 | xarray 2026.9.0 | dask 2026.8.0 | pystac-client 0.9.0 | planetary-computer 1.0.0 | numpy 2.5.4 | pandas 3.0.6 === CROME 2023 hexagons === 4859 hexagons of 0.42 ha; median classification probability 0.61 LUCODE AC66 Winter wheat 1750 AC17 Maize 897 AC03 Sugar beet 542 AC44 Potato 387 PG01 Grass 286 FA01 229 AC01 121 AC67 117 WO12 106 LG20 104 median probability by crop: {'Sugar beet': 0.68, 'Maize': 0.37, 'Potato': 0.74, 'Winter wheat': 0.95, 'Grass': 0.26} === crop blocks (fields) used for time series === count sum median crop Grass 4 38.5 10.8 Maize 14 236.2 5.7 Potato 13 85.5 4.7 Sugar beet 14 148.4 7.5 Winter wheat 12 637.2 23.6 === STAC search === 396 Sentinel-2 L2A scenes of tile 31UCU with < 80% cloud, 03 Jan 2021 to 31 Dec 2025 {2021: 75, 2022: 81, 2023: 73, 2024: 63, 2025: 104} === lazy datacube === Size: 772MB Dimensions: (y: 460, x: 424, time: 396) Coordinates: * y (y) float64 4kB 5.824e+06 5.824e+06 ... 5.82e+06 5.82e+06 * x (x) float64 3kB 3.235e+05 3.235e+05 ... 3.277e+05 3.277e+05 * time (time) datetime64[us] 3kB 2021-01-03 2021-01-06 ... 2025-12-31 spatial_ref int32 4B 32631 Data variables: B02 (time, y, x) uint16 154MB dask.array B03 (time, y, x) uint16 154MB dask.array B04 (time, y, x) uint16 154MB dask.array B08 (time, y, x) uint16 154MB dask.array SCL (time, y, x) uint16 154MB dask.array 0.77 GB if loaded in full, in 396 chunks per band read SCL for 396 dates in 4 s === clear-sky fraction per scene === 245 of 396 dates have at least 20% clear pixels share of usable scenes by month (%): {1: 66, 2: 58, 3: 61, 4: 59, 5: 50, 6: 63, 7: 59, 8: 68, 9: 55, 10: 61, 11: 74, 12: 65} lazy NDVI: float32, {'time': 245, 'y': 460, 'x': 424}, 245 chunks computed NDVI for 245 dates in 14 s === NDVI cube === {'time': 245, 'y': 460, 'x': 424}, 67.4% of pixel-dates clear NDVI percentiles 5/50/95: [0.189 0.559 0.898] === monthly median composites === 60 months; 47 have NDVI for at least 95% of pixels, 1 have none Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec median NDVI 0.44 0.42 0.49 0.54 0.69 0.73 0.74 0.63 0.55 0.43 0.51 0.41 clear obs/pixel 3 3 2 1 3 4 2 3 2 3 4 1 cover % 100 100 100 87 100 100 100 99 100 100 100 91 === per-field time series === 8159 field-dates for 57 fields; median 144 clear observations per field over five years date 2021 2022 2023 2024 2025 crop Grass 93 104 105 91 196 Maize 300 348 364 317 664 Potato 299 336 360 303 632 Sugar beet 280 359 359 322 666 Winter wheat 261 274 314 250 562 === 2023 phenology by crop (median of fields) === fields green_up peak peak_ndvi senescence crop Winter wheat 12 25 Feb 16 May 0.87 20 Jul Grass 4 01 Apr 15 Jun 0.80 16 Aug Potato 13 10 Jun 15 Jul 0.91 23 Sep Sugar beet 14 05 Jun 15 Jul 0.91 28 Oct Maize 14 25 Jun 26 Aug 0.83 15 Oct === figures === true-colour date 10 Jun 2023, 100% clear most typical field per crop: {'Winter wheat': 47, 'Sugar beet': 34, 'Potato': 21, 'Maize': 10} wrote 6 figures, ndvi_2023.gif (12 frames) and the CSV and NetCDF files