# 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, simplify=False) 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). **`simplify=False` (2026-08):** OSMnx vaikimisi `simplify=True` liidab degree-2 vahesõlmed (sõlmed, kus tee lihtsalt jätkub ilma harudeta) üheks servaks. See kaotab lõikude jaotuse: nt tee 13645879022–13645879019 (100m, OSM-is 4 sõlme: 22→21→20→19) kuvatakse 1 lõiguna. `simplify=False` hoiab iga OSM-node eraldi sõlmena → lõigud jagunevad õigesti (18m+33m+49m). **Vajalik** `is_deadend`/`is_exit` märgete täpsuseks. Mõju: lõikude arv kasvab ~6-7× (Valga 6779→42090). ### 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: ~21k sõlme / 42k lõiku, Otepää: ~26k/53k, Võru: ~56k/110k — simplify=False-ga) - **Gravity optimeerimine (2026-08):** `exit_distances` arvutatakse ainult põhikomponendi väljapääsude (~21-71) vahel, mitte kõigi ~2000 exit-i vahel — sest gravity jaotus kehtib ainult põhikomponendis. Kiirendus 40+ min → ~1 min. - Eraldi komponentide arv on suur — need on teed, mis ei ole ühendatud peamise võrgustikuga