Ero sivun ”Hiilineutraali Helsinki 2035” versioiden välillä

Opasnet Suomista
Siirry navigaatioon Siirry hakuun
(→‎Katso myös: maankäyttö ja ilmasto)
 
(27 välissä olevaa versiota samalta käyttäjältä ei näytetä)
Rivi 1: Rivi 1:
[[Luokka:Ilmastonmuutos]]
[[Luokka:Ilmastonmuutos]]
[[Luokka:Helsinki]]
[[Luokka:Helsinki]]
{{muuttuja|moderaattori=Jouni|stub=Yes|edistyminen=}}
[[Luokka:Indikaattori]]
'''Hiilineutraali Helsinki 2035''' on toimenpideohjelma, jolla Helsingin kaupunki pyrkii vähentämään oman kaupunkiorganisaationsa sekä Helsingin alueella tapahtuvien ilmastopäästöjen määrää niin, että ne alittaisivat hiilinielujen määrän eli kaupunki olisi hiilineutraali vuoteen 2035 mennessä.
{{muuttuja|moderaattori=Jouni|edistyminen=}}
'''[https://hnh.hel.ninja Hiilineutraali Helsinki 2035]''' (HNH2035)<ref name="hnh2035">Hiilineutraali Helsinki 2035 -toimenpideohjelma. Helsinki, 2018. [http://www.stadinilmasto.fi/2018/06/19/hiilineutraali-helsinki-2035-toimenpideohjelma/]</ref> on toimenpideohjelma, jolla Helsingin kaupunki pyrkii vähentämään oman kaupunkiorganisaationsa sekä Helsingin alueella tapahtuvien ilmastopäästöjen määrää niin, että ne alittaisivat hiilinielujen määrän eli kaupunki olisi hiilineutraali vuoteen 2035 mennessä. Toimenpideohjelmalla on oma [https://hnh.hel.ninja seurantatyökalu], jossa on myös kuvattuna kymmeniä ilmastonmuutoksen torjuntaan liittyviä [https://hnh.hel.ninja/indicators mittareita].
 
Tämän sivun tiedot auttavat toimenpideohjelman toteutuksessa [[avoin päätöksentekokäytäntö|avoimen päätöksentekokäytännön]] mukaisesti.


== Kysymys ==
== Kysymys ==


Mitä toimenpiteitä pitäisi tehdä, jotta Helsinki olisi hiilineutraali vuoteen 2035 mennessä? Hiilipäästöihin ei tässä yhteydessä lasketa epäsuoria hiilipäästöjä, jotka syntyvät jossain muualla asukkaiden kuluttamisesta johtuen.
# Mitä toimenpiteitä (mukaan lukien mutta ei rajoittuen HNH2035:een) pitäisi tehdä, jotta Helsinki olisi hiilineutraali vuoteen 2035 mennessä? Hiilipäästöihin ei tässä yhteydessä lasketa epäsuoria hiilipäästöjä, jotka syntyvät jossain muualla asukkaiden kuluttamisesta johtuen.
# Miten toimenpiteitä tulisi seurata, jotta kaikilla olisi käytössään ajantasainen tieto siitä, a) miten toimenpiteet ovat edenneet ja b) mitä ilmasto-, talous- ja muita vaikutuksia niillä on ollut?


== Vastaus ==
== Vastaus ==


[[File:HNH2035-toimenpideohjelman seurantajärjestelmä.svg|thumb|Hiilineutraali Helsinki -toimenpideohjelman seurantajärjestelmä eli seurannan "palikoiden suhteet". Järjestelmän eri osien avulla on tarkoitus kerätä tietoa toimenpiteiden etenemisestä ja välittömistä vaikutuksista (esimerkiksi toiminnasta aiheutuneista kustannuksista) ja näiden avulla arvioida myös välillisiä tai pitkän aikavälin vaikutuksia (esimerkiksi ilmastopäästöjen vähenemistä). Lisäksi seurantajärjestelmällä mahdollistetaan kansalaisten osallistuminen ja kritiikki sekä tietojen leviäminen vapaasti yli organisaatiorajojen.]]
Jokaisella kaupungin toimintalohkolla on toimenpiteitä, jotka voivat lisätä tai vähentää ilmastopäästöjä. Siksi tehokkaan ilmastotoimintaohjelman rakentaminen on vaikeaa. Pitää pystyä arvioimaan hyvin monenlaisten toimenpiteiden vaikuttavuutta ja tehokkuutta. Lisäksi jokaisen toimintalohkon avainihmisiä pitäisi pystyä tiedottamaan oikeaan aikaan, kun on valmisteilla jokin ilmastoon vaikuttava päätös tai toimenpide. Toimenpideohjelman toteuttaminen on siis kaksinkertaisesti haasteellista.
Jokaisella kaupungin toimintalohkolla on toimenpiteitä, jotka voivat lisätä tai vähentää ilmastopäästöjä. Siksi tehokkaan ilmastotoimintaohjelman rakentaminen on vaikeaa. Pitää pystyä arvioimaan hyvin monenlaisten toimenpiteiden vaikuttavuutta ja tehokkuutta. Lisäksi jokaisen toimintalohkon avainihmisiä pitäisi pystyä tiedottamaan oikeaan aikaan, kun on valmisteilla jokin ilmastoon vaikuttava päätös tai toimenpide. Toimenpideohjelman toteuttaminen on siis kaksinkertaisesti haasteellista.


Rivi 16: Rivi 21:
Seuraavassa vaiheessa on käytävä läpi ehdotuksia ja asiantuntijoiden avustuksella pyrittävä arvioimaan toimenpiteiden vaikuttavuutta (ilmastovaikutus hiilidioksiditonneina laskettuna ''tätä menoa'' -vaihtoehtoon [business as usual] verrattuna) ja tehokkuutta (toimenpiteen lisäkustannus vähennettyä hiilidioksiditonnia kohti).
Seuraavassa vaiheessa on käytävä läpi ehdotuksia ja asiantuntijoiden avustuksella pyrittävä arvioimaan toimenpiteiden vaikuttavuutta (ilmastovaikutus hiilidioksiditonneina laskettuna ''tätä menoa'' -vaihtoehtoon [business as usual] verrattuna) ja tehokkuutta (toimenpiteen lisäkustannus vähennettyä hiilidioksiditonnia kohti).


Kolmannessa vaiheessa tunnistetaan eri toimenpiteiden kytkennät meneillään olevaan tai tulevaan päätöksentekoon. Toimenpideohjelman hyötyhän tulee tietenkin siitä, että sen avulla pystytään tekemään parempia päätöksiä ja välttämään huonoja ratkaisuja. Kytkentöjä pitää pystyä tunnistamaan sekä toimenpideohjelmasta käsin (osallistujat vinkkaavat päätöksentekijöitä) että päätöksenteosta käsin (päättäjät etsivät tietoa siitä, mitkä toimenpide-ehdotukset kuuluvat heidän päätösvaltaansa.)
Kolmannessa vaiheessa tunnistetaan eri toimenpiteiden kytkennät meneillään olevaan tai tulevaan päätöksentekoon. Toimenpideohjelman hyötyhän tulee siitä, että sen avulla pystytään tekemään parempia päätöksiä ja välttämään huonoja ratkaisuja. Kytkentöjä pitää pystyä tunnistamaan sekä toimenpideohjelmasta käsin (osallistujat vinkkaavat päätöksentekijöitä) että päätöksenteosta käsin (päättäjät etsivät tietoa siitä, mitkä toimenpide-ehdotukset kuuluvat heidän päätösvaltaansa.)


Toimenpideohjelman toteutukseen esitetään olemassaolevien ja uusien järjestelmien yhteentoimivuuden rakentamista. Tällaisella ratkaisulla saataisiin yllä kuvattu prosessi toteutettua skaalautuvasti eli siten, että se palvelisi koko Helsingin kaupunkiorganisaatiota ja muita Helsingin toimijoita (mahdollisesti myöhemmin laajentuen muihin kaupunkeihin).
Toimenpideohjelman toteutukseen esitetään olemassaolevien ja uusien järjestelmien yhteentoimivuuden rakentamista. Tällaisella ratkaisulla saataisiin yllä kuvattu prosessi toteutettua skaalautuvasti eli siten, että se palvelisi koko Helsingin kaupunkiorganisaatiota ja muita Helsingin toimijoita (mahdollisesti myöhemmin laajentuen muihin kaupunkeihin).
# Järjestelmän ytimessä on Wikibase-tietokanta, johon voidaan kuvata kaikkien erilaisten tietojen, raporttien, toimenpiteiden ja vaikutusten metatiedot eli mitä asioista tiedetään ja miten ne linkkautuvat toisiinsa. Tätä tietokantaa ei ole vielä olemassa, mutta THL:n on tarkoitus ottaa sellainen käyttöön joulukuun aikana tutkiakseen tällaisen toimintamallin soveltuvuutta. Työnimeksi tälle tietokannalle on annettu '''Opasdata'''.
# Järjestelmän ytimessä on Stadinilmasto-nettisivusto, joka tähänkin asti on toiminut keskeisenä ilmastotiedon jakelukanavana. Nyt siihen on tarkoitus lisätä uusia toiminnallisuuksia. Kaikkiin alla esitellyt osiot joko näkyvät suoraan Stadinilmaston sivuina tai sieltä on linkit niille sivuille, jotka ovat Stadinilmaston ulkopuolella. Stadinilmasto on siis se keskeinen käyttäjärajanpinta, josta pääsee käsiksi kaikkiin tietoihin.
# Helsinki on julkaissut ahkerasti tietoa ja toimintaehdotuksia ilmastonmuutoksen torjumiseksi raporttien, artikkelien ja toimintaohjelmien muodossa erilaisissa '''julkaisutietokannoissa'''. Tiedot julkaisujen olemassaolosta ja aihepiiristä kuvataan Opasdataan. Toimintamalli mahdollistaa sen, että alkuvaiheessa kuvataan nopeasti vain julkaisun olemassaolo ja pääasiallinen aihe mutta jatkossa sen sisällöstä voidaan nostaa vaiheittain yhä yksityiskohtaisempaa tietoa tietorakenteeseen. Ajatuksena on, että alkuvaiheessa saadaan vähällä vaivalla paljon aikaan ja työläitä työvaiheita toteutetaan vain tarpeen mukaan.
# Seurantatiedon keruu alkaa yleiskäyttöisistä taulukoista, joita jokainen toimenpiteestä vastaava organisaatio tai henkilö täyttää. Jotta tiedonkeruu olisi mahdollisimman yksinkertaista ja avointa, tähän käytetään toimenpidekohtaisia Google Sheetejä, joista tieto kerätään koneellisesti yhteen seurantatiedon laskentaa varten. Esimerkkinä [https://docs.google.com/spreadsheets/d/1nCJwaFQ2PEcPhJ2jnfGJSj1JK36KczGObuLNxKBSFfw/edit#gid=1110582574 energiarenessanssin toimenpiteitä].
# Asiantuntijatietoa voidaan tiivistää ''tietokiteiksi'', joissa täsmälliseen tutkimuskysymykseen (kuten tietyn toiminnan ilmastopäästöihin) etsitään tutkimustiedon perusteella paras vastaus. Tietokiteitä voidaan sitten käyttää arvioitaessa toimenpide-ehdotusten vaikuttavuutta, tehokkuutta ja muita vaikutuksia. Tähän työhön on käytettävissä THL:n ylläpitämä '''Opasnet-verkkotyötila'''.
# Tieto kerätään käyttämällä avoimen R-ohjelman toiminnallisuuksia. Esimerkkilaskentaa on myöhemmin tällä sivulla.
# Helsingin päätöksenteko on jo nyt kuvattu '''Ahjo-järjestelmässä''', jossa jokainen virallinen päätöksentekijä, asia ja päätös löytyvät avoimena datana. Opasdataa käytetään tässä suunnitelmassa yhdistämään toimenpide-ehdotukset erilaisista raporteista, tutkimustieto niiden vaikutuksista ja päätöksentekoon tulevat päätökset. Linkkaaminen tehdään joukkoistetusti, joten kansalaiset voivat nostaa päättäjän tietoisuuteen asioita, joihin tulevalla päätöksellä olisi vaikutusta. Suunnittelevat virkamiehet pystyvät myös paremmin näkemään, mihin päätösputkiin tietyt toimenpide-ehdotukset pitää aikatauluttaa, jotta niistä tehtäisiin asianmukaiset päätökset ja ne menisivät toteutukseen.
# Toimenpiteillä on omat sivunsa Stadinilmastossa, jossa on ajantasainen tieto kunkin toimenpiteen etenemisestä ja vaikutuksista siltä osin kuin ne ovat kohdennettavissa yksittäiseen toimenpiteeseen.
# Toimenpidesivuun liittyy myös mahdollisuus keskustella toimenpiteestä eri näkökulmista. Varsinaisen ohjelman toimenpiteet on jo päätetty toteuttaa, joten pääpaino on mahdollisimman tehokkaassa toteutuksessa eikä siinä, pitäisikö toimenpidettä lainkaan toteuttaa. Toisaalta keskustelun avulla voi nostaa harkittavaksi kokonaan uusia toimenpiteitä. Keskustelua voi käydä usealla eri tavalla.
#* Kerrokantasi.fi on Helsingin kehittämä keskustelualue.
#* Helsinki app on kännykkäsovellus, jonka kautta voi osallistua Kerrokantasi-keskusteluihin.
#* Decidim on Barcelonan kaupungin kehittämä osallistumistyökalu, jonka käyttöä testataan myös sen joustavien toiminnallisuuksien takia.
# Vaikutusarviointiosiossa asiantuntijatietoa voidaan tiivistää ''tietokiteiksi'', joissa täsmälliseen tutkimuskysymykseen (kuten tietyn toiminnan ilmastopäästöihin) etsitään tutkimustiedon perusteella paras vastaus. Tietokiteitä voidaan sitten käyttää arvioitaessa toimenpide-ehdotusten vaikuttavuutta, tehokkuutta ja muita vaikutuksia. Tähän työhön on käytettävissä THL:n ylläpitämä '''Opasnet-verkkotyötila'''. Lisäksi Sykellä on useita kehittyneitä ilmastolaskureita, joissa tosin tietojen koneellinen syöttäminen ja lukeminen vaatii kehittämistä. Tätä varten on alkamassa selvityshanke.
# Helsingin päätöksenteko on jo nyt kuvattu '''Ahjo-järjestelmässä''', jossa jokainen virallinen päätöksentekijä, asia ja päätös löytyvät avoimena datana. Päätösdata yhdistetään muuhun ilmasto-ohjelmaan käyttämällä Ahjon pysyviä tunnisteita eli URLeja.
# Tästä järjestelmäkokonaisuudesta puuttuu vielä järjestelmä, joka pystyisi keräämään ja kuvaamaan kansalaisten ja päättäjien arvoja ja tavoitteita. Tällaista toiminnallisuutta on kuitenkin mietitty ja suunniteltu, esimerkiksi toukokuussa 2017 Demokratiahack-tapahtumassa kolmannen palkinnon sai '''Arvoprofiili'''-niminen idea. Idean jatkokehittely on parhaillaan käynnissä, ja erilaisia kokeiluja toivotaan Helsingin kaupunkiorganisaation kanssa käynnistettävän.
# Tästä järjestelmäkokonaisuudesta puuttuu vielä järjestelmä, joka pystyisi keräämään ja kuvaamaan kansalaisten ja päättäjien arvoja ja tavoitteita. Tällaista toiminnallisuutta on kuitenkin mietitty ja suunniteltu, esimerkiksi toukokuussa 2017 Demokratiahack-tapahtumassa kolmannen palkinnon sai '''Arvoprofiili'''-niminen idea. Idean jatkokehittely on parhaillaan käynnissä, ja erilaisia kokeiluja toivotaan Helsingin kaupunkiorganisaation kanssa käynnistettävän.


Perusteluissa on yksityiskohtaisesti käyty läpi yhtä aineistoa, nimittäin ympäristöpalvelujen toteuttamissa työpajoissa esiin nousseita toimenpide-ehdotuksia liittyen liikenteen ilmastopäästöjen vähentämiseen. Tarkoituksena on havainnollistaa sitä, miten tehokkaalla työskentelyllä voidaan erilaisia tietoaineistoja jalostaa Opasdatan avulla käyttökelpoiseksi osaksi monimutkaisen ilmastopäätöksenteon tietopohjaa.
Perusteluissa on yksityiskohtaisesti käyty läpi toimenpideohjelman sisältöä, joka on tuotettu ympäristöpalvelujen toteuttamissa työpajoissa esiin nousseita toimenpide-ehdotuksista.
 
{{argument|relat1=comment|id=arg4297|type=|content=Huom! Tilannekatsaus on demo eikä perustu oikeaan dataan.|sign=--[[Käyttäjä:Jouni|Jouni Tuomisto]] ([[Keskustelu käyttäjästä:Jouni|keskustelu]]) 7. joulukuuta 2018 kello 06.24 (UTC)}}
 
<rcode label="Näkemysverkko (ajettava omalla koneella)">
# This is code Op_fi5767/ on page [[Hiilineutraali Helsinki 2035]]
library(OpasnetUtils)
 
objects.latest("Op_fi5767",code_name="hnhverkko") # [[Hiilineutraali Helsinki 2035]]
 
hnhverkko <- EvalOutput(hnhverkko)
gr <- makeGraph(hnhverkko)
render_graph(transform_to_subgraph_ws(gr))
</rcode>
 
<rcode label="Näytä HNH2035-ohjelman tilanne toimenpiteittäin" graphics=1 embed=1>
# This is code Op_fi5767/ on page [[Hiilineutraali Helisnki 2035]]
library(OpasnetUtils)
library(ggplot2)
 
toim <- Ovariable(
  data=data.frame(
    Action_id = 1:148,
    Action = paste("Action text", 1:148),
    Group = c(
      rep("Kestävien kulkumuotojen käyttö",9),
      rep("Liikenteen hinnoittelu", 4),
      rep("Täydentyvä kaupunkirakenne",3),
      rep("Ajoneuvoteknologian muutokset",7),
      rep("Sataman päästöjen vähentäminen",2),
      rep("Uudet liikkumispalvelut ja liikkumisen ohjaus",5),
      rep("Kaupungin omistamat asuin- ja palvelurakennukset",24),
      rep("Energiatehokas maankäyttö ja kuapunkirakenne",12),
      rep("Energiarenessanssi",4),
      rep("Uudet energiaratkaisut",12),
      rep("Rahoitus ja kannustimet",5),
      rep("Rakentamisen hiilijalanjäljen pienentäminen",2),
      rep("Kuluttaminen ja hankinnat",33),
      rep("Smart & Clean kasvu",7),
      rep("Hiilinielut ja kompensointi",7),
      rep("Sopeutuminen",1),
      rep("Viestintä ja osallistuminen",3),
      rep("Koordinointi, seuranta ja arviointi",8)
    ),
    Result=1
  )
)
 
plan <- Ovariable(
  data = data.frame(
    Time = 2018:2028,
    Result = (0:10)*0.1
  )
) * Ovariable(data=data.frame(
  Action_id = 1:148,
  Result=1
))
 
actions <- Ovariable(
  "actions",
  data = data.frame(
    Time = sample(2018:2035, 1000, replace = TRUE),
    Action_id = sample(1:148,1000, replace=TRUE),
    Result=0.2
  )
)
 
progress <- Ovariable(
  "progress",
  dependencies=data.frame(Name=c("actions","plan","toim")),
  formula = function(...) {
    out <- actions*toim
    return(out)
  }
)
progress <- EvalOutput(progress)
 
toim$idgroup <- unlist(lapply(unique(toim$Group), FUN=function(x) {
  rank(toim$Action_id[toim$Group==x], ties.method = "first")-1
}))
tmp <- toim*0+1
tmp <- tmp*oapply(tmp, INDEX="Group", FUN=sum)
tmp$edge <- ceiling(sqrt(tmp$Result))
tmp$x <- tmp$idgroup %/% tmp$edge
tmp$y <- tmp$idgroup %% tmp$edge
pro <- c("aloittamatta","ajallaan", "myöhässä","pahasti myöhässä")
tmp$ajantasa <- sample(pro,nrow(tmp@output),replace=TRUE)
tmp$ajantasa <- factor(tmp$ajantasa, levels=pro)
tmp$eteneminen <- sample(c(0.2, 0.3, 0.4, 0.75, 1), nrow(tmp@output), replace=TRUE)
tmp$eteneminen[tmp$ajantasa=="aloittamatta"] <- 0.2
ggplot(tmp@output, aes(x=x, y=y, colour=ajantasa, size=eteneminen))+geom_point()+
  facet_wrap(~ Group)+theme_gray(base_size=24)+
  scale_colour_manual(values=c("gray","green","yellow","red"))+
  coord_cartesian(xlim=c(-0.5,max(tmp$edge)-0.5),ylim=c(-0.5,max(tmp$edge)-0.5))+
  theme(axis.text.x=element_blank(), axis.text.y=element_blank())+
  labs(x="", y="")
</rcode>


== Perustelut ==
== Perustelut ==
Rivi 32: Rivi 139:


[[File:HNH2035 syykaavio.svg|thumb|400px|Hiilineutraali Helsinki 2035 -ohjelman toimenpiteet ja toimijat.]]
[[File:HNH2035 syykaavio.svg|thumb|400px|Hiilineutraali Helsinki 2035 -ohjelman toimenpiteet ja toimijat.]]
[[File:HNH2035 lämmitys- ja sähköratkaisut.svg|thumb|400px|Hiilineutraali Helsinki 2035 -ohjelman osio liittyen lämmitys- ja sähköratkaisuihin.]]


=== Data ===
=== Data ===


{{piilotettu|
Nykyinen toimijalistaus. {{attack|# |Huomaa, että pienten kirjoituserojen takia tulee turhaa epäselvyyttä. Nämä pitäisi korjata.|--[[Käyttäjä:Jouni|Jouni Tuomisto]] ([[Keskustelu käyttäjästä:Jouni|keskustelu]]) 17. heinäkuuta 2018 kello 05.43 (UTC)}}
Nykyinen toimijalistaus. {{attack|# |Huomaa, että pienten kirjoituserojen takia tulee turhaa epäselvyyttä. Nämä pitäisi korjata.|--[[Käyttäjä:Jouni|Jouni Tuomisto]] ([[Keskustelu käyttäjästä:Jouni|keskustelu]]) 17. heinäkuuta 2018 kello 05.43 (UTC)}}


Rivi 119: Rivi 228:
</t2b>
</t2b>


Tiedot toimenpiteistä. {{argument|relat1=relevant comment|selftruth1=true|id=arg3629|type=|content=Tämän tiedon voisi siirtää ghseetiin samaan taulukkoon kuin muut toimenpiteiden tiedot.|sign=--[[Käyttäjä:Jouni|Jouni Tuomisto]] ([[Keskustelu käyttäjästä:Jouni|keskustelu]]) 10. elokuuta 2018 kello 13.20 (UTC)}}
Tiedot toimenpiteistä. {{argument|relat1=comment|id=arg3629|type=|content=Tämän tiedon voisi siirtää ghseetiin samaan taulukkoon kuin muut toimenpiteiden tiedot.|sign=--[[Käyttäjä:Jouni|Jouni Tuomisto]] ([[Keskustelu käyttäjästä:Jouni|keskustelu]]) 10. elokuuta 2018 kello 13.20 (UTC)}}


<t2b name="Toimenpiteiden linkit" index="Oldid,Nimi" obs="Seurantasivu" unit="-">
<t2b name="Toimenpiteiden linkit" index="Oldid,Nimi" obs="Seurantasivu" unit="-">
Rivi 135: Rivi 244:
HNH2035.1|Liikenteen solmukohtien palvelutarjontaa ja vaihtojen sujuvuutta parannetaan|https://docs.google.com/spreadsheets/d/1nCJwaFQ2PEcPhJ2jnfGJSj1JK36KczGObuLNxKBSFfw/edit#gid=0|3
HNH2035.1|Liikenteen solmukohtien palvelutarjontaa ja vaihtojen sujuvuutta parannetaan|https://docs.google.com/spreadsheets/d/1nCJwaFQ2PEcPhJ2jnfGJSj1JK36KczGObuLNxKBSFfw/edit#gid=0|3
HNH2035.2|Pyöräliikenteen kantakaupungin tavoiteverkko valmistuu 2025 mennessä|https://docs.google.com/spreadsheets/d/1nCJwaFQ2PEcPhJ2jnfGJSj1JK36KczGObuLNxKBSFfw/edit#gid=254270846|3
HNH2035.2|Pyöräliikenteen kantakaupungin tavoiteverkko valmistuu 2025 mennessä|https://docs.google.com/spreadsheets/d/1nCJwaFQ2PEcPhJ2jnfGJSj1JK36KczGObuLNxKBSFfw/edit#gid=254270846|3
HNH2035.18|Sähköautojen latausinfran rakentaminen|https://docs.google.com/spreadsheets/d/1nCJwaFQ2PEcPhJ2jnfGJSj1JK36KczGObuLNxKBSFfw/edit#gid=2099090707|3
HNH2035.66|Energiarenessanssi-ohjelma|https://docs.google.com/spreadsheets/d/1nCJwaFQ2PEcPhJ2jnfGJSj1JK36KczGObuLNxKBSFfw/edit#gid=1110582574|3
HNH2035.66|Energiarenessanssi-ohjelma|https://docs.google.com/spreadsheets/d/1nCJwaFQ2PEcPhJ2jnfGJSj1JK36KczGObuLNxKBSFfw/edit#gid=1110582574|3
HNH2035.67|selvitys öljylämmityksen poistamiseksi|https://docs.google.com/spreadsheets/d/1nCJwaFQ2PEcPhJ2jnfGJSj1JK36KczGObuLNxKBSFfw/edit#gid=284082830|3
HNH2035.67|selvitys öljylämmityksen poistamiseksi|https://docs.google.com/spreadsheets/d/1nCJwaFQ2PEcPhJ2jnfGJSj1JK36KczGObuLNxKBSFfw/edit#gid=284082830|3
Rivi 147: Rivi 257:
Ilmasto.64|lämmön kysyntäjousto|https://docs.google.com/spreadsheets/d/1nCJwaFQ2PEcPhJ2jnfGJSj1JK36KczGObuLNxKBSFfw/edit#gid=717853677|3
Ilmasto.64|lämmön kysyntäjousto|https://docs.google.com/spreadsheets/d/1nCJwaFQ2PEcPhJ2jnfGJSj1JK36KczGObuLNxKBSFfw/edit#gid=717853677|3
</t2b>
</t2b>
}}


=== Datan jalostaminen ===
=== Datan jalostaminen ===
Rivi 180: Rivi 291:
Tämän koodin keräämiä datoja voit tarkastella [http://fi.opasnet.org/fi/Special:Opasnet_Base?id=op_fi5767.masterdata täältä].  
Tämän koodin keräämiä datoja voit tarkastella [http://fi.opasnet.org/fi/Special:Opasnet_Base?id=op_fi5767.masterdata täältä].  


<rcode name="master" label="Kerää seurannan masterdata">
<rcode name="master" label="Kerää seurannan masterdata" embed=1>
# This is code Op_fi5767/master on page [[Hiilineutraali Helsinki 2035]]
# This is code Op_fi5767/master on page [[Hiilineutraali Helsinki 2035]]


Rivi 207: Rivi 318:
}
}
out[is.na(colnames(out))] <- NULL # Remove unnamed columns if any
out[is.na(colnames(out))] <- NULL # Remove unnamed columns if any
out$Result <- 1


opbase.upload(
opbase.upload(
Rivi 215: Rivi 325:
   subset="Masterdata",
   subset="Masterdata",
   language="fin",
   language="fin",
   rescol="Result",
   rescol="Tulos",
   who=wiki_username
   who=wiki_username
)
)
cat("Masterdata onnistuneesti tallennettu.\n")
cat("Masterdata onnistuneesti tallennettu.\n")
</rcode>
==== Jalosta masterdataa malleja varten ====
<rcode name="tpv" label="Alusta data.frame tpv (vain kehittäjille)" embed=1>
# This is code Op_fi5767/tpv on page [[Hiilineutraali Helsinki 2035]]
library(OpasnetUtils)
tpv <- opbase.data("Op_fi5767", subset="Masterdata")
tpv$Skenaario[tpv$Skenaario %in% c("NA","toteuma")] <- NA
tpv <- tpv[!(tpv$Skenaario=="varaus" & tpv$Kuvaus=="Perustaso" & !is.na(tpv$Kuvaus)),] # What is this?
tpv <- tpv[!colnames(tpv) %in% c("Leima","Perustelu","Kuvaus")]
tpv$Aika <- as.numeric(as.character(tpv$Aika))
levels(tpv$Skenaario)[levels(tpv$Skenaario) %in% c("toteuma","varaus")] <- "tätä menoa"
tpv <- fillna(tpv, "Skenaario")
#> colnames(tpv)
#[1] "Oldid"    "Konteksti" "Kohde"    "Mittari"  "Aika"      "Skenaario"
#[7] "Yksikkö"  "Result" 
colnames(tpv) <- c("Oldid","Context","Target","Metric","Year",
                  "Scenario","Unit","Result")
objects.store(tpv)
cat("Data.frame tpv tallennettu.\n")
</rcode>
</rcode>


Rivi 274: Rivi 409:


write.csv(tpv, "HNH2035toimenpideseuranta.csv", quote=TRUE, row.names=FALSE, fileEncoding="UTF-8")
write.csv(tpv, "HNH2035toimenpideseuranta.csv", quote=TRUE, row.names=FALSE, fileEncoding="UTF-8")
</rcode>
==== Piirrä näkemysverkko ====
hnhverkko on uudempi versio häkemysverkosta ja toimii uusilla tammikuun 2019 määrittelyillä.
<rcode name="hnhverkko" label="Alusta ovariable hnhverkko (vain kehittäjille)" embed=1>
# This is code Op_fi5767/nakemysverkko on page [[Hiilineutraali Helsinki 2035]]
library(OpasnetUtils)
# library(DiagrammeRsvg)´# This is needed if the graph is saved as svg with export_graph()
hnhverkko <- Ovariable(
  "hnhverkko",
  dependencies = data.frame( # From [[Insight network]]
    Name=c("scrape.gssheet","makeGraph"),
    Ident=c("Op_en3861/scrape.functions","Op_en3861/makeGraph")
  ),
  formula = function(...) {
    out <- scrape.gssheet(
      page="https://docs.google.com/spreadsheets/d/1nCJwaFQ2PEcPhJ2jnfGJSj1JK36KczGObuLNxKBSFfw/edit#gid=1376210298",
      firstrow=5
    )
    out <- out[c(1,3,7,4,5,6,1,1,1,1)]
    colnames(out) <- c(
      "Context",
      "Item",
      "type",
      "label",
      "rel",
      "Object",
      "Description",
      "Reldescription",
      "URL",
      "Result"
    )
    out$Context <- "HNH"
    out[c("Description","Reldescription","URL")] <- ""
    out$Result <- 0
    out <- out[!(is.na(out$Item) & is.na(out$label)) , ]
    return(out)
  }
)
hnhverkko@meta$insightnetwork <- list(
  addnodes = "",
  addnodesByid = c(159,160),
  removenodes = "",
  formatting = "",
  ignoreobj = "",
  steps = 2
)
objects.store(hnhverkko)
cat("Ovariable hnhverkko tallennettu.\n")
</rcode>
<rcode label="Piirrä näkemysverkko (ajettava omalla koneella)">
# This is code Op_fi5767/nakemysverkko on page [[Hiilineutraali Helsinki 2035]]
#################### First part: heating and electricity consumption
library(OpasnetUtils)
objects.latest("Op_en3861",code_name="scrape.functions") # [[Insight network]]
objects.latest("Op_en3861",code_name="makeGraph") # [[Insight network]]
dat <- scrape.gssheet(
  "https://docs.google.com/spreadsheets/d/1nCJwaFQ2PEcPhJ2jnfGJSj1JK36KczGObuLNxKBSFfw/edit#gid=145667980",
  3)[-c(6,7)]
colnames(dat) <- c("type","Item","label","rel","Object")
gr <- makeGraph(dat)
render_graph(gr)
export_graph(gr, "HNH2035 lämmitys- ja sähköratkaisut.svg")
####################### Second part: action plan? MAY NEED UPDATING
library(OpasnetUtils)
# library(DiagrammeRsvg)´# This is needed if the graph is saved as svg with export_graph()
objects.latest("Op_en3861", code_name="insightNetwork") # [[Insight network]] insightNetwork.  Contains list of objects needed
#objects.latest("Op_en3861",code_name="ui") # [[Insight network]] ui # These are listed in insightNetwork
#objects.latest("Op_en3861",code_name="server") # [[Insight network]] server, chooseGr
# If you want to use alternative objects, fetch them here.
meta <- Ovariable(
  "meta",
  data = data.frame(
    Name = "HNH2035",
    Description = "Hiilineutraali Helsinki 2035",
    Id = "HNH",
    Type = "keskustelu",
    Table = "",
    Firstrow = 5,
    URL = "https://docs.google.com/spreadsheets/d/1nCJwaFQ2PEcPhJ2jnfGJSj1JK36KczGObuLNxKBSFfw/edit#gid=1376210298",
    Numbering = 1,
    PRLtrunk = ""
  )
)
cat("The network data comes from these sources:\n")
oprint(meta@data)
insightNetwork <- EvalOutput(insightNetwork,verbose=TRUE)
cat("This code uses the following objects:\n")
oprint(insightNetwork@dependencies)
ls()
insightTables <- makeInsightTables(meta) # Fetches the data from their original sources. You can update (part of) insightTables by rerunning with (partial) meta.
graphTable <- makeGraphTable(verbose=FALSE) # Produces a table in standard format for insight networks
graphTable <- graphTable[!(is.na(graphTable$Item) & is.na(graphTable$label)),]
#graphTable$Oldid <- paste0("HNH.",1:nrow(graphTable))
graphTable$Oldid <- graphTable$type
graphTable$type <- c(rep("action",147),rep("substance",nrow(graphTable)-147))
graphTable$type[graphTable$label %in% c("khk-päästö","ilmansaastepäästö")] <- "objective"
gr <- makeInsightGraph(graphTable) # Creates a DiagrammeR graph object
seeds <- Ovariable(data=data.frame(Node=0,Topic=0))
input <- list(
  topic="",
  addnodes = "",
  addnodesByOldid=c("HNH.159","HNH.161"),
  removenodes="",
  formatting="",
  ignoreobj="",
  steps=4
)
gr2 <- chooseGr(gr, input, seeds)
gr2$nodes_df$label <- gsub("(.{1,18})(\\s|$)", "\\1\n", gr2$nodes_df$label) # Cut labels to max 18 characters long on one line (except if a word is longer)
# Alternative possibility is to use strwrap function from {base} or stri_wrap from stringi.
if("Hide node labels" %in% input$formatting) gr2$nodes_df$label <- ""
if("Hide edge labels" %in% input$formatting) gr2$edges_df$label <- " "
gr2 <- transform_to_subgraph_ws(gr2)
# Choose one or more output formats
render_graph(gr2)
# objects.store(gr2)
# cat(Rendered graph object gr2 stored.\n")
# export_graph(gr2, "HNH2035_syykaavio.svg")
# shinyApp(ui, server, enableBookmarking = "url")
</rcode>
</rcode>


Rivi 383: Rivi 665:
objects.store(ilmpaasto)
objects.store(ilmpaasto)
cat("Ovariable ilmpaasto stored.\n")
cat("Ovariable ilmpaasto stored.\n")
</rcode>
==== Mittarit Helsingin energiapäätöksestä 2015 ====
Tämä koodi on muokattu mallista [[:op_en:Helsinki energy decision 2015#Preference_order]] siten, että sillä on tuotettu HNH2035-ohjelmaan seuraavat mittarit:
* Helsingin rakennusala [https://hnh.hel.ninja/indicator/68/]
* Rakenusala rakennustyypeittäin [https://hnh.hel.ninja/indicator/12/]
* Rakennusala lämmitysmuodoittain [https://hnh.hel.ninja/indicator/13/]
* Helsingin energiantuotantokapasiteetti [https://hnh.hel.ninja/indicator/70/]
* Kaupungin omistamien kiinteistöjen ominaislämmönkulutus [https://hnh.hel.ninja/indicator/4/]
* Ominaislämmönkulutuksen väheneminen peruskorjauksessa [https://hnh.hel.ninja/indicator/36/]
* Uusien rakennusten ominsialämmönkulutus [https://hnh.hel.ninja/indicator/51/]
* Kiinteistöjen ominaislämmönkulutus [https://hnh.hel.ninja/indicator/72/]
* Helsingin energiatase [https://hnh.hel.ninja/indicator/71/]
* Rakennuskannan lämmönkulutus [https://hnh.hel.ninja/indicator/69/]
* Kaukolämmöntuotannon kasvihuonekaasupäästöt [https://hnh.hel.ninja/indicator/31/]
* Helsingin kaupungin ilmansaastepäästöt [https://hnh.hel.ninja/indicator/8/]
* Altistuminen ilmansaasteille [https://hnh.hel.ninja/indicator/73/]
* Ympäristöterveyden tautitaakka [https://hnh.hel.ninja/indicator/74/]
<rcode name="energybalance">
# This code is Op_fi5767/energybalance on page [[Hiilineutraali Helsinki 2035]]
# This code is a fork of Op_en7237/finalresults on page [[Helsinki energy decision 215]]
library(OpasnetUtils)
library(ggplot2)
library(plotly)
library(thlVerse)
# Get pushIndicatorGraph from https://github.com/jtuomist/CNH-energy (file pushAplans.R)
objects.latest("Op_en6007", code_name="hnh2035") # [[OpasnetUtils/Drafts]] combineLines
objects.latest("Op_en6007", code_name = "miscellaneous") # [[OpasnetUtils/Drafts]] truncateIndex
openv.setN(0) # use medians instead of whole sampled distributions
noshutdown <- c(
  'Biofuel heat plants',
  'Household air conditioning',
  'Katri Vala cooling',
  'Katri Vala heat',
  'Kellosaari back-up plant',
  'Salmisaari A&B',
  'Small fuel oil heat plants',
  'Small gas heat plants',
  'Small-scale wood burning',
  'Suvilahti power storage',
  'Suvilahti solar',
  'Vanhakaupunki museum',
  'Vuosaari A',
  'Vuosaari B',
  'Vuosaari C biofuel'
)
renovation <- NULL
# Download all pre-calculated inputs, e.g. building stock.
objects.latest("Op_en7237", code_name = "intermediates") # [[Helsinki energy decision 2015]]
objects.latest("Op_en7392", code_name = "translate") # [[OpasnetUtils/Translate]] translate
objects.latest("Op_en7392", code_name = "dictionary") # [[OpasnetUtils/Translate]] dictionary
BSbase <- 24 # base_size for graph fonts. Use 12 if you use savefig to sav svg fils.
BS <- BSbase
saveobjects <- FALSE
savefigs <- FALSE
language <- "Finnish"
fi <- language == "Finnish"
savefig <- function(
  fil,
  path = "N:/YMAL/Publications/2015/Helsingin energiapäätös/Kuvat/",
  sav = if(exists("savefigs")) savefigs else FALSE,
  type = "svg",
  height = 18,
  width = 24,
  units = "cm"
) {
  if(sav) {
    ggsave(paste(path, fil, ".", type, sep = ""), height = height, width = width, units = units)
  }
}
allplants <- c(
  'Biofuel heat plants',
  'CHP diesel generators',
  'Data center heat',
  'Deep-drill heat',
  'Hanasaari',
  'Household air conditioning',
  'Household air heat pumps',
  'Household geothermal heat',
  'Household solar',
  'Katri Vala cooling',
  'Katri Vala heat',
  'Kellosaari back-up plant',
  'Loviisa nuclear heat',
  'Neste oil refinery heat',
  'Salmisaari A&B',
  'Salmisaari biofuel renovation',
  'Sea heat pump',
  'Sea heat pump for cooling',
  'Small fuel oil heat plants',
  'Small gas heat plants',
  'Small-scale wood burning',
  'Suvilahti power storage',
  'Suvilahti solar',
  'Vanhakaupunki museum',
  'Vuosaari A',
  'Vuosaari B',
  'Vuosaari C biofuel',
  'Wind mills'
)
shutdown <- allplants[!allplants %in% noshutdown]
shutdown <- c(shutdown, "None")
customdecisions <- data.frame(
  Obs = NA,
  Decision_maker = "Helen",
  Decision = "PlantPolicy",
  Option = "Custom",
  Variable = c("plantParameters", "energyProcess"),
  Cell = c(
    paste("Plant:", paste(shutdown, collapse = ","), ";Parameter:Max,Min,Investment cost;Time:>2015", sep = ""),
    ""
  ),
  Change = c("Replace", "Identity"),
  Unit = NA,
  Result = 0
)
decisions <- rbind(decisions, customdecisions)
if ("Hanasaari" %in% renovation) {
  customdecisions <- data.frame(
    Obs = NA,
    Decision_maker = "Helen",
    Decision = "PlantPolicy",
    Option = "Custom",
    Variable = rep(c("plantParameters", "energyProcess"), each = 2),
    Cell = c(
      "Plant:Hanasaari;Time:>=2018;Time:<=2060;Parameter:Max",
      "Plant:Hanasaari;Time:>=2018;Parameter:Investment cost",
      "Plant:Hanasaari;Fuel:Biofuel;Time:>=2018",
      "Plant:Hanasaari;Fuel:Coal;Time:>=2018"
    ),
    Change = rep(c("Replace", "Add"), each = 2),
    Unit = NA,
    Result = c(640, 100, -0.40, 0.40)
  )
  decisions <- rbind(decisions, customdecisions)
}
DecisionTableParser(decisions)
oprint(data.frame(
  Running = c(
    "These plants will be running in the custom plant policy:",
    paste(allplants[!allplants %in% shutdown], collapse = ", ")
  ),
  Shutdown = c(
    "Plants that will be shut down in the custom plant policy:",
    paste(shutdown, collapse = ", ")
  )
))
EnergyNetworkDemand <- EvalOutput(EnergyNetworkDemand)
EnergyNetworkDemand@output <- rbind(
  EnergyNetworkDemand@output,
  data.frame(
    Time = rep(c(2025, 2035, 2045, 2055, 2065), each = 4),
    EnergySavingPolicy = rep(c("BAU", "Energy saving moderate", "Energy saving total", "WWF energy saving"), times = 5),
    Temperature = "(-18,-15]",
    EnergyConsumerDemandSource = "Formula",
    EnergyConsumerDemandTotalSource = "Formula",
    Fuel = "Cooling",
    fuelSharesSource = "Formula",
    EnergyNetworkDemandResult = 0,
    EnergyNetworkDemandSource = "Formula"
  )
)
#cat("All energy taxes are assumed zero.\n")
#objects.latest("Op_en4151", code_name = "fuelTax")
#fuelTax <- EvalOutput(fuelTax)
#result(fuelTax) <- 0
fuelUse <- EvalOutput(fuelUse)
fuelUse$Fuel <- factor(
  fuelUse$Fuel, levels = c(
    "Biofuel",
    "Coal",
    "Fuel oil",
    "Gas",
    "Light oil",
    "Wood",
    "Electricity",
    "Electricity_taxed",
    "Heat",
    "Cooling"
  ), ordered = TRUE
)
DALY <- EvalOutput(DALYs)
DALYs <- unkeep(DALY, cols = c("Age", "Sex", "Population"))
DALYs <- oapply(DALYs, cols = c("Emission_site", "Emission_height", "Area"), FUN = sum)
DALYs <- DALYs[DALYs$Response == "Total mortality" , ]
EnergyNetworkCost <- EvalOutput(EnergyNetworkCost)
EnergyNetworkCost$Time <- as.numeric(as.character(EnergyNetworkCost$Time))
totalCost <- EvalOutput(totalCost)
totalCost@output$Time <- as.numeric(as.character(totalCost@output$Time))
totalCost <- unkeep(totalCost[totalCost$Time >= 2015 & totalCost$Time <=2065 , ], sources = TRUE)
# Net present value and effective annual cost
discount <- 0.03
times <- c(2015, 2065)
EAC <- EvalOutput(EAC)
if(saveobjects) {
  objects.store(list = ls())
  cat("All objects stored for later use:\n", paste(ls(), collapse = ", "), "\n")
}
############## POST_PROCESSING AND GRAPHS, VERSION FROM PERFERENCE ANALYSIS
##### Plotly graphs for HNH2035.
BAU <- Ovariable(
  "BAU",
  data = data.frame(
    EnergySavingPolicy = "BAU",
    PlantPolicy = "BAU",
    Result = 1
  )
)
#### 68 Helsingin rakennusala
tmp <- oapply(buildings * BAU, c("Time","Heating"),sum)
pushIndicatorGraph(
  plot_ly(tmp@output, x = ~Time, y = ~Result, color = ~Heating, type = "bar") %>%
    layout(
      barmode = "stack",
      title = "Rakennusala lämmitysmuodoittain",
      xaxis = list(title="Vuosi"),
      yaxis = list(title="Rakennusala (m^2)")),
  68
)
# Why is this installation here?
devtools::install_github('fbc-studies/fbcutils')
library(fbcutils)
ggplot((tmp*10^-6)@output, aes(x=Time, weight=Result, fill=Heating))+geom_bar(position="stack")+
  labs(
    title = "Rakennusala lämmitysmuodoittain",
    x = "Vuosi",
    y = "Rakennusala (M m^2)"
  )+
  theme_thl()
scale_fill_thl(palette = "Blues")
#### 12 Rakennusala rakennustyypeittäin
tmp <- truncateIndex(buildings,"Building",6)
colnames(tmp@output)[colnames(tmp@output)=="EnergySavingPolicy"] <- "Scenario"
#> unique(tmp$Scenario)
#[1] BAU                    Energy saving moderate Energy saving total 
#[4] WWF energy saving   
levels(tmp$Scenario) <- c("BAU","NA","tavoite","NA")
tmp <- tmp[tmp$Scenario!="NA",]
pushIndicatorGraph(
  plot_ly(
    oapply(tmp[tmp$Scenario=="BAU",], c("Building","Time"),sum)@output,
    x = ~Time, y = ~buildingsResult, color = ~Building,
    type = 'scatter', mode = 'lines') %>%
    layout(
      title="Rakennusala talotyypeittäin",
      xaxis=list(title="Vuosi"),
      yaxis=list(title="Rakennusala (m2)")
    ),
  12
)
#### 13 Rakennusala lämmitysmuodoittain
pushIndicatorGraph(
  plot_ly(
    oapply(tmp[tmp$Scenario=="BAU",], c("Heating","Time"),sum)@output,
    x = ~Time, y = ~buildingsResult, color = ~Heating,
    type = 'scatter', mode = 'lines') %>%
    layout(
      title="Rakennusala lämmitysmuodoittain",
      xaxis=list(title="Vuosi"),
      yaxis=list(title="Rakennusala (m2)")
    ),
  13
)
#### 70 Helsingin energiantuotantokapasiteetti
tmp <- oapply(plantParameters[
  plantParameters$Parameter=="Max" &
    plantParameters$PlantPolicy %in% c("BAU","Helen proposition") &
    plantParameters$Time > 1986 & plantParameters$Time < 2061,],
  c("Time","PlantPolicy"), sum
)@output
tmp$PlantPolicy <- ifelse(tmp$PlantPolicy=="Helen proposition","Hanasaari kiinni 2020","BAU")
### SMALL FUEL OIL HEAT PLANTS DIFFER IN HISTORY IN BAU AND HELEN PROPOSITION. FIX IT!
pushIndicatorGraph(
  plot_ly(
    tmp,
    x = ~Time, y = ~plantParametersResult, color = ~PlantPolicy,
    type = 'scatter', mode = 'lines') %>%
    layout(
      title="Helsingin energiantuotantokapasiteetti",
      xaxis=list(title="Vuosi"),
      yaxis=list(title="Maksimikapasiteetti (GW)")
    ),
  70
)
#### 4 Kaupungin omistamien kiinteistöjen ominaislämmönkulutus
# Tämä tulee datasta ja Juhan tekemästä tietokiteestä.
#### 36 Ominaislämmönkulutuksen väheneminen peruskorjauksessa
pushIndicatorGraph(
  plot_ly(
    renovationRatio@output,
    x = ~Renovation, y = ~renovationRatioResult*100, color = ~Renovation,
    type = 'bar') %>%
    layout(
      title="Suhteellinen ominaislämmönkulutus remontin jälkeen",
      xaxis=list(title="Remonttityyppi"),
      yaxis=list(title="Ominaislämmönkulutus (%)")
    ),
  36
)
#### 51 Uusien rakennusten ominaislämmönkulutus
tmp <- temperene[temperene$Consumable=="Heating",] * efficiencyRatio
pushIndicatorGraph(
  plot_ly(
    tmp@output,
    x = ~Efficiency, y = ~Result, color = ~Efficiency,
    type = 'bar') %>%
    layout(
      title="Ominaislämmönkulutus uusissa rakennuksissa",
      xaxis=list(title="Energialuokka"),
      yaxis=list(title="Ominaislämmönkulutus (W/m^2/K)")
    ),
  51
)
#### 37 Taloyhtiöiden omistamien kiinteistöjen ominaislämmönkulutus
# Helsinki energy decision 2015 ei tarkastellut omistuksen mukaan joten tätä ei nyt työstetä.
#### 72 Kiinteistöjen ominaislämmönkulutus
tmp <- temperene[temperene$Consumable=="Heating",] * efficiencyRatio * renovationRatio
pushIndicatorGraph(
  plot_ly(
    tmp@output,
    x = ~Efficiency, y = ~Result, color = ~Renovation,
    type = 'bar') %>%
    layout(
      title="Ominaislämmönkulutus olemassaolevissa rakennuksissa",
      xaxis=list(title="Energialuokka"),
      yaxis=list(title="Ominaislämmönkulutus (W/m^2/K)")
    ),
  72
)
#### 71 Helsingin energiatase
tmp <- truncateIndex(
  oapply(
    fuelUse[
      fuelUse$PlantPolicy %in% c("BAU","Helen proposition") &
        fuelUse$EnergySavingPolicy=="BAU" &
        fuelUse$Fuel=="Heat",],
    c("Time","PlantPolicy","Fuel","Plant"),sum),
  "Plant", 7
) / -3.6E+6 # From MJ/a -> GWh/a
result(tmp) <- pmax(0,result(tmp))
pushIndicatorGraph(
  plot_ly(
    tmp@output[tmp$PlantPolicy=="BAU",],
    x = ~Time, y = ~fuelUseResult, color = ~Plant,
    type = 'bar') %>%
    layout(
      barmode = "stack",
      title="Voimaloiden käyttö optimaalisella tuotantojoustolla",
      xaxis=list(title="Vuosi"),
      yaxis=list(title="Tuotanto (GWh/a)")
    ),
  71
)
#### 69 Rakennuskannan lämmönkulutus
tmp <- EnergyConsumerDemandTotal[
  EnergyConsumerDemandTotal$EnergySavingPolicy=="BAU" &
    EnergyConsumerDemandTotal$Consumable=="Heat",]
tmp <- tmp * temperdays * 24 * 1E-3 # MW -> GWh
tmp <- oapply(tmp, c("Heating","Consumable","Time"),sum)@output
pushIndicatorGraph(
  plot_ly(
    tmp,
    x = ~Time, y = ~Result, color = ~Heating,
    type = 'bar') %>%
    layout(
      barmode = "stack",
      title="Lämmönkulutus lämmitysmuodoittain",
      xaxis=list(title="Vuosi"),
      yaxis=list(title="Kulutus (GWh/a)")
    ),
  69
)
#### 9 Kaukolämmöntuotannon päästökerroin
# Juhalla on tästä historiallinen kuva, mutta tietokide on Emission factors for burning processes.
#### 38 Taloyhtiöiden omistamien kiinteistöjen lämmönkulutus
# Helsinki energy decision 2015 ei tarkastellut omistuksen mukaan joten tätä ei nyt työstetä.
#### 10 Kaupungin omistamien kiinteistöjen lämmityksen khk-päästöt
# Juhalla tästä historiallinen kuva
#### 31 Kaukolämmöntuotannon kasvihuonekaasupäästöt
tmp <- oapply(emissions[
  #  emissions$Fuel=="Fuel oil" &
  emissions$Time!=2065 &
    emissions$Pollutant=="CO2eq",] * BAU, c("Fuel","Time"),sum)@output
pushIndicatorGraph(
  plot_ly(
    tmp,
    x = ~Time, y = ~Result, color = ~Fuel,
    type = 'bar') %>%
    layout(
      barmode = "stack",
      title="Energiantuotannon kasvihuonekaasupäästöt polttoaineittain",
      xaxis=list(title="Vuosi"),
      yaxis=list(title="CO2eq-päästö (ton/a)")
    ),
  31
)
#### 25 Lämmöntuotannon kasvihuonekaasupäästöt
# Tästä on Jounin historiallinen HSY-kuva mutta ei kuvausta eikä tietokidettä
#### 30 Sähköntuotannon kasvihuonekaasupäästöt
# Tästä on Jounin historiallinen kuva mutta ei kuvausta eikä tietokidettä
#### 8 Helsingin kaupungin ilmansaastepäästöt
tmp <- oapply(emissions[!grepl("CO2", emissions$Pollutant),] * BAU, c("Pollutant","Time"),sum)@output
pushIndicatorGraph(
  plot_ly(
    tmp,
    x = ~Time, y = ~Result, color = ~Pollutant,
    type = 'scatter', mode='lines') %>%
    layout(
      title="Helsingin kaupungin ilmansaastepäästöt (PM2.5)",
      xaxis=list(title="Vuosi"),
      yaxis=list(title="Päästö (ton/a)")
    ),
  8
)
#### 73 Altistuminen ilmansaasteille
tmp <- oapply(exposure[!grepl("CO2", exposure$Pollutant),] * BAU, c("Exposure_agent","Fuel","Time"),sum)@output
pushIndicatorGraph(
  plot_ly(
    tmp,
    x = ~Time, y = ~Result, color = ~Fuel,
    type = 'bar') %>%
    layout(
      barmode = 'stack',
      title="Helsingin kaupungin ilmansaastepäästöt (PM2.5)",
      xaxis=list(title="Vuosi"),
      yaxis=list(title="Päästö (ton/a)")
    ),
  73
)
#### 74 Ympäristöterveyden tautitaakka
tmp <- oapply(DALY * BAU, c("Response","Pollutant","Time"),sum)@output
pushIndicatorGraph(
  plot_ly(
    tmp,
    x = ~Time, y = ~Result, color = ~Pollutant,
    type = 'bar') %>%
    layout(
      barmode = "stack",
      title="Ympäristöterveyden tautitaakka",
      xaxis=list(title="Vuosi"),
      yaxis=list(title="Haittapainotetut elinvuodet (DALY/a)")
    ),
  74
)
cat(translate("NOTE! In all graphs and tables, the Total energy saving policy is assumed unless otherwise noted\n"))
cat(translate("Total DALYs/a by different combinations of policy options.\n"))
temp <- DALYs[as.character(DALYs$Time) %in% c("2015", "2035") & DALYs$Response == "Total mortality" , ]
oprint(
  translate(oapply(temp, INDEX = c("Time", "EnergySavingPolicy", "PlantPolicy"), FUN = sum)),
  caption = translate("Table 1: Total DALYs/a by different combinations of policy options."),
  caption.placement = "top",
  include.rownames = FALSE
)
bui <- oapply(buildings * 1E-6, cols = c("City_area", "buildingsSource"), FUN = sum)
bui <- truncateIndex(bui, cols = "Heating", bins = 4)
oggplot(bui[bui$EnergySavingPolicy == "BAU" , ], x = "Time", fill = "Heating", binwidth = 5) +
  labs(
    title = translate("Building stock in Helsinki by heating"),
    y = translate("Floor area (M m2)")
  )
savefig("Rakennuskannan koko Helsingissä")
oggplot(bui, x = "Time", fill = "Efficiency", binwidth = 5) +
{if(fi) facet_wrap(~ Energiansäästöpolitiikka) else facet_wrap(~ EnergySavingPolicy)} +
  labs(
    title = translate("Building stock in Helsinki by efficiency policy"),
    y = translate("Floor area (M m2)")
  )
oggplot(bui, x = "Time", fill = "Renovation", binwidth = 5) +
{if(fi) facet_wrap(~ Energiansäästöpolitiikka) else facet_wrap(~ EnergySavingPolicy)} +
  labs(
    title = translate("Building stock in Helsinki by renovation policy"),
    y = translate("Floor area (M m2)")
  )
oggplot(bui[bui$EnergySavingPolicy == "BAU" , ], x = "Time", fill = "Building", binwidth = 5) +
  labs(
    title = translate("Building stock in Helsinki"),
    y = translate("Floor area (M m2)")
  )
oggplot(buildings, x = "Time", fill = "Efficiency", binwidth = 5)+
{if(fi) facet_grid(Energiansäästöpolitiikka ~ Korjaukset) else facet_grid(EnergySavingPolicy ~ Renovation)} +
  labs(
    title = translate("Renovation of buildings by policy and efficiency"),
    y = translate("Floor area (M m2)")
  )
# Contains also other buildings than district heating and other energy than heating
hea <- EnergyConsumerDemandTotal * temperdays * 24 * 1E-3 # MW -> GWh
hea$Time <- as.numeric(as.character(hea$Time))
temp <- hea[hea$EnergySavingPolicy == "Energy saving total" & !hea$Consumable %in% c("District cooling", "Electric cooling") , ]
oggplot(truncateIndex(temp, cols = "Temperature", bins = 7), x = "Time", fill = "Temperature", binwidth = 5) +
{if(fi) facet_wrap(~ Hyödyke) else facet_wrap(~ Consumable)} +
  labs(
    title = translate("Energy consumption in all buildings"),
    y = translate("Total energy (GWh /a)")
  )
temp <- hea[!hea$Consumable %in% c("District cooling", "Electric cooling") , ]
oggplot(temp, x = "Time", fill = "Consumable", binwidth = 5) +
{if(fi) facet_wrap(~ Energiansäästöpolitiikka) else facet_wrap(~ EnergySavingPolicy)} +
  labs(
    title = translate("Energy consumption in all buildings"),
    y = translate("Total energy (GWh /a)")
  )
savefig("Helsingin vuotuinen energiantarve")
oggplot(hea, x = "Time", fill = "Consumable", binwidth = 5) +
{if(fi) facet_wrap(~ Energiansäästöpolitiikka) else facet_wrap(~ EnergySavingPolicy)} +
  labs(
    title = translate("Energy consumption in all buildings"),
    y = translate("Total energy (GWh /a)")
  )
hea2 <- EnergyNetworkDemand * temperdays * 24 / 1000 # MW -> GWh
hea2$Time <- as.numeric(as.character(hea2$Time))
oggplot(hea2, x = "Time", fill = "Fuel", binwidth = 5) +
{if(fi) facet_wrap(~ Energiansäästöpolitiikka) else facet_wrap(~ EnergySavingPolicy)} +
  labs(
    title = translate("Energy demand in the network"),
    fill = translate("Consumable"),
    y = translate("Total energy (GWh /a)")
  )
savefig("Energiankulutus verkossa Helsingissä")
eb <-EnergyNetworkOptim[EnergyNetworkOptim$Process_variable_type == "Activity",]
eb <- eb[eb$EnergySavingPolicy == "Energy saving total" , ]
colnames(eb@output)[colnames(eb@output) == "Process_variable_name"] <- "Plant"
eb$Process_variable_type <- NULL
ebtemp <- eb[eb$Time %in% c("2035") & eb$PlantPolicy == "BAU" & eb$Temperature != "(-18,-15]" , ]
ebtemp <- truncateIndex(ebtemp, cols = "Plant", bins = 7)
oggplot(ebtemp, x = "Temperature", fill = "Plant", turnx = TRUE) +
  labs(
    title = translate("Power plant activity by temperature daily optim \nPlant policy = BAU, Year = 2035"),
    x = translate("Temperature of the day"),
    y = translate("Average daily activity (MW)")
  )
ebtemp <- eb[eb$Time %in% c("2035") & eb$Temperature != "(-18,-15]" , ]
ebtemp <- truncateIndex(ebtemp, cols = "Plant", bins = 10)
oggplot(ebtemp, x = "Temperature", fill = "Plant", turnx = TRUE) +
{if(fi) facet_wrap(~ Voimalapolitiikka) else facet_wrap(~ PlantPolicy)} +
  labs(
    title = translate("Power plant activity by temperature daily optim in 2035"),
    x = translate("Temperature of the day"),
    y = translate("Average daily activity (MW)")
  )
savefig("Helsingin päivittäinen kaukolämpötase")
ebtemp <- eb[eb$Time %in% c("2005") & eb$PlantPolicy == "BAU" & eb$Temperature == "(0,3]" , ]
ebtemp <- truncateIndex(ebtemp, cols = "Plant", bins = 10)
oggplot(ebtemp, x = "Plant", fill = "Plant", turnx = TRUE) +
{if(fi) facet_wrap(~ Lämpötila) else facet_wrap( ~ Temperature)} +
  theme(axis.text.x = element_blank()) + # Turn text and adjust to right
  labs(
    title = translate("Power plant activity by temperature daily optim \nPlant policy = BAU, Year = 2005"),
    y = translate("Average daily activity (MW)")
  )
fu <- fuelUse / 3.6E+6 # From MJ/a -> GWh/a
fu <- fu[fu$EnergySavingPolicy == "Energy saving total" , ]
fu$Burner <- NULL
fu$Time <- as.numeric(as.character(fu$Time))
futemp <- fu[fu$Time %in% c("2015", "2035", "2065") & fu$PlantPolicy == "BAU" , ]
futemp <- truncateIndex(futemp, cols = "Plant", bins = 7) * -1
oggplot(futemp, x = "Fuel", fill = "Plant", turnx = TRUE) +
{if(fi) facet_grid(Aika ~ Energiansäästöpolitiikka) else facet_grid(Time ~ EnergySavingPolicy)} +
  labs(
    title = translate("Energy commodity flows \n Plant policy = BAU"),
    y = translate("Total annual energy (GWh/a)")
  )
futemp <- fu[fu$Time %in% c("2005") & fu$PlantPolicy == "BAU" , ]
futemp <- truncateIndex(futemp, cols = "Plant", bins = 7) * -1
oggplot(futemp, x = "Fuel", fill = "Plant", turnx = TRUE) +
  labs(
    title = translate("Energy commodity flows in 2005 \n Plant policy = BAU"),
    y = translate("Total annual energy (GWh/a)")
  )
futemp <- fu[fu$Fuel %in% c("Heat") , ]
futemp <- truncateIndex(futemp, cols = "Plant", bins = 10) * -1
oggplot(futemp,
        x = "Time", fill = "Plant", binwidth = 5) +
        {if(fi) facet_wrap(~ Voimalapolitiikka) else facet_wrap(~ PlantPolicy)} +
  labs(
    title = translate("District heat flow"),
    y = translate("Total annual energy (GWh/a)")
  )
savefig("Helsingin vuotuinen kaukolämpötase")
futemp <- fu[fu$Fuel %in% c("Electricity") & fu$Plant != "Kymijoki River's plants", ]
futemp <- truncateIndex(futemp, cols = "Plant", bins = 7) * -1
# Does not contain plants outside Helsinki: Kymijoki River's plants, a share of Olkiluoto nuclear plant.
oggplot(futemp, x = "Time", fill = "Plant", binwidth = 5) +
{if(fi) facet_wrap(~ Voimalapolitiikka) else facet_wrap(~ PlantPolicy)} +
  labs(
    title = translate("Electricity flow"),
    y = translate("Total annual energy (GWh/a)")
  )
savefig("Helsingin vuotuinen sähkötase")
emis <- truncateIndex(emissions, cols = "Emission_site", bins = 5)
emis <- emis[emis$EnergySavingPolicy == "Energy saving total" & emis$Fuel != "Electricity" , ]
levels(emis$Fuel)[levels(emis$Fuel) == "Electricity_taxed"] <- "Electricity bought"
emis$Time <- as.numeric(as.character(emis$Time))
oggplot(emis, x = "Time", fill = "Fuel", binwidth = 5) +
{if(fi) facet_grid(Saaste ~ Voimalapolitiikka, scale = "free_y") else facet_grid(Pollutant ~ PlantPolicy, scale = "free_y")} +
  labs(
    title = translate("Emissions from heating in Helsinki"),
    y = translate("Emissions (ton /a)")
  ) +
  scale_x_continuous(breaks = c(2000, 2050))
savefig("Helsingin energiantuotannon päästöt")
da <- DALYs[DALYs$EnergySavingPolicy == "Energy saving total" & DALYs$Fuel != "Electricity" , ]
levels(da$Fuel)[levels(da$Fuel) == "Electricity_taxed"] <- "Electricity bought"
da$Time <- as.numeric(as.character(da$Time))
oggplot(da, x = "Time", fill = "Fuel", binwidth = 5) +
{if(fi) facet_wrap(~ Voimalapolitiikka) else facet_wrap(~ PlantPolicy)} +
  labs(
    title = translate("Health effects of PM2.5 from heating in Helsinki"),
    y = translate("Health effects (DALY /a)")
  )
savefig("Helsingin energiantuotannon terveysvaikutukset")
fp <- fuelPrice[fuelPrice$Fuel %in% c(
  "Biofuel",
  "Coal",
  "Electricity_taxed",
  "Fuel oil",
  "Heat",
  "Light oil",
  "Natural gas",
  "Peat"
) , ]
fp$Time <- as.numeric(as.character(fp$Time))
levels(fp$Fuel)[levels(fp$Fuel) == "Electricity_taxed"] <- "Electricity"
ggplot(translate(fp@output), if(fi) {
  aes(x = Aika, y = fuelPriceResult, colour = Polttoaine, group = Polttoaine)
} else {
  aes(x = Time, y = fuelPriceResult, colour = Fuel, group = Fuel)
}) +
  geom_line(size = 2)+theme_gray(base_size = BS) +
  labs(
    title = translate("Fuel prices (with tax)"),
    y = translate("Price (Eur/MWh)")
  )
savefig("Polttoaineiden verolliset hinnat")
tc <- truncateIndex(totalCost, cols = "Plant", bins = 11) / 10 * -1 # Yearly benefits (costs are negative)
tc <- tc[tc$EnergySavingPolicy == "Energy saving total" , ]
oggplot(tc, x = "Time", fill = "Cost", binwidth = 10) +
{if(fi) facet_wrap(~ Voimalapolitiikka) else facet_wrap( ~ PlantPolicy)} +
  labs(
    y = translate("Yearly cash flow (Meur)"),
    title = translate("Total benefits and costs of energy production")
  )+
  scale_x_continuous(breaks = c(2000, 2020, 2040, 2060))
savefig("Energiantuotannon kokonaiskustannus Helsingissä kustannuksittain")
oggplot(tc, x = "Time", fill = "Plant", binwidth = 10) +
{if(fi) facet_wrap(~ Voimalapolitiikka) else facet_wrap(~ PlantPolicy)} +
  labs(
    y = translate("Yearly cash flow (Meur)"),
    title = translate("Total benefits and costs of energy production")
  )+
  scale_x_continuous(breaks = c(2000, 2020, 2040, 2060))
savefig("Energiantuotannon kokonaiskustannus Helsingissä voimaloittain")
eac <- EAC[EAC$EnergySavingPolicy == "Energy saving total" , ] * -1
BS <- BSbase * 0.7 # Plot the next two graphs with smaller font because they are busy graphs.
eac2 <- eac[!eac$Plant %in% c(
  'Household air conditioning',
  'Household solar',
  'Katri Vala cooling',
  'Kellosaari back-up plant',
  'Sea heat pump for cooling',
  'Small-scale wood burning',
  'Suvilahti power storage',
  'Suvilahti solar',
  'Vanhakaupunki museum',
  'Wind mills'
) , ]
oggplot(eac2, x = "PlantPolicy", fill = "Cost", turnx = TRUE) +
{if(fi) facet_wrap(~ Voimala, scale = "free_y") else facet_wrap(~ Plant, scale = "free_y")} +
  labs(
    title = translate("Incomes and costs by plant"),
    y = translate("Effective annual cash flow (Meur/a)")
  )
savefig("Helsingin voimalaitosten kustannustehokkuus")
oggplot(eac2, x = "PlantPolicy", fill = "Cost", turnx = TRUE)+
{if(fi) facet_wrap(~ Voimala) else facet_wrap(~ Plant)} +
  labs(
    title = translate("Incomes and costs by plant"),
    y = translate("Effective annual cash flow (Meur/a)")
  )
savefig("Helsingin voimalaitosten kustannustehokkuus yhtenäisasteikolla")
BS <- BSbase
eac <- truncateIndex(eac, cols = "Plant", bins = 11)
oggplot(eac, x = "PlantPolicy", fill = "Plant", turnx = TRUE)+
  labs(
    title = translate("Incomes and costs by plant policy"),
    y = translate("Effective annual cash flow (Meur/a)")
  )
oggplot(eac, x = "PlantPolicy", fill = "Cost", turnx = TRUE)+
  labs(
    title = translate("Incomes and costs by plant policy"),
    y = translate("Effective annual cash flow (Meur/a)")
  )
savefig("Teholliset tulot ja menot energiantuotannosta Helsingissä kustannuksittain")
temp <- truncateIndex(plantParameters[plantParameters$Parameter == "Max" , ], cols = "Plant", bins = 11)
temp <- temp[temp$Time >= 2000 & temp$Time <=2070 , ]
oggplot(temp, x = "Time", fill = "Plant", binwidth = 1) +
{if(fi) facet_wrap(~ Voimalapolitiikka) else facet_wrap(~ PlantPolicy)} +
  labs(
    title = translate("Energy production capacity by plant policy"),
    y = translate("Maximum capacity (MW)")
  )
savefig("Energiantuotantokapasiteetin kehitys Helsingissä")
# odag() #Plots a directed acyclic graph of ovariables used in the model.
# This causes an internal error, so it must be the last row of the model.
</rcode>
</rcode>


Rivi 434: Rivi 1 567:


==Katso myös==
==Katso myös==
{{Hiilineutraali Helsinki 2035}}


* Ilmasto ja maankäyttö
** Luke: IPCCn mukaan maankäytöllä suuri merkitys [https://www.luke.fi/ipcc/] [https://www.luke.fi/uutiset/ipcc-maankaytolla-on-suuri-merkitys-ilmastonmuutoksessa-kestava-maa-ja-metsatalous-on-tarkea-osa-ilmastonmuutoksen-torjuntaa/]
** IPCC:n maankäyttöraportti [https://www.ipcc.ch/srccl-report-download-page/]
* Helsingin kaupungin ilmastojulkaisuja:
** Ilmastoryhmä. (2017) Helsingin ilmastonmuutokseen sopeutumisen linjaukset. [https://www.hel.fi/static/ymk/ilmasto/Helsingin-ilmastonmuutokseen-sopeutumisen-linjaukset.pdf]
** Tiia Yrjölä, Jari Viinanen. (2012) Keinoja ilmastonmuutokseen sopeutumiseksi Helsingin kaupungissa. Helsingin ympäristökeskuksen julkaisuja 2/2012. [https://www.hel.fi/static/ymk/julkaisut/julkaisu-02-12.pdf]
** Petteri Huuska, Johannes Lounasheimo, Mira Jarkko, Jari Viinanen ja Sonja-Maria Ignatius. (2017) Selvitys Helsingin uusista ilmastotavoitteista. Hiilineutraalisuustavoitteen päivitys sekä vuoden 2030 päästötavoite ja toimenpiteet. Helsingin kaupungin ympäristökeskuksen julkaisuja 4/2017 [https://www.hel.fi/static/ymk/julkaisut/julkaisu-04-17.pdf]
** Erkka Ryynänen, Laura Oja ja Iivo Vehviläinen (Gaia Consulting Oy); Olli-Pekka Pietiläinen, Riina Antikainen ja Pasi Tainio (Suomen ympäristökeskus). (2014) Helsingin 30 % päästövähennysselvitys. Kasvihuonekaasupäästöjen kehitys ja vähentämisen kustannustehokkaat toimenpiteet. Helsingin kaupungin ympäristökeskuksen julkaisuja 7/2014 [https://www.hel.fi/static/ymk/julkaisut/julkaisu-07-14.pdf]
* Summary Report of the EAT-Lancet Commission. (2019) Food Planet Health. Health diets from sustainable food systems. [https://eatforum.org/content/uploads/2019/01/EAT-Lancet_Commission_Summary_Report.pdf]
* Liikennejärjestelmä. (2019) Liikenteen kasvihuonekaavupäästöt [http://liikennejarjestelma.fi/ymparisto/paastot-ilmaan/liikenteen-kasvihuonekaasupaastot/]
* [https://docs.google.com/presentation/d/1B86so0HAcL1WQrbGkY43xpV7jhrPeRXyqdwcqN82mUE/edit?usp=drivesdk Ympäristöhyvinvointi]
* [[Hiilineutraali Helsinki 2035]] -toimenpideohjelma ja [https://www.hel.fi/static/liitteet/kaupunkiymparisto/julkaisut/julkaisut/HNH-2035-toimenpideohjelma.pdf julkaisu]
** [[Energiarenessanssi]] rakennusten energiatehokkuuden parantamiseen (toimenpiteet 66-69 toimenpideohjelmassa)
** [https://docs.google.com/spreadsheets/d/1ejh-esNcuTjhoPWWqN7rC80xFtKKXu2n7PIUCDSOR98/edit#gid=885669064 Ohjelman toimenpiteet ja tarkemmat tiedot]
** [https://docs.google.com/drawings/d/1zr85e_ulHpnbzGqd9xr_BFxHKHQHnOnEi8QXzdMQTx4/edit suunnitelma toimenpideohjelman verkkosivuston rakenteesta] ja [https://docs.google.com/presentation/d/1IqQN-YrPy_x5VGjfxeSkemBbikQbLY8FDi8iUyQ8Ywk/edit esitys suunnitelluista toiminnallisuuksista]
** [https://docs.google.com/spreadsheets/d/1nCJwaFQ2PEcPhJ2jnfGJSj1JK36KczGObuLNxKBSFfw/edit#gid=1110582574 Toimenpiteiden seurantatyökalu] (luonnos)
** Google-dokumentteja: [https://docs.google.com/drawings/d/1zr85e_ulHpnbzGqd9xr_BFxHKHQHnOnEi8QXzdMQTx4/edit Palikoiden suhteet] &middot; [https://docs.google.com/document/d/1BAGblsUynSelCCnemHrHNkLGVkouafs1VarZ0bMUNiQ/edit# Juokseva muistio arvoprofiili] &middot; [https://docs.google.com/presentation/d/1IqQN-YrPy_x5VGjfxeSkemBbikQbLY8FDi8iUyQ8Ywk/edit#slide=id.g438b06bdcb_0_15 Ilmasto-ohjelman seuranta ja arviointi] &middot; [https://docs.google.com/presentation/d/1E_6P_YfNHBKgmIjQ9rfuJuh5iMxTPhyte-zJ6FBqTCk/edit#slide=id.g3faa22fbb1_0_5 Tietokiteet ja näkemysverkot ilmasto-ohjelman seurannassa] &middot; [https://drive.google.com/drive/folders/11Vki4nqBoOe9P4HkNehQmUptoHobv9q1 Vaikutusarviointityökalu-hakemisto]
** [https://www.facebook.com/KivelaMai/posts/2283394558407168 Mai Kivelä: Helsingin ilmasto-ohjelma ei riitä]
* [http://www.stadinilmasto.fi/ Stadinilmasto-verkkosivu ilmastotyön seurantaan]
* [https://osallistu.hel.ninja/processes?filter=all Decidim-kokeilualusta]
* [http://keskustele.hel.fi/ Keskustele-kokeilualusta]
* [https://www.inforglobe.com/services/ Inforglobe-alusta päätösten joukkoistamiseen]
* Merihaan kansalaistilaisuus 6.11.2016 [https://docs.google.com/document/d/11Ieb9hZxTI2zDvwiTI1Aru9xp1dozCRCgQjtnSyA5a4/edit]
* [https://atlas.mindmup.com/2018/09/5f5ef460c25411e8a47c4bb0fb076e35/hnh_cas/index.html# Mielikuvakartta Hiilineutraali Helsinki -ohjelman työkaluista]
* [http://tieteentermipankki.fi/wiki/Oikeustiede:ilmastonmuutos Tieteen termipankki: ilmastonmuutos]
* [http://tapio.fi/ilmastonmuutoshaltuun Tapio: Ilmastonmuutos haltuun]
* HNH2035 päästövähennyspotentiaaleja ja kustannustehokkuutta [https://docs.google.com/spreadsheets/d/1b3S9imQqEdP0OOxnWRJmluPcG8C3XOo7_NSbKUaI2Ac/edit#gid=1196012425]
* [[Helsingin energiapäätös 2015]] -arviointi koskien voimalaitosratkaisuja
* Osallisuustyökaluja: [https://omastadi.hel.fi/assemblies/osbupalaute Helsingin osallistuva budjetointi] &middot; [https://demo.decidim.org/processes/BO19/f/54/proposals/41 Decidim] &middot; [https://osallistu.hel.ninja/processes/osbu-itainen/f/26/proposals/170 Helsingin Decidim-kokeilu]  &middot; [https://kerrokantasi.hel.fi/ Kerrokantasi]
* [[Ympäristöterveysindikaattori]]
* [[Ympäristöterveysindikaattori]]
* Hiilineutraali Helsinki 2035 -ohjelman sivuja
* Hiilineutraali Helsinki 2035 -ohjelman työstämisen aikaisia sivuja
** [https://docs.google.com/document/d/1W0OT8tSvg2cIhLjCYn1Jbr9_qFADN7A95Orffl5TA5s/edit# Hiilineutraali Helsinki 2035 -toimenpideohjelma]
** [https://docs.google.com/document/d/1W0OT8tSvg2cIhLjCYn1Jbr9_qFADN7A95Orffl5TA5s/edit# Hiilineutraali Helsinki 2035 -toimenpideohjelma]
** [http://www.climate-kic.org/events/nordic-ideation-day-2018/?mc_cid=431febec36&mc_eid=ce563f8f8d Climate-KIC-päivä 31.1.2018]
** [http://www.climate-kic.org/events/nordic-ideation-day-2018/?mc_cid=431febec36&mc_eid=ce563f8f8d Climate-KIC-päivä 31.1.2018]
Rivi 453: Rivi 1 616:
* [[Helsingin ilmastonmuutos -tiekartta]]
* [[Helsingin ilmastonmuutos -tiekartta]]
* [[:op_en:Structure of shared understanding]]
* [[:op_en:Structure of shared understanding]]
* [[:op_en:From open assessment to shared understanding: practical experiences]]
* [https://drive.google.com/drive/folders/1MHIxaSNgwc6TwsypWd1MxNdk1LZsrGi6 Google-hakemisto hiilineutraalin Helsingin tiedostoille]]
* [https://drive.google.com/drive/folders/1MHIxaSNgwc6TwsypWd1MxNdk1LZsrGi6 Google-hakemisto hiilineutraalin Helsingin tiedostoille]]


Rivi 461: Rivi 1 623:


<references/>
<references/>
== Kommentointi ==
{{Kommentointityökalu}}


==Aiheeseen liittyviä tiedostoja==
==Aiheeseen liittyviä tiedostoja==

Nykyinen versio 12. elokuuta 2019 kello 05.33




Hiilineutraali Helsinki 2035 (HNH2035)[1] on toimenpideohjelma, jolla Helsingin kaupunki pyrkii vähentämään oman kaupunkiorganisaationsa sekä Helsingin alueella tapahtuvien ilmastopäästöjen määrää niin, että ne alittaisivat hiilinielujen määrän eli kaupunki olisi hiilineutraali vuoteen 2035 mennessä. Toimenpideohjelmalla on oma seurantatyökalu, jossa on myös kuvattuna kymmeniä ilmastonmuutoksen torjuntaan liittyviä mittareita.

Tämän sivun tiedot auttavat toimenpideohjelman toteutuksessa avoimen päätöksentekokäytännön mukaisesti.

Kysymys

  1. Mitä toimenpiteitä (mukaan lukien mutta ei rajoittuen HNH2035:een) pitäisi tehdä, jotta Helsinki olisi hiilineutraali vuoteen 2035 mennessä? Hiilipäästöihin ei tässä yhteydessä lasketa epäsuoria hiilipäästöjä, jotka syntyvät jossain muualla asukkaiden kuluttamisesta johtuen.
  2. Miten toimenpiteitä tulisi seurata, jotta kaikilla olisi käytössään ajantasainen tieto siitä, a) miten toimenpiteet ovat edenneet ja b) mitä ilmasto-, talous- ja muita vaikutuksia niillä on ollut?

Vastaus

Hiilineutraali Helsinki -toimenpideohjelman seurantajärjestelmä eli seurannan "palikoiden suhteet". Järjestelmän eri osien avulla on tarkoitus kerätä tietoa toimenpiteiden etenemisestä ja välittömistä vaikutuksista (esimerkiksi toiminnasta aiheutuneista kustannuksista) ja näiden avulla arvioida myös välillisiä tai pitkän aikavälin vaikutuksia (esimerkiksi ilmastopäästöjen vähenemistä). Lisäksi seurantajärjestelmällä mahdollistetaan kansalaisten osallistuminen ja kritiikki sekä tietojen leviäminen vapaasti yli organisaatiorajojen.

Jokaisella kaupungin toimintalohkolla on toimenpiteitä, jotka voivat lisätä tai vähentää ilmastopäästöjä. Siksi tehokkaan ilmastotoimintaohjelman rakentaminen on vaikeaa. Pitää pystyä arvioimaan hyvin monenlaisten toimenpiteiden vaikuttavuutta ja tehokkuutta. Lisäksi jokaisen toimintalohkon avainihmisiä pitäisi pystyä tiedottamaan oikeaan aikaan, kun on valmisteilla jokin ilmastoon vaikuttava päätös tai toimenpide. Toimenpideohjelman toteuttaminen on siis kaksinkertaisesti haasteellista.

Toimenpiteiden tunnistamiseen on hyödynnetty laajoja työpajoja, joihin on saatu mukaan monien eri toimintalohkojen toimijoita ja asiantuntijoita. Näin on joukkoistamalla pystytty keräämään tietoa ja näkemyksiä siitä, mitä mahdollisuuksia eri puolilla on, ja kokoamaan näistä pitkiä toimenpide-ehdotuslistoja.

Seuraavassa vaiheessa on käytävä läpi ehdotuksia ja asiantuntijoiden avustuksella pyrittävä arvioimaan toimenpiteiden vaikuttavuutta (ilmastovaikutus hiilidioksiditonneina laskettuna tätä menoa -vaihtoehtoon [business as usual] verrattuna) ja tehokkuutta (toimenpiteen lisäkustannus vähennettyä hiilidioksiditonnia kohti).

Kolmannessa vaiheessa tunnistetaan eri toimenpiteiden kytkennät meneillään olevaan tai tulevaan päätöksentekoon. Toimenpideohjelman hyötyhän tulee siitä, että sen avulla pystytään tekemään parempia päätöksiä ja välttämään huonoja ratkaisuja. Kytkentöjä pitää pystyä tunnistamaan sekä toimenpideohjelmasta käsin (osallistujat vinkkaavat päätöksentekijöitä) että päätöksenteosta käsin (päättäjät etsivät tietoa siitä, mitkä toimenpide-ehdotukset kuuluvat heidän päätösvaltaansa.)

Toimenpideohjelman toteutukseen esitetään olemassaolevien ja uusien järjestelmien yhteentoimivuuden rakentamista. Tällaisella ratkaisulla saataisiin yllä kuvattu prosessi toteutettua skaalautuvasti eli siten, että se palvelisi koko Helsingin kaupunkiorganisaatiota ja muita Helsingin toimijoita (mahdollisesti myöhemmin laajentuen muihin kaupunkeihin).

  1. Järjestelmän ytimessä on Stadinilmasto-nettisivusto, joka tähänkin asti on toiminut keskeisenä ilmastotiedon jakelukanavana. Nyt siihen on tarkoitus lisätä uusia toiminnallisuuksia. Kaikkiin alla esitellyt osiot joko näkyvät suoraan Stadinilmaston sivuina tai sieltä on linkit niille sivuille, jotka ovat Stadinilmaston ulkopuolella. Stadinilmasto on siis se keskeinen käyttäjärajanpinta, josta pääsee käsiksi kaikkiin tietoihin.
  2. Seurantatiedon keruu alkaa yleiskäyttöisistä taulukoista, joita jokainen toimenpiteestä vastaava organisaatio tai henkilö täyttää. Jotta tiedonkeruu olisi mahdollisimman yksinkertaista ja avointa, tähän käytetään toimenpidekohtaisia Google Sheetejä, joista tieto kerätään koneellisesti yhteen seurantatiedon laskentaa varten. Esimerkkinä energiarenessanssin toimenpiteitä.
  3. Tieto kerätään käyttämällä avoimen R-ohjelman toiminnallisuuksia. Esimerkkilaskentaa on myöhemmin tällä sivulla.
  4. Toimenpiteillä on omat sivunsa Stadinilmastossa, jossa on ajantasainen tieto kunkin toimenpiteen etenemisestä ja vaikutuksista siltä osin kuin ne ovat kohdennettavissa yksittäiseen toimenpiteeseen.
  5. Toimenpidesivuun liittyy myös mahdollisuus keskustella toimenpiteestä eri näkökulmista. Varsinaisen ohjelman toimenpiteet on jo päätetty toteuttaa, joten pääpaino on mahdollisimman tehokkaassa toteutuksessa eikä siinä, pitäisikö toimenpidettä lainkaan toteuttaa. Toisaalta keskustelun avulla voi nostaa harkittavaksi kokonaan uusia toimenpiteitä. Keskustelua voi käydä usealla eri tavalla.
    • Kerrokantasi.fi on Helsingin kehittämä keskustelualue.
    • Helsinki app on kännykkäsovellus, jonka kautta voi osallistua Kerrokantasi-keskusteluihin.
    • Decidim on Barcelonan kaupungin kehittämä osallistumistyökalu, jonka käyttöä testataan myös sen joustavien toiminnallisuuksien takia.
  6. Vaikutusarviointiosiossa asiantuntijatietoa voidaan tiivistää tietokiteiksi, joissa täsmälliseen tutkimuskysymykseen (kuten tietyn toiminnan ilmastopäästöihin) etsitään tutkimustiedon perusteella paras vastaus. Tietokiteitä voidaan sitten käyttää arvioitaessa toimenpide-ehdotusten vaikuttavuutta, tehokkuutta ja muita vaikutuksia. Tähän työhön on käytettävissä THL:n ylläpitämä Opasnet-verkkotyötila. Lisäksi Sykellä on useita kehittyneitä ilmastolaskureita, joissa tosin tietojen koneellinen syöttäminen ja lukeminen vaatii kehittämistä. Tätä varten on alkamassa selvityshanke.
  7. Helsingin päätöksenteko on jo nyt kuvattu Ahjo-järjestelmässä, jossa jokainen virallinen päätöksentekijä, asia ja päätös löytyvät avoimena datana. Päätösdata yhdistetään muuhun ilmasto-ohjelmaan käyttämällä Ahjon pysyviä tunnisteita eli URLeja.
  8. Tästä järjestelmäkokonaisuudesta puuttuu vielä järjestelmä, joka pystyisi keräämään ja kuvaamaan kansalaisten ja päättäjien arvoja ja tavoitteita. Tällaista toiminnallisuutta on kuitenkin mietitty ja suunniteltu, esimerkiksi toukokuussa 2017 Demokratiahack-tapahtumassa kolmannen palkinnon sai Arvoprofiili-niminen idea. Idean jatkokehittely on parhaillaan käynnissä, ja erilaisia kokeiluja toivotaan Helsingin kaupunkiorganisaation kanssa käynnistettävän.

Perusteluissa on yksityiskohtaisesti käyty läpi toimenpideohjelman sisältöä, joka on tuotettu ympäristöpalvelujen toteuttamissa työpajoissa esiin nousseita toimenpide-ehdotuksista.

----arg4297: . Huom! Tilannekatsaus on demo eikä perustu oikeaan dataan. --Jouni Tuomisto (keskustelu) 7. joulukuuta 2018 kello 06.24 (UTC) (type: ; paradigms: science: comment)

+ Näytä koodi

+ Näytä koodi

Perustelut

Tällä sivulla on erityisesti tarkoitus esitellä mahdollisia tiedon jäsennysmenetelmiä, eivätkä sivulla esitetyt tiedot välttämättä ole ajan tasalla. Toimenpideohjelmaa kuvataan Ilmastoverkoston sivulla ja työstetään Google Drivessa, joten ajankohtainen tieto löytyy noilta sivuilta.

Hiilineutraali Helsinki 2035 -ohjelman toimenpiteet ja toimijat.
Hiilineutraali Helsinki 2035 -ohjelman osio liittyen lämmitys- ja sähköratkaisuihin.

Data


Datan jalostaminen

Tarkoitus on hyödyntää datan lähtökohtana esim. google sheetiä siten, että tiedot haetaan ja jalostetaan dynaamisesti eli alkuperäisen tiedoston muokkaamista voi jatkaa ilman, että datavirta katkeaa. Linkin avulla tietoon voi viitata pysyvästi. Huomaa, että itse tietosisältö voi muuttua, mutta aihe säilyy ja linkki vie aina sivulle, jossa kuvataan Hiilineutraali Helsinki 2035 -toimenpideohjelman liikennetavoitteita.

Tietoa rikastetaan liittämällä siihen lisätietoa, kuten linkkejä (Sustainable urban mobility plan (SUMP), HSL:n kalustoskenaario, Kaupunkistrategia 2017-2021, Sähköisen liikenteen kehittämisohjelma, Kaupunginjohtajan päätös lausunnosta koskien liikennepalvelulain esitystä).

Seuraavaksi tieto muutetaan automaattisesti rakenteelliseksi siten, että alkuperäisen taulukon riveistä muodostetaan erillisiä, viittauskelpoisia tieto-olioita. Osa rivin sisällöstä sijoitetaan muodostettavaan olioon itseensä, osa taas muutetaan relaatioiksi toisiin tieto-olioihin kuten organisaatiotietoihin. Näin esimerkiksi voidaan tunnistaa kaikki tiettyyn toimenpiteeseen liittyvät toimijat ja tehdä listaus kaikista jonkin toimijan vastuulla olevista asioista. Google sheetissä tämä olisi työlästä ja jäisi tekemättä.

Vertailun vuoksi: Ahjossa on jokaisella päättäjällä, asialla ja päätöksellä oma tunniste, ja näihin on syytä linkata mahdollisuuksien mukaan.

Kaupunginjohtaja https://dev.hel.fi/paatokset/paattaja/11010vh1/
Lausunto liikennepalvelulain esityksestä https://dev.hel.fi/paatokset/asia/hel-2017-005140/
Kaupunginjohtajan päätös kyseistä lausunnosta https://dev.hel.fi/paatokset/paattaja/11010vh1/2017/72/

Rakenteistaminen onnistuu automaattisesti, kun tiedot alunperin kirjoitaan yhdenmukaisesti. Silloin se voidaan myös päivittää tietojen muuttuessa. Tällainen rakenteistamiskoodi löytyy sivulta Ympäristöterveysindikaattori#Laskenta.

Toiminnassa pyritään siihen, että tiedot ovat selkeitä, johdonmukaisia ja yhdenmukaisia. Tätä varten vakioidaan se, mitä tietoja kustakin tavoitteesta tai toimenpiteestä kerätään. Tässä on kuvattu lähtötietojen sarakkeet ja niiden sisällöt (ehdotus). Tarkempi kuvaus löytyy täältä. Tietoja kerätään google sheetille. Taulukossa mainitut relaatiot tarkoittavat tietoa siitä, että kaksi asiaa (esimerkiksi toimenpide ja tavoite) liittyvät toisiinsa tietyllä tavalla.

Sisältövaihtoehdot sarakkeissa, joissa on etukäteen määrätyt vaihtoehdot.

Teema
1. hankinnat, 2. infra, 3. kaupungin käytännöt, 4. kaupunki testialustana, 5. maankäyttö, 6. ohjaus, 7. rahoitus ja kannustimet, 8. uudet palvelut, 9. viestintä ja neuvonta, 10. seuranta
Toimenpideluokka
  • Rakentaminen: 1. Elinkaaripäästöt 2. Hukkalämmön talteenotto 3. Lämmön energiatehokkuus 4. Paikallinen lämmöntuotanto 5. Sähkön energiatehokkuus 6. Paikallinen sähköntuotanto 7. Lämmön kysyntäjousto 8. Sähkön kysyntäjousto 9. Ulkovalaistus 10. Öljyn käytön vähentäminen 11. Vihreän sähkön hankinta 12. Vihreän lämmön hankinta 13. Suunnitelmat ja ohjelmat 14. Kaupunki testialustana 15. Viestintä ja koulutus 16. suunnittelun työkalut
  • Liikenne: 1. ajoneuvoliikenteen hinnoittelu (ruuhkamaksut) 2. uudet liikkumispalvelut (ja muut mahdolliset henkilöautojen kuormitusta nostavat toimenpiteet) 3. pysäköintikustannusten kasvattaminen 4. pyöräilyn kulkutapaosuuden kasvu 5. joukkoliikenteen palvelutason nosto (hinta, vuoroväli, mukavuus) 6. henkilöliikenteen teknologia (sähkö, energiatehokkuus) 7. raskaan liikenteen teknologia (energiatehokkuus, täyttöaste) 8. maankäytön muutokset 9. biopolttoaineet 10 työkoneiden teknologia 11. satamien teknologia 12. suunnitelmat ja ohjelmat 13 MUU(Ei sovellu)
Ohjelmapäätös
Kyllä, Tyhjä
Aikataulu
1=tämä valtuusto (2018-2019), 2=seuraava valtuusto (2019-2023), 3=myöhemmin (2013- )

Laskenta

Kerää ja varastoi masterdata

Tämän koodin keräämiä datoja voit tarkastella täältä.

+ Näytä koodi

Jalosta masterdataa malleja varten

+ Näytä koodi

Kerää toimenpide- ja vaikutustiedot

Tämä koodi kerää seurantatiedot avoimista nettitaulukoista ja tallentaa ne yhteen paikkaan jatkotyöstettäväksi. Toistaiseksi tämä on ajettava omalla koneella eikä Opasnetissä, mutta tähän tullee parannus lähiaikoina.

HNH2035toimenpideseuranta Toimenpiteiden toteuma sekä ennakoidut ja toteutuneet vaikutukset.

+ Näytä koodi

Piirrä näkemysverkko

hnhverkko on uudempi versio häkemysverkosta ja toimii uusilla tammikuun 2019 määrittelyillä.

+ Näytä koodi

+ Näytä koodi

Tarkastele vaikutuksia

Tämä koodi ottaa kootut seurantatiedot ja laskee niistä erilaisia tunnuslukuja ja seurantakaavioita. Malliajolinkeistä pääsee suoraan valmiiksi laskettuihin tuloksiin.

  • Malliajo 11.8.2018 [2]
  • Malliajo 17.9.2018 [3]

+ Näytä koodi

Tämä koodi tuottaa osamallin ilmastopäästöjen laskemiseksi pyöräilykilometreille ja muille vaikutuksille.

+ Näytä koodi

Mittarit Helsingin energiapäätöksestä 2015

Tämä koodi on muokattu mallista op_en:Helsinki energy decision 2015#Preference_order siten, että sillä on tuotettu HNH2035-ohjelmaan seuraavat mittarit:

  • Helsingin rakennusala [4]
  • Rakenusala rakennustyypeittäin [5]
  • Rakennusala lämmitysmuodoittain [6]
  • Helsingin energiantuotantokapasiteetti [7]
  • Kaupungin omistamien kiinteistöjen ominaislämmönkulutus [8]
  • Ominaislämmönkulutuksen väheneminen peruskorjauksessa [9]
  • Uusien rakennusten ominsialämmönkulutus [10]
  • Kiinteistöjen ominaislämmönkulutus [11]
  • Helsingin energiatase [12]
  • Rakennuskannan lämmönkulutus [13]
  • Kaukolämmöntuotannon kasvihuonekaasupäästöt [14]
  • Helsingin kaupungin ilmansaastepäästöt [15]
  • Altistuminen ilmansaasteille [16]
  • Ympäristöterveyden tautitaakka [17]

+ Näytä koodi

Posterikuva Climate-KIC

Posteria varten tehty Gantt chart Climate-KIC-kokoukseen 31.1.2018. Kuvaa ei käytetty lopullisessa posterissa. Lisätietoja Google Drivessa: Climate-KIC-posteri ja idean hakemus.

+ Näytä koodi

Katso myös

Hiilineutraali Helsinki 2035 -toimenpideohjelmaan liittyviä sivuja
Helsingin ilmastovahti

Helsingin ilmastovahti · ilmastovahdin toteuttaja Kausal oy · keskustelutyökalujen demoja: kerrokantasi hel kerrokantasi testi, Decidim omastadi testi, Discourse demo, Kialo, Opasnet, argumentit näkemysverkkona · Helsingin digisuunnittelun periaatteet · syksyn 2018 aineistoa · admin-demo (vaatii salasanan) · REST-rajapinta seurantatyökalulle Kerrokantasi-palvelulle · seurantatyökalun tietomallin yleiskuva · ensimmäinen blogi työkalusta Storybook · Skenaariotyökalu · Plotly

Toimepiteitä

Energiarenessanssi ·

Tietokiteitä (englanniksi)

Air pollution emissions in Helsinki · Building model · Building stock in Helsinki · Economic impacts · Emission factors for burning processes · Emission factors for road transport · Energy balance · Energy balance in Helsinki · Energy use of buildings · ERFs of environmental pollutants · External cost · Health impact assessment · Helsinki energy consumption · Helsinki energy production · Intake fractions of PM · Population of Helsinki metropolitan area · Prices of fuels in heat production · Road traffic in Helsinki ·

Aiheeseen liittyviä arviointeja

HSY:n päästölaskenta ja menetelmät · Helsingin energiapäätös 2015 · Climate change policies in Helsinki · Climate change policies and health in Kuopio · Climate change policies in Basel

Katso myös

Toimenpideohjelma Stadinilmasto-sivuilla · juokseva muistio työn etenemisestä · Sitoumus2050 · Helsingin energiapäätökseen liittyviä arvoja · Helsingin hallintokuntien energiatehokkuus- ja ilmastotoimenpiteet ja -tavoitteet · Helsingin ilmastonmuutos -tiekartta · Helsingin kaupungin talous · Helsingin ohjelmalliset energiatehokkuus- ja ilmastotoimenpiteet ja -tavoitteet · Helsingin strategiset energiatehokkuus- ja ilmastotavoitteet · Ilmastonmuutokseen sopeutuminen: seuranta ja arviointi · Ilmastopolitiikkojen vaikutusten luokittelu · Rakennuskantamalli


Avainsanat

Viitteet

  1. Hiilineutraali Helsinki 2035 -toimenpideohjelma. Helsinki, 2018. [1]

Kommentointi


Aiheeseen liittyviä tiedostoja