{
  "version": 15,
  "dates": [
    {
      "id": "lst_20260709",
      "date": "2026-07-09",
      "label": "9. 7. 2026.",
      "source": "LC09_L2SP_189029_20260709_02_T1",
      "valid_pixels": 115725,
      "strict_valid_pixels": 106023
    },
    {
      "id": "lst_20260724",
      "date": "2026-07-24",
      "label": "24. 7. 2026.",
      "source": "LC08_L2SP_190029_20260724_02_T1",
      "valid_pixels": 115855,
      "strict_valid_pixels": 106442
    },
    {
      "id": "lst_20260802",
      "date": "2026-08-02",
      "label": "2. 8. 2026.",
      "source": "LC08_L2SP_189029_20260802_02_T1",
      "valid_pixels": 115879,
      "strict_valid_pixels": 106108
    },
    {
      "id": "lst_20260810",
      "date": "2026-08-10",
      "label": "10. 8. 2026.",
      "source": "LC09_L2SP_189029_20260810_02_T1",
      "valid_pixels": 115909,
      "strict_valid_pixels": 106389
    },
    {
      "id": "lst_20260826",
      "date": "2026-08-26",
      "label": "26. 8. 2026.",
      "source": "LC09_L2SP_189029_20260826_02_T1",
      "valid_pixels": 113856,
      "strict_valid_pixels": 102185
    }
  ],
  "median_id": "median",
  "minimum_observations": 4,
  "total_dates": 5,
  "scale_C": [
    30,
    50
  ],
  "nx": 443,
  "ny": 392,
  "bounds": [
    513160.0,
    4879640.0,
    526450.0,
    4891390.0
  ],
  "locations": [
    {
      "id": "forest",
      "name": "Musapstan",
      "center_local_km": [
        2.15,
        1.55
      ],
      "radius_m": 250,
      "series": [
        {
          "median": 35.84,
          "p25": 35.61,
          "p75": 35.98,
          "valid_pixels": 218,
          "land_pixels": 218,
          "coverage": 1.0
        },
        {
          "median": 30.44,
          "p25": 30.26,
          "p75": 30.65,
          "valid_pixels": 218,
          "land_pixels": 218,
          "coverage": 1.0
        },
        {
          "median": 41.47,
          "p25": 41.22,
          "p75": 41.69,
          "valid_pixels": 218,
          "land_pixels": 218,
          "coverage": 1.0
        },
        {
          "median": 40.02,
          "p25": 39.86,
          "p75": 40.16,
          "valid_pixels": 218,
          "land_pixels": 218,
          "coverage": 1.0
        },
        {
          "median": 31.59,
          "p25": 31.51,
          "p75": 31.71,
          "valid_pixels": 218,
          "land_pixels": 218,
          "coverage": 1.0
        }
      ],
      "median": {
        "median": 35.84,
        "p25": 35.61,
        "p75": 35.98,
        "valid_pixels": 218,
        "land_pixels": 218,
        "coverage": 1.0
      },
      "ndvi": {
        "median": 0.72,
        "p25": 0.69,
        "p75": 0.74,
        "valid_pixels": 1961,
        "land_pixels": 1961,
        "coverage": 1.0
      },
      "strict_series": [
        {
          "median": 35.84,
          "p25": 35.61,
          "p75": 35.98,
          "valid_pixels": 218,
          "land_pixels": 218,
          "coverage": 1.0
        },
        {
          "median": 30.44,
          "p25": 30.26,
          "p75": 30.65,
          "valid_pixels": 218,
          "land_pixels": 218,
          "coverage": 1.0
        },
        {
          "median": 41.47,
          "p25": 41.22,
          "p75": 41.69,
          "valid_pixels": 218,
          "land_pixels": 218,
          "coverage": 1.0
        },
        {
          "median": 40.02,
          "p25": 39.86,
          "p75": 40.16,
          "valid_pixels": 218,
          "land_pixels": 218,
          "coverage": 1.0
        },
        {
          "median": 31.59,
          "p25": 31.51,
          "p75": 31.71,
          "valid_pixels": 218,
          "land_pixels": 218,
          "coverage": 1.0
        }
      ],
      "strict_median": {
        "median": 35.84,
        "p25": 35.61,
        "p75": 35.98,
        "valid_pixels": 218,
        "land_pixels": 218,
        "coverage": 1.0
      }
    },
    {
      "id": "stadium",
      "name": "Stanovi",
      "center_local_km": [
        -0.054,
        -1.1
      ],
      "radius_m": 250,
      "series": [
        {
          "median": 44.26,
          "p25": 43.98,
          "p75": 44.82,
          "valid_pixels": 222,
          "land_pixels": 222,
          "coverage": 1.0
        },
        {
          "median": 37.64,
          "p25": 37.3,
          "p75": 38.17,
          "valid_pixels": 221,
          "land_pixels": 222,
          "coverage": 0.9955
        },
        {
          "median": 44.74,
          "p25": 44.49,
          "p75": 45.12,
          "valid_pixels": 222,
          "land_pixels": 222,
          "coverage": 1.0
        },
        {
          "median": 46.28,
          "p25": 45.67,
          "p75": 46.94,
          "valid_pixels": 222,
          "land_pixels": 222,
          "coverage": 1.0
        },
        {
          "median": 38.73,
          "p25": 38.31,
          "p75": 39.25,
          "valid_pixels": 222,
          "land_pixels": 222,
          "coverage": 1.0
        }
      ],
      "median": {
        "median": 44.26,
        "p25": 43.98,
        "p75": 44.71,
        "valid_pixels": 222,
        "land_pixels": 222,
        "coverage": 1.0
      },
      "ndvi": {
        "median": 0.24,
        "p25": 0.15,
        "p75": 0.34,
        "valid_pixels": 1955,
        "land_pixels": 1955,
        "coverage": 1.0
      },
      "strict_series": [
        {
          "median": 44.26,
          "p25": 43.98,
          "p75": 44.82,
          "valid_pixels": 222,
          "land_pixels": 222,
          "coverage": 1.0
        },
        {
          "median": 37.64,
          "p25": 37.3,
          "p75": 38.17,
          "valid_pixels": 221,
          "land_pixels": 222,
          "coverage": 0.9955
        },
        {
          "median": 44.74,
          "p25": 44.49,
          "p75": 45.12,
          "valid_pixels": 222,
          "land_pixels": 222,
          "coverage": 1.0
        },
        {
          "median": 46.28,
          "p25": 45.67,
          "p75": 46.94,
          "valid_pixels": 222,
          "land_pixels": 222,
          "coverage": 1.0
        },
        {
          "median": 38.73,
          "p25": 38.31,
          "p75": 39.25,
          "valid_pixels": 222,
          "land_pixels": 222,
          "coverage": 1.0
        }
      ],
      "strict_median": {
        "median": 44.26,
        "p25": 43.98,
        "p75": 44.71,
        "valid_pixels": 222,
        "land_pixels": 222,
        "coverage": 1.0
      }
    },
    {
      "id": "city",
      "name": "Poluotok",
      "center_local_km": [
        -1.76,
        -0.94
      ],
      "radius_m": 250,
      "series": [
        {
          "median": 39.89,
          "p25": 37.83,
          "p75": 40.65,
          "valid_pixels": 183,
          "land_pixels": 190,
          "coverage": 0.9632
        },
        {
          "median": 34.49,
          "p25": 32.42,
          "p75": 35.05,
          "valid_pixels": 189,
          "land_pixels": 190,
          "coverage": 0.9947
        },
        {
          "median": 39.97,
          "p25": 37.54,
          "p75": 40.78,
          "valid_pixels": 190,
          "land_pixels": 190,
          "coverage": 1.0
        },
        {
          "median": 42.0,
          "p25": 39.62,
          "p75": 42.81,
          "valid_pixels": 188,
          "land_pixels": 190,
          "coverage": 0.9895
        },
        {
          "median": 36.16,
          "p25": 34.78,
          "p75": 36.73,
          "valid_pixels": 183,
          "land_pixels": 190,
          "coverage": 0.9632
        }
      ],
      "median": {
        "median": 39.81,
        "p25": 37.7,
        "p75": 40.6,
        "valid_pixels": 184,
        "land_pixels": 190,
        "coverage": 0.9684
      },
      "ndvi": {
        "median": 0.13,
        "p25": 0.1,
        "p75": 0.2,
        "valid_pixels": 1610,
        "land_pixels": 1610,
        "coverage": 1.0
      },
      "strict_series": [
        {
          "median": null,
          "p25": null,
          "p75": null,
          "valid_pixels": 86,
          "land_pixels": 190,
          "coverage": 0.4526
        },
        {
          "median": 34.95,
          "p25": 34.55,
          "p75": 35.16,
          "valid_pixels": 115,
          "land_pixels": 190,
          "coverage": 0.6053
        },
        {
          "median": null,
          "p25": null,
          "p75": null,
          "valid_pixels": 85,
          "land_pixels": 190,
          "coverage": 0.4474
        },
        {
          "median": null,
          "p25": null,
          "p75": null,
          "valid_pixels": 94,
          "land_pixels": 190,
          "coverage": 0.4947
        },
        {
          "median": null,
          "p25": null,
          "p75": null,
          "valid_pixels": 53,
          "land_pixels": 190,
          "coverage": 0.2789
        }
      ],
      "strict_median": {
        "median": null,
        "p25": null,
        "p75": null,
        "valid_pixels": 53,
        "land_pixels": 190,
        "coverage": 0.2789
      }
    }
  ],
  "method": {
    "inputs": "USGS Landsat 8/9 Collection 2 Level 2 Tier 1 ST; raw DN and QA freshly retrieved 2026-10-16 via public Planetary Computer. Same product family as GEE LANDSAT/LC08/C02/T1_L2 and LC09. Five selected clear summer scenes, not a representative seasonal sample.",
    "temperature": "ST_B10 * 0.00341802 + 149 - 273.15. Provider atmospheric/emissivity correction is retained. No invented temperatures, temporal fill, offset or sharpening.",
    "quality": "Reject ST fill/nonphysical range, QA_PIXEL bits 0..5, medium/high cloud or cirrus confidence, nonzero QA_RADSAT. ST_QA >5 K and ST_CDIST <300 m are retained as visible per-pixel cautions, not blanket missing-data masks. Cloud/shadow flagged pixels remain excluded.",
    "coast": "Clip display at the existing Sentinel-2 2026-08-02 classified-land mask on a 10 m grid. No 30 m setback or 95%-land disk exclusion. Cells within 100 m of classified water and QA water/land mixed cells are flagged. Coastal temperature can contain marine signal; do not infer a roof temperature. The shoreline mask is satellite classification, not surveyed coastline.",
    "strict": "Optional stricter QA requires ST_QA <=5 K, distance to cloud >=300 m, no classified water within 100 m and QA water bit clear. Its gaps are expected and explicitly reported. Strict median only shown where every contributing original observation meets this rule; never reuse mixed-QA median as strict.",
    "median": "Pixelwise median where at least 4 of 5 dates pass default QA. No temporal filling of individual date maps. Median ST_QA diagnostic is maximum source ST_QA, NOT uncertainty of median; cloud distance is minimum among contributors.",
    "comparison": "Same 250 m circles as v14; current land denominator is thermal cells overlapping the 10 m classified land mask. Historical audit separately retains the old QA land denominator. Display coverage and suppress summaries below 50%. 30 m output cells are not independent 100 m observations. Strict summaries use strict subsets; NDVI summaries unchanged.",
    "display": "48% default opacity; interpolate numeric valid neighbors before colouring; do not fill invalid source cells. 10 m mask clips thermal colour from water. Coastal flags do not alter temperature or colour opacity.",
    "interpretation": "LST is surface, not air temperature. Coastal marine mixing and cloud adjacency remain uncertainty sources. Numerical ST_QA is a provider diagnostic, not a local independent validation. Differences across dates include weather."
  },
  "quality_flags": {
    "1": "ST_CDIST <300 m",
    "2": "ST_QA >5 K",
    "4": "Within 100 m of Sentinel classified water",
    "8": "Landsat QA water flag, but footprint overlaps 10 m classified land"
  }
}
