Răsfoiți Sursa

Liiklussageduse kaudne hindamine: metoodika ja tulemuste struktuur (Valga, Otepää, Võru)

ardo 3 săptămâni în urmă
părinte
comite
27527467d2
20 a modificat fișierele cu 911 adăugiri și 0 ștergeri
  1. 36 0
      Doktoritöö/Liiklussageduse kaudne hindamine/00 Sisukord.md
  2. 22 0
      Doktoritöö/Liiklussageduse kaudne hindamine/01_Eesmärk/Uurimisküsimused.md
  3. 27 0
      Doktoritöö/Liiklussageduse kaudne hindamine/01_Eesmärk/Uuringu eesmärk.md
  4. 50 0
      Doktoritöö/Liiklussageduse kaudne hindamine/02_Metoodika/00 Metoodika ülevaade.md
  5. 52 0
      Doktoritöö/Liiklussageduse kaudne hindamine/02_Metoodika/01 Andmeallikad.md
  6. 68 0
      Doktoritöö/Liiklussageduse kaudne hindamine/02_Metoodika/02 Teedevõrgustiku moodustamine.md
  7. 74 0
      Doktoritöö/Liiklussageduse kaudne hindamine/02_Metoodika/03 Väljapääsupunktid ja teenindusalad.md
  8. 73 0
      Doktoritöö/Liiklussageduse kaudne hindamine/02_Metoodika/04 Rahvastiku jaotamine.md
  9. 78 0
      Doktoritöö/Liiklussageduse kaudne hindamine/02_Metoodika/05 Gravitatsioonimudel.md
  10. 43 0
      Doktoritöö/Liiklussageduse kaudne hindamine/02_Metoodika/06 Haavatavusanalüüs.md
  11. 36 0
      Doktoritöö/Liiklussageduse kaudne hindamine/02_Metoodika/07 Valideerimine.md
  12. 30 0
      Doktoritöö/Liiklussageduse kaudne hindamine/03_Andmed_ja_tulemused/Otepää vald.md
  13. 29 0
      Doktoritöö/Liiklussageduse kaudne hindamine/03_Andmed_ja_tulemused/Valga vald.md
  14. 31 0
      Doktoritöö/Liiklussageduse kaudne hindamine/03_Andmed_ja_tulemused/Võru vald.md
  15. 57 0
      Doktoritöö/Liiklussageduse kaudne hindamine/04_Tehniline/Deploy ja infrastruktuur.md
  16. 60 0
      Doktoritöö/Liiklussageduse kaudne hindamine/04_Tehniline/Repo ja töövoog.md
  17. 53 0
      Doktoritöö/Liiklussageduse kaudne hindamine/04_Tehniline/Veebirakendus.md
  18. 32 0
      Doktoritöö/Liiklussageduse kaudne hindamine/04_Tehniline/n8n andmekogumine.md
  19. 21 0
      Doktoritöö/Liiklussageduse kaudne hindamine/05_Artiklid/Artiklite nimekiri.md
  20. 39 0
      Doktoritöö/Liiklussageduse kaudne hindamine/06_Logid/Tehtud töö ajalugu.md

+ 36 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/00 Sisukord.md

@@ -0,0 +1,36 @@
+# Liiklussageduse kaudne hindamine — doktoritöö materjalid
+
+Uurimisteema: **kohalike teede liiklussageduse hindamine kaudsel meetodil** hõreasustuses, kasutades liikumisnõudluse modelleerimist.
+
+## Struktuur
+
+- [[Liiklussageduse kaudne hindamine/01_Eesmärk/Uuringu eesmärk]] — teaduslik eesmärk ja uurimisküsimused
+- [[Liiklussageduse kaudne hindamine/01_Eesmärk/Uurimisküsimused]] — konkreetsed küsimused
+- [[Liiklussageduse kaudne hindamine/02_Metoodika/00 Metoodika ülevaade]] — täisanalüüsi ahel
+
+### Metoodika
+- [[Liiklussageduse kaudne hindamine/02_Metoodika/01 Andmeallikad]] — avalikud andmeallikad
+- [[Liiklussageduse kaudne hindamine/02_Metoodika/02 Teedevõrgustiku moodustamine]] — OSM+OSMnx
+- [[Liiklussageduse kaudne hindamine/02_Metoodika/03 Väljapääsupunktid ja teenindusalad]] — exit points
+- [[Liiklussageduse kaudne hindamine/02_Metoodika/04 Rahvastiku jaotamine]] — WorldPop
+- [[Liiklussageduse kaudne hindamine/02_Metoodika/05 Gravitatsioonimudel]] — gravity model
+- [[Liiklussageduse kaudne hindamine/02_Metoodika/06 Haavatavusanalüüs]] — vulnerability
+- [[Liiklussageduse kaudne hindamine/02_Metoodika/07 Valideerimine]] — validate
+
+### Andmed ja tulemused
+- [[Liiklussageduse kaudne hindamine/03_Andmed_ja_tulemused/Valga vald]]
+- [[Liiklussageduse kaudne hindamine/03_Andmed_ja_tulemused/Otepää vald]]
+- [[Liiklussageduse kaudne hindamine/03_Andmed_ja_tulemused/Võru vald]]
+
+### Tehniline
+- [[Liiklussageduse kaudne hindamine/04_Tehniline/Repo ja töövoog]]
+- [[Liiklussageduse kaudne hindamine/04_Tehniline/Veebirakendus]]
+- [[Liiklussageduse kaudne hindamine/04_Tehniline/Deploy ja infrastruktuur]]
+- [[Liiklussageduse kaudne hindamine/04_Tehniline/n8n andmekogumine]]
+
+### Artiklid ja logid
+- [[Liiklussageduse kaudne hindamine/05_Artiklid/Artiklite nimekiri]]
+- [[Liiklussageduse kaudne hindamine/06_Logid/Tehtud töö ajalugu]]
+
+---
+*Alustatud: 2026-08-04*

+ 22 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/01_Eesmärk/Uurimisküsimused.md

@@ -0,0 +1,22 @@
+# Uurimisküsimused
+
+## Põhiküsimus
+
+Kuidas hinnata kohalike teede liiklussagedust hõreda asustusega piirkondades **kaudselt**, ainult avalikke andmeid kasutades?
+
+## Alaküsimused
+
+1. **Võrgustiku struktuur:** Kuidas moodustada kohalikest teedest funktsionaalne võrgustik, mille piirideks on riigimaanteed?
+2. **Liikumiste genereerimine:** Kuidas hinnata liikumiste arvu ja suunda demograafiliste (asustus) andmete põhjal?
+3. **Jaotamine:** Kuidas jaotada liikumised väljapääsupunktide vahel nii, et ei eelistata ühtegi sihtpunkti (gravitatsioonimudel)?
+4. **Koormamine:** Kuidas hinnata teelõikude koormust (liiklussagedust) jaotatud liikumiste põhjal?
+5. **Täpsus:** Kui täpsed on kaudsed hinnangud võrreldes tegelike loendustega? Milline on täpsusklasside (seisunditaseme) määratlus?
+6. **Üldistatavus:** Kui üldistatav on metoodika üle Eesti KOV-ide (erinevad geograafilised, demograafilised tingimused)?
+
+## Meetodid
+
+- Ruumiline mikrosimulatsioon (trip generation)
+- Gravitatsioonimudel (trip distribution)
+- Võrgustiku koormamine (route assignment)
+- Haavatavusanalüüs (network vulnerability)
+- Võrdlus olemasolevate loendustega (validatsioon)

