=== versions === python 3.12.0 | odc-stac 0.5.3 | pystac-client 0.9.0 | rasterio 1.5.2 | geopandas 1.2.0 | overturemaps 1.0.2 | numpy 2.5.2 === area of interest === nottingham: 3072 x 3072 pixels of 10 m (30.72 km square) in EPSG:32630; lon/lat bounds (-1.384, 52.813, -0.915, 53.096) === Sentinel-2 search === 19 L2A items with < 40% cloud, May to August 2021, tiles ['30UWD', '30UXD'] 11 acquisition dates; 10 are at least 20% clear: 31 May, 05 Jun, 08 Jun, 13 Jun, 15 Jun, 23 Jun, 18 Jul, 20 Jul, 04 Aug, 12 Aug pixels never clear, filled from the unmasked median: 0.37% median composite written in 107 s; clear views per pixel: min 0, median 8, max 10 === composite === s2_nottingham_2021.tif: 12 bands, 226 MB in memory, pixels with no data: 0.000% === ESA WorldCover 2021 (v200) === Tree cover 22.9% | Grassland 29.7% | Cropland 30.7% | Built-up 15.2% | Bare 0.2% | Water 1.3% | Wetland 0.0% downloaded 439,266 footprints in 12 s === Overture Maps buildings (latest release 2026-09-23.1) === 439,266 footprints; by source: OpenStreetMap 85.7%, Microsoft ML Buildings 14.3% pixels touched by a building: 11.2%; at least half covered: 3.9% === fused label raster === Building 3.9% Other built-up 12.3% Trees 22.3% Grass and crops 60.3% Water 1.3% ignored 0.0% === chips === 576 chips of 128 x 128 pixels written; 0 dropped for > 5% missing data === spatial split === 36 blocks of 4 x 4 chips; best of 500 block shuffles: seed 415 (worst class share off by 17%) split train 416 val 80 test 80 test chips touching a training chip: random split 100%, block split 55% a one-chip buffer would remove 108 of 416 training chips === class balance (% of labelled pixels) === Building Other built-up Trees Grass and crops Water split train 3.8 12.2 21.5 61.1 1.3 val 4.3 12.4 22.3 59.9 1.1 test 4.0 12.3 26.0 56.2 1.5 all chips 3.9 12.3 22.3 60.3 1.3 loss weights, 1 / sqrt(frequency) scaled to mean 1: Building 1.26, Other built-up 0.71, Trees 0.53, Grass and crops 0.32, Water 2.18 saved data/chips/chips.gpkg with columns ['chip_id', 'row', 'col', 'Building', 'Other built-up', 'Trees', 'Grass and crops', 'Water', 'block', 'split'] === TorchGeo 0.10.1 === RandomGeoSampler batch: image (8, 12, 128, 128) torch.float32, mask (8, 128, 128) torch.int64 figures written to output/