# 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]]