+ 27 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/01_Eesmärk/Uuringu eesmärk.md

@@ -0,0 +1,27 @@
+# Uuringu eesmärk
+
+## Teaduslik eesmärk
+
+Töötada välja metoodika kohalike teede liiklussageduste hindamiseks **kaudsel meetodil** hõreda asustusega (rural) piirkondades, kasutades selleks liikumisnõudluse modelleerimist kohalike teede võrgustikel.
+
+## Põhjendus
+
+- Liiklusloendusi on hõreasustuses vähe või puuduvad üldse (kallid, harva korratavad)
+- Kohalike teede seisunditaseme määramine (hooldusprioriteedid) vajab liikluskoormuse hinnangut
+- Riigimaanteede liiklusandmed on avalikud, kuid kohalike teede kohta puudub süsteemne hinnang
+- Eesmärk: kaudne hinnang avalikest andmetest (OSM, asustus, demograafia), ilma füüsiliste loendusteta
+
+## Metoodiline tuum
+
+1. Moodustada kohalikest teedest **funktsionaalsed võrgustikud**, mille piirideks on riigimaanteed
+2. Liikumiste genereerimine **ruumilise mikrosimulatsiooni** abil, liikumiste arvud **demograafiliste andmete** kaudu
+3. Liikumiste jaotamine väljapääsupunktide (riigiteede lõikepunktide) vahel sarnaselt **jõgikonna vee liikumisele** (gravitatsioon/gravitation model, ilma sihtpunkti eelistuseta)
+4. Leitud marsruutide abil **võrgustiku koormamine** → liiklussageduste hinnang tee seisunditaseme määramiseks kohalike teede ja riigiteede lõikumispunktides
+
+## Seos üldise doktoritööga
+
+Eesmärgi alusel koostatakse AI agendiga ([[Liiklussageduse kaudne hindamine/02_Metoodika/00 Metoodika ülevaade]]) kontekstid, tehakse veebiotsinguid ja salvestatakse tulemused struktureeritult.
+
+## Seos olemasolevate artiklitega
+
+- [[Liiklussageduse kaudne hindamine/05_Artiklid/Artiklite nimekiri]] — olemasolevad Valga-teemalised artiklid (kinnisvarateede juurdepääsetavus), mida saab laiendada liiklussageduse suunas

+ 50 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/02_Metoodika/00 Metoodika ülevaade.md

@@ -0,0 +1,50 @@
+# Metoodika ülevaade
+
+Täisanalüüsi ahel ühele omavalitsusele. Käivitatakse `liiklusatlas/pipeline/run_municipality.py <vall_id>`.
+
+## Analüüsiahel (4 etappi)
+
+| # | Skript | Sisu | Väljund |
+|---|--------|------|---------|
+| 1 | `valga_analysis.py` | Võrgustiku struktuur, teenindusalad, haavatavus, betweenness | `{prefix}_refined.png`, statistika |
+| 2 | `valga_population_analysis.py` | WorldPop rahvastiku sidumine teede sõlmedega, trip generation, kriitilised lõigud | `{prefix}_pop_*.csv`, `{prefix}_*.png` |
+| 3 | `gravity_exit_analysis.py` | Gravitatsioonipõhine väljapääsupunktide jaotus | `{prefix}_gravity_*.csv` |
+| 4 | `export_qgis.py` | Tulemuste eksport GeoPackage'i | `{prefix}_qgis.gpkg` |
+
+## Andmevoog
+
+```
+OSM (OpenStreetMap) ──► OSMnx võrgustik (EPSG:3301)
+                              │
+WorldPop 100m raster ────────┤ rahvastiku sidumine teede sõlmedega
+                              │
+                  Väljapääsupunktid (kohalik ∩ riigitee)
+                              │
+                  Gravitatsioonimudel → koormamine
+                              │
+                  GeoPackage → veebiatlas (MapLibre) + PDF-raport
+```
+
+## Väljund failid (eesliide `{prefix}`, nt `valga`, `otepaa`, `voru`)
+
+- `{prefix}_refined.png` — võrgustiku ülevaatekaart (4 paneeli)
+- `{prefix}_pop_analysis.png` — rahvastiku jaotuskaart
+- `{prefix}_pop_critical_edges.png` — kriitilised teelõigud
+- `{prefix}_pop_secondary_critical.png` — teisejärgulised kriitilised
+- `{prefix}_catchment.csv` — väljapääsupunktide teenindusalad
+- `{prefix}_pop_vulnerability.csv` — rahvastikupõhine haavatavus
+- `{prefix}_critical_edges.csv` — kriitilised lõigud (tabel)
+- `{prefix}_sparse_*.csv` — hõreda asustusega alad
+- `{prefix}_gravity_node_exits.csv` — sõlmede gravitatsioonijaotus
+- `{prefix}_gravity_segment_exits.csv` — lõikude gravitatsioonijaotus
+- `{prefix}_qgis.gpkg` — GeoPackage (boundary, major_roads, local_roads, exit_points, local_groups)
+
+## Teostatud vallad
+
+- [[Liiklussageduse kaudne hindamine/03_Andmed_ja_tulemused/Valga vald]] (2026)
+- [[Liiklussageduse kaudne hindamine/03_Andmed_ja_tulemused/Otepää vald]] (2026)
+- [[Liiklussageduse kaudne hindamine/03_Andmed_ja_tulemused/Võru vald]] (2026)
+
+## Tehniline juhend
+
+[[Liiklussageduse kaudne hindamine/04_Tehniline/Repo ja töövoog]]

+ 52 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/02_Metoodika/01 Andmeallikad.md

