# Rahvastiku jaotamine (OSM-hooned) ## 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. ## Meetod (alates 2026-08: OSM-hooned) ### 1. Hoonete laadimine ```python bld = ox.features_from_polygon(boundary, {"building": True}) bld = bld[bld["addr:housenumber"].notna()] # ainult aadressiga = eluruumid ``` - **Aadressiga hooned** = tegelikud eluruumid. Hõreasustuses on palju suvilaid/abihooneid (greenhouse, shed, garage...) ilma aadressita — need välistatakse. - Skript: `pipeline/building_population.py` ### 2. Rahvastiku variandid Kuna üks lävi ei tööta kõigis piirkondades, arvutatakse **mitu varianti**: - **`population` (OSM aadressiga, PEAMINE)** — AINULT aadressiga OSM-hooned. Valla tasandil kõige täpsem: Valga 17 346 vs ~16k, Otepää 6 610 vs ~6.7k, Võru 9 622 vs ~10k. - **`population_ads` (ADS, võrdluseks)** — riikliku aadressiregistri (ADS) hooned, KÕIK aadressiga. Ülehinnatud, sest sisaldab kõrvalhooneid ja suvilaid (Valga 25 562 vs ~16k). Kasutatakse popupis võrdluseks — näitab, kus on maju, mida OSM-il pole (nt VAL_0193: OSM-addr 0, ADS 22). - **`population_res` (kombineeritud)** — OSM aadressiga + ilma aadressita `building=yes` hooned 50–200m². - **`population_all` (laiapõhjaline)** — kõik OSM elamutüübid + `building=yes`. Tugevalt ülehinnatud. Iga hoone → **lähim tee sõlm** (max 300 m). Ei loeta hoonet mitu korda. ### 3. Elanike arv hoone kohta ```python PERSONS_PER_BUILDING = 2.2 # Eesti keskmine leibkond PERSONS_PER_APARTMENT = 12.0 # korterelamu ``` ### 4. Variantide ülekandmine väljapääsupunktidesse `gravity_exit_analysis.py` §9 arvutab gravity-jaotuse osakaalud (shares) **ühe korra** (ei sõltu rahvastiku suurusest) ja korrutab kõigi variantidega: - `gravity_population` / `gravity_trips` — OSM aadressiga (peamine) - `gravity_population_ads` / `gravity_trips_ads` — ADS (võrdluseks) - `gravity_population_res` / `gravity_trips_res` — kombineeritud - `gravity_population_all` / `gravity_trips_all` — laiapõhjaline ### 5. Trippide genereerimine (trip generation) ```python TRIPS_PER_PERSON = 2.0 daily_trips_to_exit = population_catchment * TRIPS_PER_PERSON ``` ## Väljundid - `{prefix}_pop_node_population.csv` — sõlme-taseme rahvastik (node, population, population_addr, population_all) - `{prefix}_gravity_exit_population.csv` — väljapääsupunkti taseme (addr + all) - `{prefix}_catchment.csv` — `exit_node, population_catchment, nodes_served, ...` - `{prefix}_pop_vulnerability.csv` — rahvastikupõhine haavatavus - `{prefix}_critical_edges.csv` — kriitilised lõigud ## Veebiatlas Popup näitab mõlemat arvu, kui need erinevad: - "Elanikke" — peamine (OSM aadressiga) - "ADS (kõik hooned)" — riiklik register, ülehinnatud võrdlus ## VAL_0193 näide (miks ADS-i võrrelda) Valga grupp VAL_0193 — kohalikud teeharud riigitee "Puurina" küljes. Sõlmede lähedal (≤200m) on `building=yes` hooned ilma aadressita: - `pop` (OSM aadressiga) = 0 — OSM-i aadressikate puudulik - `pop_ads` (ADS) = 22.0 elanikku, 44 sõitu — riiklik register kinnitab maju See oli just juhtum, mille omavalitsus tahtis teada — ADS annab sellele vastuse (kuigi pole veel peamine, sest ülehinnab kogu valla tasandil). **Tulevikuplaan:** EHR-i sihtotstarve `ehr_kood`-i kaudu, et ADS-i hoonetest eristada eluhooned ja saada täpne peamine hinnang. ## Valla kogurahvastik (2026-08) | Vald | OSM-addr (peamine) | ADS (võrdlus) | res | Tegelik | |------|--------------------|---------------|-----|---------| | Valga | 17 346 | 25 562 | 23 716 | ~16 000 | | Otepää | 6 610 | 20 165 | 15 309 | ~6 700 | | Võru | 9 622 | 37 450 | 26 311 | ~10 000 | **Järeldus:** OSM-addr on valla tasandil täpseim. ADS-i kõik hooned ülehinnavad (kõrvalhooned/suvilad), kuid näitavad õigesti, kus on maju — eriti hõreda aadressikattega piirkondades. **Kalibreerimine EHR-i sihtotstarbega on järgmine samm.** ## Uurimismärkused - **Privaatsuslävi (alla 4 = 0) EI ole meie probleemi põhjus:** WorldPop-i raster on dasymetriliselt määritud (murdarvulised väärtused, isegi põldudel); Statistikaamet kasutab cell key meetodit (müra 1-2 väärtustele), mitte "alla 4 = 0" - **ADS on riiklik register, kõik hooned aadressiga** — Valga 17 452 vs OSM 14 728. Kuid kõik ei ole eluruumid (kõrvalhooned, suvilad) - **96% OSM aadressita hoonetest on <100m ADS-hoonest** — ADS-i hooned asuvad samades kohtades, kuid täiendus ilma sihtotstarbeta ülehinnab - **EHR-i sihtotstarve (eluhoone vs mitte) on täpsuse võti** — plaanitud tulevikuks `ehr_kood`-i kaudu