Veebirakendus.md 4.0 KB

Veebirakendus (Liiklusatlas)

Eesmärk

Interaktiivne kaardirakendus, mis kuvab analüüsi tulemusi omavalitsustele (KOV) — müügidemo ja edaspidi iseteenindustööriist.

Tehnoloogia

  • Tagala: FastAPI (Python), serveerib GeoJSON-e ja PDF-raportit
  • Esitlus: MapLibre GL (JS) + OpenStreetMap taustakaart
  • Raport: reportlab (A4 PDF)

Funktsionaalsus

  • Valla valija (dropdown, 79 KOV-i; valmis vallad aktiivsed, teised "tulekul")
  • Avalik/kaistud: Valga avalik; Otepää/Võru/Tõrva (kaitstud), lukus — Demo-kood sidebar-is avab need (token localStorage-s)
  • Kihid sisse/välja: riigiteed, kohalikud teed, liiklus (AKÖL/kaudne), väljapääsupunktid, rühmad, katastriüksused, teede omandivärv
  • Hüpikaknad (popup) kihi atribuutidega
  • Legend ja KOV-sõbralikud selgitused
  • PDF-raport allalaadimine valitud vallale
  • Referentsileht /tutvustus (4 demo valda, Valga avalik, teised 🔒)

API

Endpoint Kirjeldus
GET / kaart
GET /tutvustus referentsileht
GET /api/municipalities 79 KOV-i + staatus + access (public/protected) + kihid
GET /api/maps/{vald} valla kihtide nimekiri
GET /api/maps/{vald}/{layer} GeoJSON kiht (kaitstud vald → vajab koodi)
GET /api/report.pdf?vald={vald} PDF-raport (kaitstud vald → vajab koodi)
GET /api/offer.pdf hinnapakkumine
GET /health tervisekontroll

Demo-kood: ?token= või X-Access-Token päis. Keskkonnamuutuja ATLAS_ACCESS_TOKEN.

Kaardikihid (GeoJSON)

  • boundary — valla piir
  • major_roads — riigiteed (värvitud klassi järgi + liikluse AKÖL overlay)
  • local_roads — kohalikud teed (ühtne klassivärv + liikluse overlay)
  • exit_points — väljapääsupunktid (suurus = trips, värv = haavatavus)
  • local_groups — kohalike teede rühmad
  • katastriuksused — katastriüksused (omandipõhine värv)

local_roads atribuudid

Atribuut Tähendus
group kohalike teede rühm (VAL/OTE/TOR/VOR)
exit parim väljapääs (gravity)
trips, trips_ads, trips_per_km päeva sõidud (kaudne + ADS)
omand, omand_kat omand (teeregister + kataster)
kasutus teekasutusleping (avalik/metsatee/mitteavalik)
is_deadend tupiktee (otspunkti aste = 1)
is_exit väljapääsu lõik (otspunkt riigiteel)
trip_length_m reisi pikkus väljapääsuni (BFS-puu ahel)
trip_kasutus kas reis läbib metsateed/mitteavalikku
is_agreement lepingulõike läbiv reis

Kihistuste loogika

  • Kohalikud teed: ühtne klassivärv #7c8ea0; liiklus overlay (kaudne trips)
  • Riigiteed: klassi värv; liiklus overlay (loenduse AKÖL)
  • Väljapääsupunktid: radius = trips; värv = haavatav (detour > 0 või isoleeritud + elanikud)
  • Omandivärv: eratee punane / riigitee sinine / munitsipaal roheline (katastri omand, fallback teeregister)

Arendus

PYTHONPATH=. ATLAS_ACCESS_TOKEN=<kood> .venv/bin/uvicorn liiklusatlas.server:app --port 8074 --reload

Logimine

Iga /api/maps/{vald}/{layer} ja /api/report.pdf päring logitakse data/logs/access.log (JSONL): aeg, IP (X-Forwarded-For), vald, kiht, staatus, UA, kas koodiga. Tokenit ei logita.

Vahemälu (cache)

  • Serveripoolne: kõik lehed/kihid/raportid saavad Cache-Control: no-cache, no-store, must-revalidate — brauser kontrollib iga kord uuesti, vana vahemälu ei kasutata. (Lisa: server.py NO_CACHE päised; rakendatud 2026-08.)
  • Kasutajapoolne (kui ikka vana):
    • Ctrl+F5 / Ctrl+Shift+R — sunnitud värskendamine (tabaline brauser)
    • Private/inkognito aken — alati uus
    • Chrome/Edge: DevTools (F12) → Network → märgi "Disable cache" → F5
    • Või: Chrome aadressiribale chrome://settings/clearBrowserData → "Vahemällu salvestatud pildid ja failid"

Seos

[[Liiklussageduse kaudne hindamine/04_Tehniline/Repo ja töövoog]] [[Liiklussageduse kaudne hindamine/04_Tehniline/Deploy ja infrastruktuur]]