@@ -0,0 +1,52 @@
+# Andmeallikad
+
+Kõik andmed on **avalikud ja tasuta** — see on metoodika oluline eelis (kaudne hindamine ilma kallite loendusteta).
+
+## 1. OpenStreetMap (OSM)
+
+- **Allikas:** `https://www.openstreetmap.org` (OSMnx kaudu)
+- **Kasutus:** teedevõrgustik, valla piirid
+- **Võrgustiku filter:** `CUSTOM_FILTER` — sõidukiteed + kohalikud teed + service + track:
+  ```
+  ["highway"]["area"!~"yes"]["highway"!~"cycleway|footway|path|pedestrian|steps|corridor|..."]
+  ["motor_vehicle"!~"no"]
+  ```
+- **Kraam:** `osmnx.graph_from_polygon(boundary, custom_filter)`
+- **CRS:** EPSG:3301 (Eesti riiklik koordinaatsüsteem)
+- **Cache:** `liiklussagedus/cache/` — OSMnx vahemälu (vältida korduvat allalaadimist)
+
+### Teede klassifikatsioon
+
+| Klass | highway-tagid |
+|-------|---------------|
+| Riigiteed (major) | `trunk`, `trunk_link`, `primary`, `secondary`, `tertiary` (+ _link) |
+| Kohalikud teed (local) | `residential`, `unclassified`, `service`, `track`, `living_street` |
+
+### Väljapääsupunktid
+
+`exit_nodes = local_nodes ∩ major_nodes` — kohaliku võrgustiku sõlmed, mis on ühtlasi riigiteede sõlmed. Need on piirid, kus kohalik liiklus "voolab" riigimaanteele.
+
+## 2. WorldPop (rahvastik)
+
+- **Allikas:** `https://data.worldpop.org/GIS/Population/Global_2000_2020/2020/EST/est_ppp_2020.tif`
+- **Formaat:** 100 m ruumiline raster, rahvaarv ruudustiku kohta
+- **Kasutus:** igale teede sõlmele lähima rahvastiku määramine
+- **Cache:** `liiklussagedus/data/est_ppp_2020.tif` (~47 MB)
+- **Filtreerimine:** hõreda asustusega alad `< 10 inimest/km²` (`SPARSE_THRESHOLD`)
+
+## 3. Transpordiamet / riiklikud registrid (tulevik)
+
+- Riigimaanteede liiklusloendused — avalikud (maanteede registri liiklusandmed)
+- Maanteeandmed, teekatte klassid — teeregister
+- **Seos:** kohalike teede hinnang tuleb siduda riigiteede loendustega validatsiooniks
+
+## 4. Maa-amet (tulevik)
+
+- Katastriüksused, aadressandmed, hooned — juurdepääsetavuse analüüsi jaoks
+- (Kasutatud olemasolevas Valga juurdepääsetavuse artiklis)
+
+## Andmete kvaliteedimärkused
+
+- OSM-i hõlmatus on maapiirkondades Eestis hea, kuid hoonete/teede attribuudid võivad erineda
+- WorldPop on modelleeritud rahvastik — mitte täpne loendus; see on metoodika üks peamisi täpsuspiiranguid
+- Valla piirid OSM-ist vajavad kontrolli (halduspiirid vs OSM-i admin boundary)

+ 68 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/02_Metoodika/02 Teedevõrgustiku moodustamine.md

@@ -0,0 +1,68 @@
+# Teedevõrgustiku moodustamine
+
+## Eesmärk
+
+Moodustada kohalikest teedest funktsionaalne võrgustik, mille piirideks on riigimaanteed.
+
+## Sammud
+
+### 1. Piirkonna piiri laadimine
+
+```python
+boundary = ox.geocode_to_gdf(PLACE)   # "Valga vald, Estonia"
+```
+
+OSMnx geokodeerib valla nime ja laeb halduspiiri (EPSG:4326).
+
+### 2. Teedevõrgustiku laadimine
+
+```python
+G = ox.graph_from_polygon(boundary.geometry.iloc[0], custom_filter=CUSTOM_FILTER)
+G_proj = ox.project_graph(G, to_crs=CRS)   # EPSG:3301
+```
+
+**Filtri loogika:** võetakse kõik `highway` teed, välja arvatud jalgratta-/jalgteed jne (`CUSTOM_FILTER`). Oluline: **lisatakse ka `service` ja `track`**, mis on maapiirkondades olulised kohalikud teed (OSMnx vaikimisi `drive` filter jätaks need välja).
+
+### 3. Teede klassifitseerimine
+
+Iga serva `highway` tag alusel:
+
+| Klass | Tagid | Roll |
+|-------|-------|------|
+| Riigiteed (`major_edges`) | trunk, primary, secondary, tertiary (+_link) | Piirid/väljapääsud, kiire ühendus |
+| Kohalikud teed (`local_edges`) | residential, unclassified, service, track, living_street | Teenindusvõrgustik |
+| Muud | ülejäänud | Filtreeritud välja |
+
+### 4. Väljapääsupunktid
+
+```python
+exit_nodes = local_nodes.intersection(major_nodes)
+```
+
+Sõlmed, mis kuuluvad **mõlemasse** klassi — kohaliku tee ja riigitee liitumispunktid. Need on kohaliku võrgustiku "uksed" riigimaanteele.
+
+### 5. Suurim ühendatud komponent
+
+```python
+local_ug = local_G.to_undirected()
+components = list(nx.connected_components(local_ug))
+largest_cc = max(components, key=len)
+```
+
+Kohalikest teedest moodustub palju eraldiseisvaid komponente (teed, mis ei ühendu teistega). Analüüs keskendub **suurimale komponendile**, kuhu jäävad enamik väljapääsupunkte.
+
+### 6. Kaalutud graaf
+
+`local_main` — suurima komponendi alusgraaf serva kaaluga `length` (meetrites), geomeetriaga (LineString).
+
+## Väljundid
+
+- `local_edges`, `major_edges` — klassifitseeritud servad
+- `exit_nodes` / `main_exits` — väljapääsupunktid (kogu / põhikomponendis)
+- `local_main` — kaalutud kohaliku võrgustiku graaf
+- `service_df` — teenindusalade statistika (vt [[Liiklussageduse kaudne hindamine/02_Metoodika/03 Väljapääsupunktid ja teenindusalad]])
+
+## Märkused
+
+- Võrgustiku suurus varieerub valliti (Valga: ~6k sõlme, Otepää: ~4.2k, Võru: ~7k)
+- Eraldi komponentide arv on suur (Otepääl 771) — need on teed, mis ei ole ühendatud peamise võrgustikuga

+ 74 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/02_Metoodika/03 Väljapääsupunktid ja teenindusalad.md

