Changelog — Skopje summer surface heat map
What changed in the Skopje interactive map you are viewing. Open this panel from the header Changelog button; this text is copied into the HTML when the file is exported from the repository.
Format follows Keep a Changelog (see keepachangelog.com). Dates refer to May 2026 work batches.
[Unreleased]
- Census on municipalities (2021): Population, households, dwellings, and age bands (0–14, 15–64, 65+) as opština choropleths and heat-exposure style indices. In the layer control, open Census 2021 — Age (Skopje) for the age layers first, then Census 2021 — Skopje (opštini) for the rest. Popups list the fields baked into the export.
- 2019 heat-island study raster: The city GIS portal “С” map image ships next to this file under toplotni-ostrovi/ and appears as Skopje GIS — Heat islands raster (C) — 2019 Study. It is meant to sit above the default Landsat LST tiles when both are on; use Overlay opacity and draw order in the legend to fine-tune stacking or transparency.
- Sharing this map: The page head includes Open Graph and Twitter Card tags for link previews. Before you publish on a subdomain, set the canonical site URL and preview image in map.py so social crawlers get correct og:url and og:image values.
- Layer control: The layers button stays in the upper-right area of the screen so it is easy to reach on phones and laptops.
[0.2.1] — 2026-05-14
Changed
- How census reads on the map: Age structure is shown on opština polygons (shares and estimated counts where applicable), with tooltips and popups — not as centroid bubble maps.
- Colours: Population exposure uses a clear blue ramp; age-band layers use ramps so differences are visible at city scale, including 15–64 as both share and estimated population.
- Defaults: Land Surface Temperature (Tiles) turns on automatically when tiles/lst/ sits next to this HTML. ECOSTRESS, Census 2021, municipality outlines, and Toplotni ostrovi layers start off — turn them on in the layer control when you need them.
- Legend overlay sliders: When an overlay is active, the legend can show opacity and draw order so overlapping rasters and polygons stay readable.
Notes
- Publishing: Ship this HTML together with folders tiles/ (LST, and ECOSTRESS if you built it) and toplotni-ostrovi/ beside it, with the same relative paths as in outputs/ after a local build. Missing folders mean missing layers in the browser.
- Refreshing this text: Edit CHANGELOG.md in the repo, then rebuild the map (python app.py --city Skopje --map-only, optionally with --no-street-ranking for speed). The Changelog button only updates after a new export.
[0.2.0] — 2026-05-13
Added
- Changelog in the map: This file is converted to simple HTML and shown from the header so colleagues see release notes without leaving the page.
- Layer picker offline: Grouped layer control assets are inlined so the map works on static hosting without a Leaflet CDN.
- Repo hygiene: Indexing ignores for large local data/ trees so editors stay responsive.
Changed
- Layer list UX: The expanded layer panel scrolls more comfortably when many overlays are listed.
- LST tiles pipeline: GDAL XYZ generation for bundled tiles/lst/ was tightened for smoother static deploys.
- Dependencies: requirements.txt updated for the pipeline and map stack.
Experimental (off by default)
- Kernel-style heat surface (developer builds only): a soft surface from sampled points for inspection — not a second official census layer.
[0.1.3] — 2026-05-11
Added
- Optional reference overlays: Extra municipal context layers (transit, amenities, water, cycling, etc.) where configured, fetched from public FeatureServer endpoints and wired through the shared map code.
[0.1.2] — 2026-05-11
Changed
- Documentation: ECOSTRESS / AppEEARS offline workflow (inventory, masking, composite, XYZ) and when optional composite layers appear on the map.
[0.1.1] — 2026-05-11
Changed
- Documentation: CLI entrypoints, outputs layout, and static tile workflow for running the pipeline locally.
[0.1.0] — 2026-05-11
First consolidated pass: summer UHI sampling, static LST tiling, ECOSTRESS tooling, and a richer Folium layer stack for integrated map exports.
Added
- Optional deep-dive mode in the codebase: extra indices, summaries, and artifacts under outputs/ when enabled via CLI flags (config.py, app.py).
- ECOSTRESS scripts under scripts/: inventory, scene quality, selection, GDAL XYZ tiles, optional map layer when metadata.json exists.
- Landsat LST XYZ script (generate_lst_xyz_tiles.py): bake rasters for static hosting (large files stay out of git).
- Boundary helpers in scripts/: download official polygons via ArcGIS REST when configured.
- clustering.py: k-means zones used in plots and the map.
Changed
- Core modules (gee.py, sampling.py, spatial.py, pipeline.py, map.py, utils.py, eda.py, ml.py, app.py, config.py): sampling, Getis-Ord Gi*, optional street pilot hooks, ML + SHAP, configuration, legends, and layer guide plumbing.
- requirements.txt, .gitignore: tooling and local artifact paths.
Project scope (this map)
- Skopje: Summer LST (Landsat), optional ECOSTRESS composite tiles, City of Skopje GIS municipality outlines, archived Toplotni ostrovi 2019 raster when packaged, and Census 2021 choropleths on opština polygons (skopje_census_layers.py).
---
Older remote history (2025) is mostly template and infrastructure merges; entries from May 2026 onward describe the Skopje map you are shipping today.