@@ -0,0 +1,74 @@
+# Väljapääsupunktid ja teenindusalad
+
+## Eesmärk
+
+Jagada kohalik võrgustik teenindusaladeks (service areas) ümber iga väljapääsupunkti: igale teede sõlmele leitakse **lähim** väljapääsupunkt (võrgustiku kauguse järgi).
+
+## Meetod
+
+### Multi-source Dijkstra
+
+```python
+lengths, paths = nx.multi_source_dijkstra(ug_main, list(main_exits), weight="length")
+```
+
+Käivitatakse Dijkstra **üheaegselt kõikidest väljapääsupunktidest** (multi-source). Iga sõlm saab kauguse lähima väljapääsupunktini ja tee (path) sinnani.
+
+### Väljapääsupunkti omistamine
+
+```python
+origin_exit = path[0]   # tee esimene sõlm = väljapääsupunkt
+exit_of[node] = origin_exit
+```
+
+Iga sõlm kuulub selle väljapääsupunkti teenindusalasse, milleni tee kõige lühem on.
+
+### Teenindusala statistika
+
+Iga väljapääsupunkti jaoks arvutatakse:
+- `nodes_served` — teenindatavate sõlmede arv
+- `avg_distance_m` — keskmine kaugus sõlmedest väljapääsupunktini
+- `total_distance_m` — kauguste summa
+
+```python
+service_df = pd.DataFrame(service_data).sort_values("nodes_served", ascending=False)
+```
+
+## Haavatavusanalüüs (väljapääsupunkti eemaldamine)
+
+Eraldi protseduur: eemaldatakse üks väljapääsupunkt korraga (top 30 suurima teenindusalaga) ja arvutatakse uuesti kaugused ülejäänud väljapääsupunktidest:
+
+```python
+new_lengths, _ = nx.multi_source_dijkstra(ug_main, remaining_exits, weight="length")
+detours = []   # suhe ja absoluutne suurenemine
+ratio = new_dist / old_dist
+increase = new_dist - old_dist
+```
+
+Tulemus: iga väljapääsupunkti "kriitilisus" — kui suur ümbersõit tekib selle sulgumisel.
+
+### Väljundi veerud
+
+- `exit_node`, `nodes_served`
+- `mean_detour_ratio`, `max_detour_ratio`
+- `mean_detour_m`, `max_detour_m` — keskmine/maksimaalne ümbersõidu pikkus meetrites
+- `pct_severe_detour` — % sõlmedest, kus ümbersõit > 2×
+
+## Betweenness (liikluse kaudne näitaja)
+
+```python
+bc = nx.betweenness_centrality(full_ug, k=100, weight="length", seed=42)
+edge_bc = nx.edge_betweenness_centrality(full_ug, k=100, weight="length", seed=42)
+```
+
+Betweenness mõõdab, kui palju lühemaid teid läbib antud sõlme/serva — kaudne liikluskoormuse näitaja.
+
+## Väljundid
+
+- `service_df` — teenindusalade statistika (sort nodes_served järgi)
+- `vuln_df` — haavatavuse tabel (sort mean_detour_m järgi)
+- Kaardipaneelid: teenindusalad värviliselt, haavatavuse graafik
+
+## Seos
+
+- Rahvastiku jaotus kasutab sama teenindusala jaotust: [[Liiklussageduse kaudne hindamine/02_Metoodika/04 Rahvastiku jaotamine]]

+ 73 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/02_Metoodika/04 Rahvastiku jaotamine.md

@@ -0,0 +1,73 @@
+# Rahvastiku jaotamine (WorldPop)
+
+## Eesmärk
+
+Määrata igale teede sõlmele "rahvastikukoormus" — kui palju inimesi elab selle sõlme läheduses. See on liikumiste genereerimise (trip generation) aluseks.
+
+## Andmeallikas
+
+**WorldPop** 100 m rahvastikuruudustik:
+```
+https://data.worldpop.org/GIS/Population/Global_2000_2020/2020/EST/est_ppp_2020.tif
+```
+Iga 100 m × 100 m ruudustiku lahtris on hinnanguline rahvaarv. Cache: `liiklussagedus/data/est_ppp_2020.tif`.
+
+## Meetod
+
+### 1. Rasteri kärpimine valla piirile
+
+```python
+with rasterio.open(POP_TIF) as src:
+    pop_clipped, pop_transform = mask(src, geom, crop=True, nodata=-99999)
+```
+
+Raster lõigatakse valla piiriga (`rasterio.mask`), et töötada ainult piirkonna andmetega.
+
+### 2. Teede sõlmede kaugus rasterist
+
+Iga sõlme kohta määratakse lähedal asuv rahvastik (100 m raadiuses) kas:
+- puhvri abil (`geometry_mask` vms), või
+- lähima lahtri väärtusena
+
+### 3. Rahvastiku liitmine väljapääsupunkti teenindusalale
+
+Kasutades teenindusala jaotust ([[Liiklussageduse kaudne hindamine/02_Metoodika/03 Väljapääsupunktid ja teenindusalad]]), summeeritakse iga väljapääsupunkti teenindusala rahvastik:
+
+```python
+catchment_df   # exit_node, population_catchment, nodes_served, ...
+```
+
+### 4. Trippide genereerimine (trip generation)
+
+```python
+TRIPS_PER_PERSON = 2.0
+daily_trips_to_exit = population_catchment * TRIPS_PER_PERSON
+```
+
+Iga inimene teeb eeldatavalt 2 päevast liikumist (kodust välja + tagasi) → päevane trippide arv väljapääsupunkti.
+
+### 5. Hõreda asustuse analüüs
+
+```python
+SPARSE_THRESHOLD = 10  # inimest/km²
+```
+
+Piirkonnad alla tihedusläve määratletakse "hõreda asustusega" (`sparse_*` väljundid) — nendes on liiklusnõudlus minimaalne.
+
+## Väljundid
+
+- `{prefix}_catchment.csv` — `exit_node, population_catchment, nodes_served, avg_distance_m, daily_trips_to_exit, edge_length_km, trips_per_km`
+- `{prefix}_pop_vulnerability.csv` — rahvastikupõhine haavatavus (ümbersõit, inim-km detour)
+- `{prefix}_critical_edges.csv` — kriitilised lõigud (`trapped_nodes`, `trapped_population`)
+- `{prefix}_sparse_*.csv` — hõreda asustusega alad
+- PNG-kaardid: rahvastikujaotus, kriitilised lõigud
+
+## Kriitiliste lõikude tuvastamine
+
+Lõigud, mille eemaldamisel jäävad sõlmed (ja rahvastik) ilma ühenduseta väljapääsupunktini — "bridge" analüüs + teisejärgulised (suur ümbersõit).
+
+## Täpsuspiirangud
+
+- WorldPop on **modelleeritud** rahvastik, mitte loendus — võib erineda tegelikust kuni märkimisväärselt väikestes külades
+- `TRIPS_PER_PERSON = 2.0` on lihtsustus (ei arvesta kaubavedu, läbisõitu, turismi)
+- Need on metoodika peamised täpsusallikad

+ 78 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/02_Metoodika/05 Gravitatsioonimudel.md

@@ -0,0 +1,78 @@
+# Gravitatsioonimudel (trip distribution)
+
+## Eesmärk
+
+Jaotada liikumised väljapääsupunktide vahel nii, et **ühtegi sihtpunkti ei eelistata a priori** — sarnaselt jõgikonna vee liikumisele. See on gravitatsioonimudeli (gravity model) põhiolemus.
+
+## Kontseptsioon
+
+Klassikalises gravitatsioonimudelis on kahe piirkonna vaheline liikumine võrdeline nende "masside" (rahvastiku) korrutisega ja pöördvõrdeline kauguse/kulu astmega:
+
+```
+T_ij ∝ (P_i · P_j) / f(c_ij)
+```
+
+Selles rakenduses on igal teede sõlmel:
+- **kulupotentsiaal** lähima väljapääsupunktini (impedance)
+- **gravitatsiooniline atraktiivsus** — mida suurem väljapääsupunkti teenindatav rahvastik, seda rohkem see trippe "tõmbab"
+
+## Meetod
+
+### 1. Ühtne impedance-kaalutud graaf
+
+```python
+unified = nx.Graph()
+weight = length * impedance_factor
+```
+
+Iga tee klass on kaalutud impedantsi kordajaga (kõrgem = aeglasem/vähem eelistatud):
+
+| Tee klass | Impedants |
+|-----------|-----------|
+| motorway, trunk | 1.0 |
+| primary | 1.1 |
+| secondary | 1.3 |
+| tertiary | 1.8 |
+| residential, unclassified, service | 4.0 |
+| track | 5.0 |
+
+### 2. Gravitatsiooniline kulufunktsioon
+
+```python
+GRAVITY_ALPHA = 1000   # meetrit log-rahvastiku ühiku kohta
+adjusted_cost = path_impedance - alpha * log(population + 1)
+```
+
+Suurem teenindusala rahvastik **vähendab** efektiivset kulu (tõmbab trippe juurde):
+- linn 1000 inimesega: `alpha * ln(1001) ≈ 6.9 km` kompensatsioon
+- küla 100 inimesega: `alpha * ln(101) ≈ 4.6 km` kompensatsioon
+
+### 3. Parima väljapääsupunkti valik
+
+Iga sõlme jaoks leitakse Dijkstra'ga kulu igast väljapääsupunktist, kohandatakse gravitatsiooniga, ja parim = argmin(adjusted_cost):
+
+```python
+best_exit = argmin(adjusted_cost)  # gravitatsiooniga kohandatud
+nearest_exit = argmin(impedance)   # lihtsalt lähim (võrdluseks)
+switched = best_exit != nearest_exit
+```
+
+`switched` näitab, kus gravitatsioon muudab valikut (sõlm kuulub "loogiliselt" kaugemasse, aga suuremasse keskusesse).
+
+### 4. Sõlmede ja lõikude jaotus
+
+- `{prefix}_gravity_node_exits.csv` — iga sõlm: `best_exit`, `impedance_to_exit`, `gravity_value`, `switched`
+- `{prefix}_gravity_segment_exits.csv` — iga lõik: `best_exit`, `impedance_to_exit`, `assignment_type`
+
+## Gravitatsioon vs lähim väljapääs
+
+- **Lähim (nearest):** aluseks [[Liiklussageduse kaudne hindamine/02_Metoodika/03 Väljapääsupunktid ja teenindusalad]] — iga sõlm lähima väljapääsupunkti teenindusalasse
+- **Gravitatsioon:** suuremad keskused tõmbavad kauemalt liikumisi — realistlikum "voolupilt"
+
+Mõlemad on võrdlusena: gravitatsioon annab realistlikuma liikluskoormuse, lähim-alus on lihtsam ja läbipaistvam.
+
+## Rakendus
+
+Skript: `pipeline/gravity_exit_analysis.py`
+Loeb: `{prefix}_pop_catchment.csv` (rahvastik väljapääsupunkti kohta)
+Kirjutab: `{prefix}_gravity_node_exits.csv`, `{prefix}_gravity_segment_exits.csv`

+ 43 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/02_Metoodika/06 Haavatavusanalüüs.md

@@ -0,0 +1,43 @@
+# Haavatavusanalüüs (network vulnerability)
+
+## Eesmärk
+
+Hinnata, kui kriitilised on üksikud teelõigud ja väljapääsupunktid: mis juhtub liikluse ja juurdepääsuga, kui teatud lõik või väljapääs kaob?
+
+## Kahte tüüpi haavatavus
+
+### 1. Väljapääsupunkti haavatavus ([[Liiklussageduse kaudne hindamine/02_Metoodika/03 Väljapääsupunktid ja teenindusalad]])
+
+Eemaldatakse üks väljapääsupunkt, arvutatakse uuesti kaugused ülejäänutest:
+- `mean_detour_m`, `max_detour_m` — ümbersõidu pikkus
+- `pct_severe_detour` — % sõlmedest, kus ümbersõit > 2×
+
+### 2. Lõikude haavatavus (rahvastikupõhine, [[Liiklussageduse kaudne hindamine/02_Metoodika/04 Rahvastiku jaotamine]])
+
+**Bridge-analüüs:** lõigud, mille eemaldamisel jäävad sõlmed täiesti ühenduseta (trapped):
+- `trapped_nodes`, `trapped_population` — eraldatud sõlmed ja nende rahvastik
+
+**Teisejärgulised kriitilised:** mitte-bridge lõigud, kus siiski suur ümbersõit.
+
+## Väljundid
+
+- `{prefix}_pop_vulnerability.csv` — rahvastikupõhine haavatavus väljapääsupunkti kohta:
+  - `pop_weighted_mean_detour_m`, `median`, `unweighted`
+  - `person_km_detour`, `daily_extra_person_km` — lisainim-kilomeetrid päevas
+  - `pct_pop_severe_detour`, `pct_unreachable`, `unreachable_pop`
+  - `detour_divergence` — dispersiooninäitaja
+- `{prefix}_critical_edges.csv` — top kriitilised lõigud
+- `{prefix}_secondary_critical.csv` — teisejärgulised
+
+## Interpretatsioon
+
+- **`daily_extra_person_km`** — kui suur on ühiskondlik kulu (lisakilomeetrid) kui tee sulgub; mõõdab teenuse/tee "väärtust"
+- **`pct_pop_severe_detour`** — kui suur osa teenindatavast rahvastikust kannatab oluliselt (> 2× ümbersõit)
+- **`unreachable_pop`** — rahvastik, mis jääb täiesti ligipääsmatuks (kriitilise tee puhul)
+
+## Kasutus
+
+Need näitajad on sisendiks:
+1. **Teehoolduse prioriteedid** — kõige kriitilisemad lõigud esimesena
+2. **Üldplaneering** — infrastruktuuri tugevdamise vajadus
+3. **Veebiatlase kuvamine** — punased = haavatavad väljapääsupunktid kaardil

+ 36 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/02_Metoodika/07 Valideerimine.md

@@ -0,0 +1,36 @@
+# Valideerimine
+
+## Eesmärk
+
+Hinnata kaudse meetodi täpsust võrreldes tegelike liiklusloendustega.
+
+## Olemasolevad andmed
+
+- **Transpordiameti riigimaanteede liiklusloendused** — avalikud, kohalike teede ja riigiteede lõikumispunktides
+- **Maanteeinfo** — liiklussageduse klassid
+
+## Valideerimismeetod
+
+1. **Riigiteede lõikude hinnang vs loendus:** meie gravitatsioonimudel annab igale väljapääsupunktile päevase trippide arvu. Võrrelda riigiteede loendusandmetega (kui loenduspunkt langeb kokku).
+2. **Koormuse jaotus:** kas hinnatud trippide arv proportsioneerub tegeliku liiklusega?
+3. **Mõõdikud:**
+   - korrelatsioon (Pearson/Spearman)
+   - RMSE / MAPE (keskmine absoluutne protsentviga)
+   - klassifikatsioonitäpsus (seisunditaseme klassid)
+
+## Piirangud
+
+- Kaudne meetod hindab **suhtelist** koormust (trippide arvu) — absoluutseid loendusi vajab kalibreerimist
+- WorldPop modelleeritud rahvastik on peamine ebatäpsuse allikas
+- `TRIPS_PER_PERSON = 2.0` lihtsustus
+- Ei arvesta kaubavedu, turismi, läbisõitu (transit)
+
+## Tuleviku sammud
+
+- Riigiteede loenduspunktide import ja võrdlus
+- Kalibreerimine `TRIPS_PER_PERSON` ja `GRAVITY_ALPHA` parameetritele
+- Tundlikkusanalüüs
+
+## Seos
+
+[[Liiklussageduse kaudne hindamine/04_Tehniline/n8n andmekogumine]] — n8n-iga plaanime koguda loendusandmeid automaatselt.

+ 30 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/03_Andmed_ja_tulemused/Otepää vald.md

@@ -0,0 +1,30 @@
+# Otepää vald
+
+Staatus: **analüüsitud** (2026-08). Teine vald — esimene täisüldistatud pipeline'iga.
+
+## Põhinäitajad
+
+| Näitaja | Väärtus |
+|---------|---------|
+| Pindala | ~520 km² |
+| Väljapääsupunkte (catchment-analüüs) | 28 |
+| Elanikke kokku (WorldPop catchment) | ~312 |
+| Päevaseid trippe (2× elanik) | ~624 |
+| Keskmine kaugus sõlmest väljapääsupunktini | ~126 m |
+| Kriitilisi lõike (bridge) | 58 |
+| Kriitiliste lõikude eraldatud elanikke | ~677 |
+| Haavatavaid väljapääsupunkte | 28 |
+| Lisainim-kilomeetreid päevas (sulgumise korral) | ~149 |
+| Gravitatsiooni sõlmi | 4 060 |
+
+## Märkused
+
+- Võrgustik: 4 198 sõlme, 9 724 lõiku (valga_analysis)
+- Kohalike teede rühmi: 771 (palju eraldiseisvaid komponente)
+- `switched` = 0 — gravitatsioon ei muuda ühtegi valikut (kõik sõlmed jäävad lähima väljapääsupunkti juurde); madala rahvastikutiheduse tagajärg
+- Esimene vald, mis käitati üldistatud pipeline'iga ([[Liiklussageduse kaudne hindamine/04_Tehniline/Repo ja töövoog]])
+
+## Seos
+
+- Veebiatlas: valla valija → Otepää vald
+- Andmefailid: `liiklussagedus/results/otepaa_*` (prefix `otepaa`)

+ 29 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/03_Andmed_ja_tulemused/Valga vald.md

@@ -0,0 +1,29 @@
+# Valga vald
+
+Staatus: **analüüsitud** (2026-05). Esimene vald — metoodika lähtepunkt.
+
+## Põhinäitajad
+
+| Näitaja | Väärtus |
+|---------|---------|
+| Pindala | ~745 km² |
+| Väljapääsupunkte (catchment-analüüs) | 71 |
+| Elanikke kokku (WorldPop catchment) | ~6 859 |
+| Päevaseid trippe (2× elanik) | ~13 718 |
+| Keskmine kaugus sõlmest väljapääsupunktini | ~222 m |
+| Kriitilisi lõike (bridge) | 194 |
+| Kriitiliste lõikude eraldatud elanikke | ~3 583 |
+| Haavatavaid väljapääsupunkte | 30 |
+| Lisainim-kilomeetreid päevas (sulgumise korral) | ~2 248 |
+
+## Märkused
+
+- Esimene ja kõige põhjalikum analüüs; Valga oli ka olemasolevate artiklite teema
+- Elanike arv (WorldPop) on oluliselt väiksem tegelikust rahvaarvust — WorldPop'i 100 m raster alahindab hõreasustust (märkus metoodika piirangutest)
+- Kasutusel: [[Liiklussageduse kaudne hindamine/02_Metoodika/00 Metoodika ülevaade]] täisanalüüsi esmaseks testiks
+
+## Seos
+
+- Veebiatlas: `https://atlas.see1.ee` (valla valija → Valga vald)
+- Olemasolevad artiklid: [[Liiklussageduse kaudne hindamine/05_Artiklid/Artiklite nimekivi]] (juurdepääsetavus, QGIS)
+- Andmefailid: `liiklussagedus/results/valga_*` (prefix `valga_pop`)

+ 31 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/03_Andmed_ja_tulemused/Võru vald.md

@@ -0,0 +1,31 @@
+# Võru vald
+
+Staatus: **analüüsitud** (2026-08). Kolmas vald.
+
+## Põhinäitajad
+
+| Näitaja | Väärtus |
+|---------|---------|
+| Pindala | ~935 km² |
+| Väljapääsupunkte (catchment-analüüs) | 36 |
+| Elanikke kokku (WorldPop catchment) | ~955 |
+| Päevaseid trippe (2× elanik) | ~1 910 |
+| Keskmine kaugus sõlmest väljapääsupunktini | ~319 m |
+| Kriitilisi lõike (bridge) | 159 |
+| Kriitiliste lõikude eraldatud elanikke | ~834 |
+| Haavatavaid väljapääsupunkte | 30 |
+| Lisainim-kilomeetreid päevas (sulgumise korral) | ~485 |
+| Gravitatsiooni sõlmi | 8 289 |
+
+## Märkused
+
+- Võrgustik: ~8 289 sõlme, 14 999 kohalikku lõiku, 4 539 riigitee lõiku
+- Väljapääsupunkte kokku 2 007 (kogu võrgustik), põhikomponendis 36
+- `switched` = 0 — gravitatsioon ei muuda valikuid (madal tihedus)
+- GeoPackage suurus: 6.9 MB (suurim kolmest)
+- Analüüs viidi läbi pärast pipeline'i `--results-dir` parandust (väljund õiges kaustas)
+
+## Seos
+
+- Veebiatlas: valla valija → Võru vald
+- Andmefailid: `liiklussagedus/results/voru_*` (prefix `voru`)

+ 57 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/04_Tehniline/Deploy ja infrastruktuur.md

@@ -0,0 +1,57 @@
+# Deploy ja infrastruktuur
+
+## Serverid
+
+| Server | Roll | SSH | IP (Tailscale) |
+|--------|------|-----|----------------|
+| `ohmu` | Dev (arendus, andmetöötlus) | `ssh ohmu` | 100.87.1.24 |
+| `hetzner` | Prod (avalik veeb) | `ssh hetzner` | 135.181.229.246 (avalik), 100.80.222.54 |
+
+## ohmu (dev)
+
+- Docker + docker-compose (vana v1)
+- Projekt: `/data/docker/liiklusatlas`
+- Port: 8074 (`main_ai_network`)
+- Uuendus:
+  ```bash
+  ssh ohmu
+  cd /data/docker/liiklusatlas && git pull origin main
+  docker-compose build && docker-compose up -d --force-recreate
+  ```
+- Muud teenused: n8n (5678), Qdrant (6333), PostgreSQL/PostGIS (5432), Ollama, open-webui, jupyter, searxng
+
+## hetzner (prod)
+
+- Docker Swarm + traefik (Let's Encrypt, DNS-challenge DigitalOcean)
+- Projekt: `~/swarm/docker-compose/containers/other/liiklusatlas`
+- URL: `https://atlas.see1.ee`
+- Uuendus:
+  ```bash
+  ssh hetzner
+  cd ~/swarm/docker-compose/containers/other/liiklusatlas && git pull origin main
+  docker build -t liiklusatlas:latest .
+  docker service update --force --image liiklusatlas:latest atlas_liiklusatlas
+  ```
+- Traefik: `traefik-network` (overlay), router `atlas-https`, certresolver `mychallenge`
+- **Tähelepanu:** traefik kuulab ainult IPv4 (`0.0.0.0:443`). IPv6 hetzneril on katki — **AAAA kirje peab olema eemaldatud** (asub erineva DO konto all, kustuta käsitsi).
+
+## Gogs (Git)
+
+- URL: `https://gogs.odamus.com` (kasutaja `ardo`)
+- Repod: `liiklusatlas`, `Obsidian`, `ohmu-cron`
+- Gogs on hetzneril (Drupal see1.ee kõrval)
+
+## Let's Encrypt / DNS
+
+- `atlas.see1.ee` → A `135.181.229.246` (DigitalOcean DNS, see1.ee zone)
+- Sert: traefik väljastab automaatselt DNS-01 challenge'ga
+- Kui sert ebaõnnestub `NXDOMAIN`-iga: DO token ei näe zone'i — kontrolli traefiku `DO_AUTH_TOKEN` ulatust
+
+## Varundus
+
+- ohmu: `backup-ohmu.sh` → merkuur ketas (rsync --link-dest snapshot'id)
+- hetzner: `~/swarm` cron-backup
+
+## Seos
+
+[[Liiklussageduse kaudne hindamine/04_Tehniline/Repo ja töövoog]]

+ 60 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/04_Tehniline/Repo ja töövoog.md

@@ -0,0 +1,60 @@
+# Repo ja töövoog
+
+## Projektid (Git: gogs.odamus.com, kasutaja `ardo`)
+
+### `ardo/liiklusatlas` (aktive, veebirakendus + pipeline)
+- `pipeline/` — analüüsiahel (4 skripti + run_municipality.py)
+- `preprocess_web.py` — gpkg → GeoJSON kihid + raporti materjalid
+- `municipalities.py` — 79 KOV-i register
+- `server.py` — FastAPI (`/api/*`)
+- `report.py` — PDF-raport (reportlab)
+- `web/index.html` — MapLibre GL kaart
+- `data/` — genereeritud GeoJSON + raportifailid (commititud)
+
+### `ardo/Obsidian` — doktoritöö märkmed (koopiad)
+
+### `ardo/ohmu-cron` — serverite varundusskriptid
+
+## Lokaalne struktuur
+
+```
+Project/
+  liiklussagedus/            # analüüsi algandmed + tulemused (ei ole git-is)
+    results/                 # {prefix}_*.csv, {prefix}_*.png, {prefix}_qgis.gpkg
+    cache/                   # OSMnx vahemälu
+    data/                    # WorldPop raster
+  liiklusatlas/              # GIT: veebirakendus + pipeline
+```
+
+## Analüüsitöövoog (uue valla lisamine)
+
+```bash
+# 1. Täisanalüüs (võtab 5–15 min olenevalt vallast)
+PYTHONPATH=. .venv/bin/python3 liiklusatlas/pipeline/run_municipality.py <vall_id>
+
+# 2. Veebiandmete genereerimine (GeoJSON + raport)
+PYTHONPATH=. .venv/bin/python3 liiklusatlas/preprocess_web.py <vall_id>
+
+# 3. Commit + push
+cd liiklusatlas && git add -A && git commit -m "..." && git push
+
+# 4. Redeploy
+ssh ohmu     # cd /data/docker/liiklusatlas && git pull && docker-compose up -d --force-recreate
+ssh hetzner  # cd ~/swarm/.../liiklusatlas && git pull && docker build -t liiklusatlas:latest . && docker service update --force atlas_liiklusatlas
+```
+
+## Valla-id → analüüsiparameetrid
+
+`pipeline/run_municipality.py` KNOWN-tabelis: `vall_id → (place, prefix, area_km2)`.
+Teadmata vallad: proovib `teedellm.config.MUNICIPALITIES` registrit.
+
+## Väljundfailide konventsioon
+
+- Analüüs: `liiklussagedus/results/{prefix}_*`
+- Veeb: `liiklusatlas/data/web/{vall_id}/`, `liiklusatlas/data/report/{vall_id}/`
+- Raporti failid saavad **standardnimed** (valga_pop_*.png jne), sisu on valla-spetsiifiline
+
+## Seos
+
+[[Liiklussageduse kaudne hindamine/04_Tehniline/Veebirakendus]]
+[[Liiklussageduse kaudne hindamine/04_Tehniline/Deploy ja infrastruktuur]]

+ 53 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/04_Tehniline/Veebirakendus.md

@@ -0,0 +1,53 @@
+# 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")
+- Kihid sisse/välja: riigiteed, kohalikud teed, väljapääsupunktid, teede rühmad
+- Hüpikaknad (popup) kihi atribuutidega
+- Legend ja KOV-sõbralikud selgitused
+- PDF-raport allalaadimine valitud vallale
+
+## API
+
+| Endpoint | Kirjeldus |
+|----------|-----------|
+| `GET /api/municipalities` | 79 KOV-i + staatus + kihid |
+| `GET /api/maps/{vald}` | valla kihtide nimekiri |
+| `GET /api/maps/{vald}/{layer}` | GeoJSON kiht |
+| `GET /api/report.pdf?vald={vald}` | PDF-raport |
+| `GET /health` | tervisekontroll |
+
+## Kaardikihid (GeoJSON)
+
+- `boundary` — valla piir
+- `major_roads` — riigiteed (värvitud klassi järgi)
+- `local_roads` — kohalikud teed (värvitud impedantsi järgi)
+- `exit_points` — väljapääsupunktid (suurus = trips, värv = haavatavus)
+- `local_groups` — kohalike teede rühmad
+
+## Kihistuste loogika
+
+- **Kohalikud teed:** `line-color` = interpolatsioon `impedance` (0→hele, 40→tume)
+- **Väljapääsupunktid:** `circle-radius` = interpolatsioon `trips`; `circle-color` = detour_m (0 → hall, >0 → punane)
+
+## Arendus
+
+```bash
+PYTHONPATH=. .venv/bin/uvicorn liiklusatlas.server:app --port 8074 --reload
+```
+
+## Seos
+
+[[Liiklussageduse kaudne hindamine/04_Tehniline/Repo ja töövoog]]
+[[Liiklussageduse kaudne hindamine/04_Tehniline/Deploy ja infrastruktuur]]

+ 32 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/04_Tehniline/n8n andmekogumine.md

@@ -0,0 +1,32 @@
+# n8n andmekogumine
+
+## Eesmärk
+
+Kasutada ohmu serveri n8n-i (workflow-automatiseerimine) andmete ja edaspidise info **automaatseks kogumiseks** ning hoida seda struktureeritult.
+
+## Keskkond
+
+- n8n: `http://100.87.1.24:5678` (ohmu)
+- n8n-MCP on opencode.json-is konfigureeritud (tokeniga)
+- n8n dokumentatsioon: `Project/n8n/LOEMIND.md`, `Project/n8n/TEHNILINE.md`
+
+## Plaanitud kasutusalad
+
+1. **Liiklusloenduste kogumine** — Transpordiameti / riigiteede liiklusandmete perioodiline allalaadimine ja salvestamine (validatsiooniks)
+2. **Andmete kvaliteedi monitooring** — OSM-i võrgustiku muudatuste jälgimine, andmeallikate värskendused
+3. **Uuringute/artiklite info kogumine** — teaduskirjanduse viidete kogumine ja struktureerimine
+4. **Konkurentsi/turu monitooring** — KOV-ide hanketeated, uuringute tellimused
+
+## Arhitektuuriline märkus
+
+- n8n töövoogudega saab andmeid koguda **ohmu serverisse** (nt PostgreSQL `research_db` või Qdrant vektorbaas)
+- Kogutud andmed → `liiklussagedus/data/` või `liiklusatlas/data/` (versioonihalduses)
+- Seos RAG-süsteemiga: `Project/RAG/` ja `Project/teedellm/` kasutavad Qdrant + PostGIS
+
+## Staatus
+
+- [ ] Liiklusloenduste töövoog
+- [ ] Andmeallikate monitooring
+- [ ] Kirjanduse kogumise töövoog
+
+*See on tulevikuplaan — hetkel (2026-08) kogume andmeid käsitsi pipeline'iga.*

+ 21 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/05_Artiklid/Artiklite nimekiri.md

@@ -0,0 +1,21 @@
+# Artiklite nimekiri
+
+## Olemasolevad (seotud teemad)
+
+| Kaust | Teema | Staatus |
+|-------|-------|---------|
+| `Doktoritöö/250616 - Valga artikkel` | Juurdepääsetavus (kinnisvarateed, omanikud) — _Transylvanian Review of Administrative Sciences_ | Artikkel valmis (Abstract, Methodology jne) |
+| `Doktoritöö/260118 - Valga artikkel` | Teede- ja katastriandmete sidumine, topoloogiline puhastus | Tulemused koostatud |
+| `Doktoritöö/260215 - Vilnius` | Konverentsiettekanne | Artikli kondikava |
+| `Doktoritöö/231219 - Valga QGIS konverents` | QGIS-i rakendamine | — |
+| `Doktoritöö/001_artiklid/KT gravitatsioon`, `KT liikumised`, `KT võrgustikud` | Käsitletavad teemad (kontekstid) | — |
+
+## Plaanitavad (liiklussageduse kaudne hindamine)
+
+- **Põhiartikkel:** kaudne liiklussageduse hindamine hõreasustuses (gravitatsioonimudel + WorldPop) — esimene mitme valla võrdlus (Valga, Otepää, Võru)
+- **Metoodikaartikkel:** võrgustiku moodustamine ja väljapääsupunktide määratlus
+- **Haavatavusartikkel:** kriitilised lõigud ja teehoolduse prioriteedid
+
+## Järgmine samm
+
+Koguda teaduskirjandust (n8n [[Liiklussageduse kaudne hindamine/04_Tehniline/n8n andmekogumine]] kaudu) ja koostada põhiartikli Abstract + kondikava.

+ 39 - 0
Doktoritöö/Liiklussageduse kaudne hindamine/06_Logid/Tehtud töö ajalugu.md

@@ -0,0 +1,39 @@
+# Tehtud töö ajalugu
+
+## 2026-08-04 — Veebiatlas + esimesed vallad
+
+- **F0:** Veebiatlase algversioon `liiklusatlas` (FastAPI + MapLibre GL + PDF-raport)
+  - `preprocess_web.py` — gpkg → GeoJSON kihid
+  - `server.py` — API `/api/maps/*`, `/api/report.pdf`
+  - `report.py` — A4 PDF (reportlab)
+  - `web/index.html` — MapLibre kaart
+  - Gogs repo `ardo/liiklusatlas` loodud
+  - Deploy: ohmu (dev, 8074) + hetzner (prod, `atlas.see1.ee`, traefik + Let's Encrypt)
+  - DNS: A-kirje lisatud; AAAA eemaldatud (hetzner IPv6 katki)
+- **F1:** Valla valija (79 KOV-i), legend, KOV-selgitused; mitme valla andmestruktuur
+  - `municipalities.py` — 79 KOV-i register
+  - API `/api/municipalities`, `/api/maps/{vald}/{layer}`
+- **F2:** Üldistatud pipeline + Otepää vald
+  - 4 analüüsiskripti üldistatud (`--place`/`--prefix`)
+  - `run_municipality.py` — orkestreerija
+  - Otepää vald analüüsitud (2. vald)
+  - Raport valla parameetriga (`?vald=`)
+- **F2b:** Võru vald (3. vald) + pipeline parandused
+  - `--results-dir` — väljund `liiklussagedus/results/` (mitte pipeline/results)
+  - gravity-le `--skip-plot` tugi
+  - pipeline cache/data `.gitignore`-isse
+- **Obsidian:** `Doktoritöö/Liiklussageduse kaudne hindamine/` loodud — struktureeritud märkmed metoodika ja tulemuste kohta
+
+## Tehtud otsused ja õppetunnid
+
+- **Väljundi asukoht:** pipeline skriptid peavad kirjutama `liiklussagedus/results/`, sest `preprocess_web.py` otsib sealt — kinnitada `--results-dir` igas etapis
+- **WorldPop alahindab hõreasustust:** elanike arv catchment'is on tunduvalt väiksem tegelikust — vajab validatsiooni/kalibreerimist
+- **Gravitatsioon `switched` = 0:** madala tihedusega valdades ei muuda gravitatsioonikorrektsioon valikuid — tuleb uurida, kas alpha on liiga väike või on see geograafiline reaalsus
+- **AAAA kirje:** ei tohi lisada, kui server kuulab ainult IPv4-l
+
+## Tuleviku sammud
+
+- [ ] Teaduskirjanduse kogumine (n8n)
+- [ ] Valideerimine riigiteede loendustega
+- [ ] Põhiartikli koostamine (3 valda)
+- [ ] Müügipaketi ettevalmistus