Talk:Climate change policies and health in Kuopio: Difference between revisions
m (→Työversio rakennusmallista: more factor related fixes) |
(→Työversio rakennusmallista: added temporarily dose, RR, totcases (new version) some other updates) |
||
| Line 3: | Line 3: | ||
Tässä rakennetaan uudempaa versiota rakennuskantamallista. Lähtökohtana on kesäkuussa 2014 Rotterdamin Urgenche-kokoukseen kehitetty malli, johon tuli jokin bugi ja jolla ei lopulta saatu mitään tuloksia. Nyt (syyskuu 2014) bugit siivotaan ja mallin seuraava versio kehitetään. Lähtökohtana on [http://en.opasnet.org/en-opwiki/index.php?title=Climate_change_policies_and_health_in_Kuopio&oldid=33319#Results tämä malliversio] 25.8.2014. | Tässä rakennetaan uudempaa versiota rakennuskantamallista. Lähtökohtana on kesäkuussa 2014 Rotterdamin Urgenche-kokoukseen kehitetty malli, johon tuli jokin bugi ja jolla ei lopulta saatu mitään tuloksia. Nyt (syyskuu 2014) bugit siivotaan ja mallin seuraava versio kehitetään. Lähtökohtana on [http://en.opasnet.org/en-opwiki/index.php?title=Climate_change_policies_and_health_in_Kuopio&oldid=33319#Results tämä malliversio] 25.8.2014. | ||
<rcode graphics="1" | <rcode graphics=1> | ||
############## TILAPÄISESTI HIA-FUNKTIOITA TÄHÄN | |||
library(OpasnetUtils) | |||
" | dose <- Ovariable("dose", # This calculates the body-weight-scaled exposure or "dose" to be used with ERFs. | ||
dependencies = data.frame(Name = c( | |||
"ERF", # Exposure-response function of the pollutants or agents (RR for unit exposure) | |||
"exposure", # Exposure to the pollutants | |||
"BW" # body weight | |||
)), | |||
formula = function(...) { | |||
#################################################################33 | |||
######### Body weight scaling: In some cases, exposure is given as per body weight and in some cases as absolute amounts. | |||
# Here we add one index to define for this difference. | |||
scaling <- unique(ERF@output[c("ERF_parameter", "Exposure_agent")]) | |||
scaling <- Ovariable("scaling", data = data.frame( | |||
scaling, | |||
Result = 1 * grepl("bw", scaling$ERF_parameter) # if ERF parameter contains bw, scaling is TRUE, i.e. 1. | |||
)) | |||
out <- exposure / (((BW - 1) * scaling) + 1) # If scaling is 0, BW cancels out. | |||
out <- out * Ovariable( # Create alternative scenario with zero exposure. | |||
output = data.frame(Exposcen = c("BAU", "No exposure"), Result = c(1, 0)), | |||
marginal = c(TRUE, FALSE) | |||
) | |||
return(out) | |||
} | |||
) | |||
RR <- Ovariable("RR", # This calculates the total number of cases in each population subgroup. | |||
# The cases are calculated for specific (combinations of) causes. However, these causes are NOT visible in the result. | |||
dependencies = data.frame(Name = c( | |||
"ERF", # Exposure-response function of the pollutants or agents (RR for unit exposure) | |||
"dose", # Exposure to the pollutants | |||
"frexposed", # fraction of population that is exposed | |||
"bgexposure", # Background exposure (a level below which you cannot get in practice) | |||
"threshold" # exposure level below which the agent has no impact. | |||
)), | |||
formula = function(...) { | |||
#################################################################### | |||
####### This part is about risks relative to background. | |||
# Calcualte the risk ratio to each subgroup based on the exposure in that subgroup. | |||
# Combine pollutant-specific RRs by multiplying. For description, see [[Exposure-response function]]. | |||
test <- list() | |||
marginals <- character() | |||
#First take the relative risk estimates | |||
ERFrr <- ERF | |||
ERFrr@output <- ERF@output[ERF@output$ERF_parameter %in% c("RR", "RR bw") , ] | |||
if(nrow((ERFrr * dose)@output) > 0) { | |||
bigger <- (threshold > bgexposure) * threshold + (1 - (threshold > bgexposure)) * bgexposure # Choose bigger | |||
RRrr <- exp(log(ERFrr) * (dose - bigger)) # Actual function | |||
RRrr <- (RRrr - 1) * (dose > threshold) + 1 # RR is 1 below threshold | |||
test <- c(test, RRrr) | |||
marginals <- c(marginals, colnames(RR@output)[RR@marginal]) | |||
} | |||
# Then take the relative Hill estimates | |||
ED50 <- threshold | |||
ED50@output <- ED50@output[ED50@output$ERF_parameter %in% c("Relative Hill", "Relative Hill bw") , ] | |||
if(nrow((ED50 * dose)@output) > 0) { | |||
RRrhill <- 1 + (dose * ERF) / (dose + ED50) # ERF has parameter value for Imax. If Imax < 0, risk reduces. | |||
test <- c(test, RRrhill) | |||
marginals <- c(marginals, colnames(RRrhill@output)[RRrhill@marginal]) | |||
} | |||
# We need OR but not yet crucial, so let's postpone this. See [[:op_en:Converting between exposure-response parameters]] | |||
# #Then take the odds ratio estimates | |||
# OR <- ERF | |||
# OR@output <- ERF@output[ERF@output$ERF_parameter %in% c("OR", "OR bw") , ] | |||
# if(nrow((OR * dose)@output) > 0) { | |||
# bigger <- (threshold > bgexposure) * threshold + (1 - (threshold > bgexposure)) * bgexposure # Choose bigger | |||
# OR <- RR = OR/( 1-PX0+OR*PX0 ) # Actual function where PX0 is the background incidence. How to write a code? | |||
# RRor <- (RRrr - 1) * (dose > threshold) + 1 # RR is 1 below threshold | |||
# test <- c(test, RRor) | |||
# marginals <- c(marginals, colnames(OR@output)[OR@marginal] | |||
# } | |||
if(length(test) == 0) return(data.frame()) | |||
if(length(test) == 1) out <- test[[1]] | |||
if(length(test) == 2) out <- orbind(test[[1]], test[[2]]) | |||
if(length(test) == 3) out <- orbind(orbind(test[[1]]), test[[2]], test[3]) | |||
out <- Ovariable(output = out, marginal = colnames(out) %in% marginals) | |||
# Dilute the risk in the population if not all are exposed i.e. frexposed < 1. | |||
out <- frexposed * (out - 1) + 1 | |||
out <- unkeep(out, prevresults = TRUE, sources = TRUE) | |||
# out <- oapply(out, cols = "Exposure_agent", FUN = prod) | |||
return(out) | |||
} | |||
) | |||
totcases <- Ovariable("totcases", # This calculates the total number of cases in each population subgroup. | |||
# The cases are calculated for specific (combinations of) causes. However, these causes are NOT visible in the result. | |||
dependencies = data.frame(Name = c( | |||
"population", # Population divided into subgroups as necessary | |||
"disincidence", # Incidence of the disease of interest | |||
"RR", # Relative risks for the given exposure | |||
"ERF", # Other ERFs than those that are relative to background. | |||
"dose", # Exposure to the pollutants | |||
"frexposed", # fraction of population that is exposed | |||
"threshold" # exposure level below which the agent has no impact. | |||
)), | |||
formula = function(...) { | |||
test <- list() | |||
marginals <- character() | |||
############### First look at the relative risks based on RR | |||
if(nrow(RR@output) > 0) { | |||
# if(class(population) != "ovariable") population <- EvalOutput(Ovariable("population", data = data.frame(Result = population))) | |||
# # Remove redundant columns and locations. | |||
# population@output <- dropall(population@output) | |||
# population <- unkeep(population, sources = TRUE, prevresults = TRUE) | |||
# disincidence <- unkeep(disincidence, sources = TRUE, prevresults = TRUE) | |||
# takeout is a vector of column names of indices that ARE in population but NOT in the disease incidence. | |||
if(class(population) == "ovariable") { | |||
takeout <- setdiff(colnames(population@output), colnames(disincidence@output)) | |||
pop <- oapply(population, cols = takeout, FUN = sum) # Aggregate to larger subgroups. | |||
} else { | |||
takeout <- character() | |||
pop <- population | |||
} | |||
# pci is the proportion of cases across different population subroups based on differential risks and | |||
# population sizes. pci sums up to 1 for each larger subgroup found in disincidence. | |||
# See [[Population attributable fraction]]. | |||
pci <- population * RR | |||
# Divide pci by the values of the actually exposed group (discard nonexposed) | |||
temp <- pci | |||
temp@output <- temp@output[temp@output$Exposcen == "BAU" , ] | |||
temp <- unkeep(temp, cols = "Exposcen", prevresults = TRUE, sources = TRUE) | |||
pci <- pci / oapply(temp, cols = takeout, FUN = sum) | |||
# The cases are divided into smaller subgroups based on weights in pci. | |||
# This is why the larger groups of population are used (pop instead of population). | |||
out1 <- disincidence * pop * pci | |||
test <- c(test, out1) | |||
marginals <- c(marginals, colnames(out1@output)[out1@marginal]) | |||
} | |||
########################################################################## | |||
############# This part is about absolute risks (i.e., risk is not affected by background rates). | |||
# Unit risk (UR), cancer slope factor (CSF), and Exposure-response slope (ERS) estimates. | |||
UR <- ERF | |||
UR@output <- UR@output[UR@output$ERF_parameter %in% c("UR", "CSF", "ERS", "UR bw", "CSF bw", "ERS bw") , ] | |||
if(nrow((UR * dose)@output) > 0) { | |||
UR <- threshold + UR * dose * frexposed # Actual equation | |||
# threshold is here interpreted as the baseline response (intercept of the line). It should be 0 for | |||
# UR and CSF but it may have meaningful values with ERS | |||
UR <- unkeep(UR, prevresults = TRUE, sources = TRUE) | |||
UR <- oapply(UR, cols = "Exposure_agent", FUN = sum) | |||
UR@output <- UR@output[!is.na(result(UR)) , ] # Remove empty rows | |||
UR <- population * UR | |||
test <- c(test, UR) | |||
marginals <- c(marginals, colnames(UR)[UR@marginal]) | |||
} | |||
# Step estimates: value is 1 below threshold and above ERF, and 0 in between. | |||
# frexposed cannot be used with Step because this may be used at individual and maybe at population level. | |||
Step <- ERF | |||
Step@output <- Step@output[Step@output$ERF_parameter %in% c( | |||
"Step", "Step bw", "ADI", "ADI bw", "TDI", "TDI bw", "RDI", "RDI bw", "NOAEL", "NOAEL bw") , ] | |||
if(nrow((Step * dose)@output) > 0) { | |||
Step <- 1 - (dose >= threshold) * (dose <= Step) # Actual equation | |||
Step <- unkeep(Step, prevresults = TRUE, sources = TRUE) | |||
Step <- oapply(Step, cols = "Exposure_agent", FUN = sum) | |||
# out3 <- (population * 0 + 1) * Step # This is to maintain the ovariable structure # Does not work because population may be numeric. | |||
test <- c(test, Step) | |||
marginals <- c(marginals, colnames(Step@output)[Step@marginal]) | |||
} | |||
##################################################################### | |||
# Combining effects | |||
if(length(test) == 0) return(data.frame()) | |||
if(length(test) == 1) out <- test[[1]] | |||
if(length(test) == 2) out <- orbind(test[[1]], test[[2]]) | |||
if(length(test) == 3) out <- orbind(orbind(test[[1]], test[[2]]), test[[3]]) | |||
out <- Ovariable(output = out, marginal = colnames(out) %in% marginals) | |||
return(out) | |||
} | |||
) | |||
################################## Varsinainen malli alkaa tästä | |||
library(OpasnetUtils) | library(OpasnetUtils) | ||
library(ggplot2) | library(ggplot2) | ||
| Line 15: | Line 210: | ||
library(OpasnetUtilsExt) | library(OpasnetUtilsExt) | ||
library(RgoogleMaps) | library(RgoogleMaps) | ||
language <- "EN" | language <- "EN" | ||
openv.setN( | openv.setN(1) | ||
objects.latest("Op_en6007", code_name = "answer") # [[OpasnetUtils/Drafts]] findrest | objects.latest("Op_en6007", code_name = "answer") # [[OpasnetUtils/Drafts]] findrest | ||
objects.latest("Op_en6289", code_name = "initiate") # [[Building model]] Generic building model. | objects.latest("Op_en6289", code_name = "initiate") # [[Building model]] buildings, heatingEnergy. # Generic building model. | ||
objects.latest("Op_en5417", code_name = "initiate") # [[Population of Kuopio]] | objects.latest("Op_en5417", code_name = "initiate") # [[Population of Kuopio]] population | ||
objects.latest("Op_en5932", code_name = "initiate") # [[Building stock in Kuopio]] Building ovariables | objects.latest("Op_en5932", code_name = "initiate") # [[Building stock in Kuopio]] Building ovariables: buildingStock, renovation, | ||
objects.latest("Op_en3435", code_name = "disperse") # [[Exposure to PM2.5 in Finland]] Summarised Piltti matrix, another copy of the code on a more reasonable page | #renovationShares, construction, constructionAreas, buildingTypes, heatingShares, heatingSharesNew, eventyear, efficiencies | ||
objects.latest("Op_en3435", code_name = "disperse") # [[Exposure to PM2.5 in Finland]] iF, emissionLocations | |||
#Summarised Piltti matrix, another copy of the code on a more reasonable page | |||
# Default run: en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=aXDIVDboftr1bTEd | # Default run: en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=aXDIVDboftr1bTEd | ||
objects.latest("Op_en2791", code_name = "initiate") # [[Emission factors for burning processes]] | objects.latest("Op_en2791", code_name = "initiate") # [[Emission factors for burning processes]] emissionFactors, fuelTypes | ||
objects.latest("Op_en5488", code_name = "initiate") # [[Energy use of buildings]] | objects.latest("Op_en5488", code_name = "initiate") # [[Energy use of buildings]] energyUse, efficienciesNew, savingPotential, | ||
objects.latest('Op_en2261', code_name = 'initiate') # [[Health impact assessment]] ovariables totcases, AF, totcases2. | |||
objects.latest('Op_en2261', code_name = 'initiate') # [[ | objects.latest('Op_en5917', code_name = 'initiate') # [[Disease risk]] disincidence | ||
objects.latest('Op_en5917', code_name = 'initiate') # [[ | objects.latest('Op_en5827', code_name = 'initiate') # [[ERFs of environmental pollutants]] ERF, threshold | ||
objects.latest('Op_en5827', code_name = 'initiate') # [[ | #objects.latest('Op_en5453', code_name = 'initiate') # [[Burden of disease in Finland]] BoD | ||
objects.latest('Op_en5453', code_name = 'initiate') # [[ | |||
frexposed <- 1 # fraction of population that is exposed | frexposed <- 1 # fraction of population that is exposed | ||
bgexposure <- 0 # Background exposure to an agent (a level below which you cannot get in practice) | bgexposure <- 0 # Background exposure to an agent (a level below which you cannot get in practice) | ||
BW <- 70 # Body weight (is needed for RR calculations although it is irrelevant for PM2.5) | |||
directs <- opbase.data("Op_en5461", subset = "Direct inputs") | directs <- opbase.data("Op_en5461", subset = "Direct inputs") | ||
colnames(iF@output)[colnames(iF@output) == "City.area"] <- " | colnames(iF@output)[colnames(iF@output) == "City.area"] <- "Emission_site" | ||
colnames(iF@output)[colnames(iF@output) == "Emissionheight"] <- " | colnames(iF@output)[colnames(iF@output) == "Emissionheight"] <- "Emission_height" | ||
colnames(emissionLocations@data) <- gsub(" ", "_", colnames(emissionLocations@data)) | |||
districts <- tidy(opbase.data("Op_en3435.kuopio_city_districts"), widecol = "Location") # [[Exposure to PM2.5 in Finland]] | # Calculate intake fractions for Kuopio districts | ||
districts <- tidy(opbase.data("Op_en3435.kuopio_city_districts"), widecol = "Location") # [[Exposure to PM2.5 in Finland]] | |||
colnames(districts) <- gsub("\\.", "_", colnames(districts)) | |||
districts <- Ovariable("districts", data = data.frame(districts, Result = 1)) | districts <- Ovariable("districts", data = data.frame(districts, Result = 1)) | ||
if(language == "EN") deci <- "Decisions" else deci <- "Päätökset" | if(language == "EN") deci <- "Decisions" else deci <- "Päätökset" | ||
decisions <- opbase.data('Op_en5461', subset = deci) # [[Climate change policies and health in Kuopio]] | decisions <- opbase.data('Op_en5461', subset = deci) # [[Climate change policies and health in Kuopio]] | ||
| Line 74: | Line 269: | ||
fuelTypes <- CheckDecisions(EvalOutput(fuelTypes, verbose = TRUE)) | fuelTypes <- CheckDecisions(EvalOutput(fuelTypes, verbose = TRUE)) | ||
oprint(fuelTypes) | |||
#################### Manage the data before calculating | #################### Manage the data before calculating | ||
| Line 88: | Line 285: | ||
population <- EvalOutput(population, verbose = TRUE) | population <- EvalOutput(population, verbose = TRUE) | ||
pop <- oapply(population, cols = "City_area", FUN = "sum") # Sum across city areas. | |||
pop <- unkeep(pop * 1, prevresults = TRUE) # Remove populationResult column because it would cause trouble in merge. | |||
pop <- population / pop | |||
oprint(population) | |||
buildingStock@data <- buildingStock@data[ | buildingStock@data <- buildingStock@data[ | ||
| Line 96: | Line 295: | ||
colnames(buildingStock@data) != "Observation" | colnames(buildingStock@data) != "Observation" | ||
] | ] | ||
buildingStock <- buildingStock * | buildingStock <- buildingStock * pop | ||
construction@data <- construction@data[ | construction@data <- construction@data[ | ||
| Line 103: | Line 302: | ||
] | ] | ||
construction <- construction * constructionAreas / 100 / 3 # Statistics are for three years (2010-2012) | construction <- construction * constructionAreas / 100 / 3 # Statistics are for three years (2010-2012) | ||
oprint(buildingStock) | |||
oprint(construction) | |||
energyUse@data <- energyUse@data[ | energyUse@data <- energyUse@data[ | ||
| Line 140: | Line 342: | ||
#colnames(iF@output)[colnames(iF@output) == "City.area"] <- "Emission.site" | #colnames(iF@output)[colnames(iF@output) == "City.area"] <- "Emission.site" | ||
#colnames(iF@output)[colnames(iF@output) == "Emissionheight"] <- "Emission.height" | #colnames(iF@output)[colnames(iF@output) == "Emissionheight"] <- "Emission.height" | ||
oprint(renovation) | |||
###################### Actual model | ###################### Actual model | ||
| Line 194: | Line 398: | ||
emis@output <- emis@output[emis@output$Year >= 1980 , ] | emis@output <- emis@output[emis@output$Year >= 1980 , ] | ||
emis <- oapply(emis, cols = c("Efficiency", "Renovation", "Building"), FUN = "sum") | emis <- oapply(emis, cols = c("Efficiency", "Renovation", "Building"), FUN = "sum") | ||
emis@output$Year <- as.numeric( | emis@output$Year <- as.numeric(as.character(emis@output$Year)) | ||
emis <- emis * fuelTypes * emissionFactors * 3.6 * 1E-9 # convert from kWh /a to MJ /a and mg to ton | emis <- emis * fuelTypes * emissionFactors * 3.6 * 1E-9 # convert from kWh /a to MJ /a and mg to ton | ||
| Line 201: | Line 405: | ||
emis <- emis * emissionLocations | emis <- emis * emissionLocations | ||
emis@output$Emission_site <- ifelse( | |||
emis@output$Emission_site == "At site of consumption", | |||
emis@output$ | as.character(emis@output$City_area), | ||
emis@output$ | as.character(emis@output$Emission_site) | ||
as.character(emis@output$ | |||
as.character(emis@output$ | |||
) | ) | ||
emis2 <- oapply( | |||
emis, | |||
cols = c("Heating", "Burner", "Fuel", "City_area", "Emission_site", "Emission_height", "emissionLocationsSource"), | |||
FUN = sum | |||
) | |||
ggplot(emis@output, aes(x = Year, weight = Result, fill = Emission_site)) + geom_bar() + facet_grid( Pollutant ~ ., scales = "free_y") | |||
### Use these population and iF values in health impact assessment. Why? | |||
pop <- 5E+5 | |||
iF <- 1E-7 | iF <- 1E-7 | ||
exposure <- Ovariable("exposure", | exposure <- Ovariable("exposure", | ||
dependencies = data.frame(Name = c(" | # emis is in ton /a | ||
# iF = conc (g /m3) * pop (#) * BR (m3 /s) / emis (g /s) <=> conc = emis * iF / BR / pop # conc is the exposure concentration | |||
dependencies = data.frame(Name = c("emis2", "iF", "pop")), | |||
formula = function(...) { | formula = function(...) { | ||
out <- | BR <- 20 # Nominal breathing rate (m^3 /d) | ||
BR <- BR / 24 / 3600 # m^3 /s | |||
out <- 1E+12 / 365 / 24 / 3600 # Emission scaling from ton /a to ug /s. | |||
out <- (emis2 * out) * iF / BR / pop # the actual equation | |||
out <- unkeep(out, prevresults = TRUE, sources = TRUE) | out <- unkeep(out, prevresults = TRUE, sources = TRUE) | ||
return(out) | return(out) | ||
| Line 245: | Line 439: | ||
) | ) | ||
exposure <- EvalOutput(exposure, verbose = TRUE) | exposure <- EvalOutput(exposure, verbose = TRUE) | ||
colnames(exposure@output)[colnames(exposure@output) == "Pollutant"] <- "Exposure_agent" | |||
ggplot(exposure@output, aes(x = Year, weight = exposureResult)) + geom_bar() + facet_grid(Exposure_agent ~ FuelPolicy, scales = "free_y") | |||
totcases <- totcases2 # This is temporary, until totcases2 is established and replaces totcases. | |||
# | |||
totcases <- EvalOutput(totcases) | |||
DW <- Ovariable("DW", data = data.frame(directs[c("Exposure.agent", "Disease")], Result = directs$DW)) | DW <- Ovariable("DW", data = data.frame(directs[c("Exposure.agent", "Disease")], Result = directs$DW)) | ||
L <- Ovariable("L", data = data.frame(directs[c("Exposure.agent", "Disease")], Result = directs$L)) | L <- Ovariable("L", data = data.frame(directs[c("Exposure.agent", "Disease")], Result = directs$L)) | ||
ggplot(cases@output[cases@output$Causes == "PM2.5+" , ], aes(x = Year, weight = Result/10, fill = Disease)) + geom_bar() + facet_grid(FuelPolicy ~ RenovationPolicy, scale = "free_y") | #ggplot(cases@output[cases@output$Causes == "PM2.5+" , ], aes(x = Year, weight = Result/10, fill = Disease)) + geom_bar() + facet_grid(FuelPolicy ~ RenovationPolicy, scale = "free_y") | ||
DALYs <- cases * DW * L | DALYs <- cases * DW * L | ||
| Line 368: | Line 539: | ||
} | } | ||
</rcode> | </rcode> | ||
Revision as of 12:51, 20 September 2014
Työversio rakennusmallista
Tässä rakennetaan uudempaa versiota rakennuskantamallista. Lähtökohtana on kesäkuussa 2014 Rotterdamin Urgenche-kokoukseen kehitetty malli, johon tuli jokin bugi ja jolla ei lopulta saatu mitään tuloksia. Nyt (syyskuu 2014) bugit siivotaan ja mallin seuraava versio kehitetään. Lähtökohtana on tämä malliversio 25.8.2014.
Työtehtäviä Urgenche-kuukausikokouksesta
- Käännä tämä sivu englanniksi ja rakenna, jos mahdollista, päätöstaulu yhteenvedoksi.
- Tee suunnitelma siitä, miten kaupunkeja lähestytään niin, että saadaan metodi- ja keisityö etenemään.
- Perehdytään kaupunkien politiikkasuunnitelmiin (aiemmista esityksistä tai muuten).
- Keskusteleen kaupunkien kanssa heidän tarpeistaan.
- Markkinoidaan metodityöpake(tin/ttien) osaamista ja työkaluja, jotta kaupungit näkisivät mahdollisuuksia.
- Käynnistetään jokin konkreettinen mallinnustyö.
- Päätetään, mikä asia halutaan valmiiksi Tessalonikin kokoukseen mennessä ja aikataulutetaan se.
- Suunnitellaan Tessalonikin-kokouksen hands-on sessio, kunhan Clivelta kuullaan raamit.
----#: . Tilanne 22.2.2013.
- Jounin kanssa käydyissä keskusteluissa päädyttiin siihen, että seuraavaksi rakennetaan päätöstaulu liittyen Kuopion rakennuskantaan. Tämä yhdistetään tai sen tietoja hyödynnetään siten, että päätösvaihtoehdot rakennusten energiankulutuksen suhteen saadaan lisättyä energiabalanssimalliin. Tämä esitellään Thessalonikin kokouksessa.
- Mallia tarjotaan muille kaupungeille.
- Jorma Takkiselta/Kuopion Energia on pyydetty sähkönkulutustietoja, toiveena että ne toimitettaisiin maaliskuun aikana. --Marjo 10:54, 22 February 2013 (EET) (type: truth; paradigms: science: comment)
-- Marjo 11:32, 17 December 2012 (EET)
Kasvihuonekaasupäästöjen vähentäminen Kuopiossa: skenaariopalaverit
Energiantuotanto
- Aika: to 22.11.2012 klo 09:00-10:45
- Paikka: Kokoushuone 4, Valtuustovirastotalo, Suokatu 42, 70110 KUOPIO
Läsnä:
- Marjo Niittynen, Terveyden ja Hyvinvoinnin Laitos
- Arja Asikainen, Terveyden ja Hyvinvoinnin Laitos
- Tapio Kettunen, Kuopion kaupunki, Energiatehokkuushanke
- Erkki Pärjälä, Kuopion kaupunki, Ympäristönsuojelutoimisto
- Mikko Savastola, Kuopion kaupunki, Ympäristönsuojelutoimisto
- Peter Seppälä, Kuopion Energia
- Iivo Vänskä, Kuopion kaupunki, Asemakaavoitus
- Kaisa-Mari Immonen, Kuopion kaupunki, Strateginen maankäytön suunnittelu
Asiat:
Kokouksessa esiteltiin URGENCHE- hanke ja sen taustat ja tavoitteet. Tämän jälkeen keskusteltiin energiantuotannon päästövähennysmahdollisuuksista Kuopiossa sekä päätettiin mitä asioita energiantuotantoa koskevaan päästövähennysskenaarioon otetaan mukaan. Päädyttiin selvittämään ja keräämään tietoa kolmesta asiakokonaisuudesta, jotka ovat:
Haapaniemen voimalaitosten energiantuotanto
Peter Seppälä (Kuopion Energia) arvioi, että Haapaniemi 3- ja Haapaniemi 2- voimalaitosten polttoaineina käytetään vuodesta 2014 eteenpäin 50 % turvetta ja 50 % biopolttoaineita. Tämä on polttoaineiden saatavuuden ja huoltovarmuuden näkökulmasta realistinen arvio, kun Haapaniemi 2- voimalaitos on muutettu pölypoltosta leijupoltolle. Tällöin Haapaniemen voimalaitosten CO2-päästöt olisivat noin 324 000 t vuodessa. Kyseisellä päästötasolla Kuopion ilmastopoliittisen ohjelman – 40 % päästötavoite vuoteen 1990 verrattuna on mahdollista saavuttaa jo vuonna 2014.
Sovittiin, että Marjo Niittynen laatii taulukon energiantuotantoskenaarioon tarvittavista tiedoista (vuodet, energia, polttoaineet, päästöt). Kuopion Energia täyttää taulukossa kysytyt tiedot tämänhetkisten arvioiden mukaan. Taulukossa on arviot mm. keskimääräisistä odotettavista polttoaineosuuksista ja -määristä, teoreettinen maksimi biopolttoaineille – vaihtoehto sekä näitä koskevat päästötiedot. Kuopion Energia toimittaa URGENCHE-hankkeelle arvion/mallin siitä, miten muutokset energiankulutuksessa (Haapaniemellä tuotettu sähkö/lämpö) tulee huomioida koko kaupungin CO2-päästöjä laskettaessa.
Hajautettu energiantuotanto
THL:lla keskustellaan vielä laaditaanko tällainen skenaario vai ei. Ajatuksena olisi laskea, millainen muutos Haapaniemen energiantuotannossa (ja päästöissä) tapahtuisi, jos XX % Kuopion pien- ja kerrostalojen lämmityksestä siirtyisi kiinteistökohtaiseen lämmitykseen biopolttoaineilla. Lisäksi arvioidaan millainen vaikutus tällä olisi koko kaupungin päästöihin (CO2 ja hiukkaset). Jos päästötiedot aiotaan saada myös paikkatietona (leviämismalli), tästä pitää tehdä nopea päätös, että tulokset saadaan Thessalonikin kokoukseen huhtikuussa.
Hajautettua energiantuotantoa ei tutkita aluelämmön (esim. pienen alueen hakekattilat) käytön näkökulmasta sen epärealistisuuden vuoksi.
Laajamittainen siirtyminen uusiutuviin energialähteisiin
Selvitetään, miten laajamittainen (=jokin arvio) siirtyminen maalämmön, aurinkoenergian tai tuulivoiman käyttöön vaikuttaisi Haapaniemen lämpökuorman tarpeeseen ja päästöihin sekä koko kaupungin päästöihin. Asiaa selvitetään ja tehdään laskennallinen arvio.
Liikenne ja maankäyttö
- Aika: to 29.11.2012 klo 09:00-10:45
- Paikka: Kokoushuone 4, Valtuustovirastotalo, Suokatu 42, 70110 KUOPIO
Läsnä:
- Marjo Niittynen, Terveyden ja Hyvinvoinnin laitos
- Arja Asikainen, Terveyden ja Hyvinvoinnin laitos
- Jouni Tuomisto, Terveyden ja Hyvinvoinnin laitos
- Tapio Kettunen, Kuopion kaupunki, Energiatehokkuushanke
- Erkki Pärjälä, Kuopion kaupunki, Ympäristönsuojelutoimisto
- Mikko Savastola, Kuopion kaupunki, Ympäristönsuojelutoimisto
- Mervi Heiskanen, Kuopion kaupunki, Kunnallistekniikan suunnittelu
- Pauli Sonninen, Kuopion kaupunki, Asemakaavoitus
- Kaisa-Mari Immonen, Kuopion kaupunki, Strateginen maankäytön suunnittelu
Asiat:
Kokouksessa esiteltiin URGENCHE- hanke ja sen taustat ja tavoitteet. Tämän jälkeen keskusteltiin liikenteen ja maankäytön päästövähennysmahdollisuuksista Kuopiossa sekä päätettiin mitä asioita liikennettä ja maankäyttöä koskevaan päästövähennysskenaarioon otetaan mukaan.
Maankäyttö ja liikennesuunnittelu: Kaisa-Mari Immonen selvittää onko loppuvuoden aikana mielekästä tilata päivitystä ennusteelle liikenneverkosta (2020/2025/2030?). Jos tämä tehdään, siitä saadaan URGENCHE-hankkeeseen ennuste liikennemääristä ja sitä kautta leviämismallien avulla arviot ilmansaasteista (PM-pitoisuudet), melusta ja näille altistumisesta. Tämä vastaisi varsin hyvin työpaketissa WP 5 Urban Traffic esitettyihin datapyyntöihin. Ympäristönsuojelutoimistolla on mahdollisuus rahoittaa työtä tämän vuoden budjetista, mutta päätös asiassa pitää tehdä nopeasti.
Liikenteen biopolttoaineet: Jos liikenneverkon päivitystä ei tehdä, varasuunnitelma on se, että arvioidaan liikenteen biopolttoaineiden käytön lisäämisen vaikutuksia (muutokset liikenteen päästöissä -> altistuminen). Tämä on liikenneverkon ennusteen päivittämiseen verrattuna teoreettisempi vaihtoehto.
Raideliikenne: Todettiin, että Kuopiossa on aika vähän asukkaita raideliikenteen lähettyvillä. Näillä näkymin raideliikenne ei näytä kannattavalta, vaikka asutusta tulevaisuudessa keskitettäisiinkin radan lähelle. Kuopiosta pohjoiseen on vain yksi raide, mikä myös vaikeuttaa paikallisen raideliikenteen aloittamista. Mahdollisuus paikallisen raideliikenteen aloittamiseen pidetään kuitenkin jollain tasolla mukana kaupungin suunnittelussa. Kaupunki ei kuitenkaan lähde tässä vaiheessa rahoittamaan aiheeseen liittyviä hankkeita.
Yleistä/muuta: Todettiin, että kaavoitusta ja liikennesuunnittelua on totuttu tekemään pitkälti yksityisautoilun ehdoilla. Tarvitaan kulttuurin muutosta, että pyöräilyn, kävelyn ja joukkoliikenteen asiaa huomioitaisiin suunnittelussa nykyistä voimakkaammin. Toisaalta esimerkiksi uusi kävelykeskusta tulee edistämään kävelyä ja pyöräilyä.
Maankäyttöön ja liikenteeseen liittyen on eri tahoilla ajatuksia ja suunnitelmia, jotka eivät välttämättä ole lähellä toteutumista, mutta jotka voivat olla URGENCHEN kannalta mielenkiintoisia. Näiden osalta voidaan URGENCHE-hankkeessa tehdä arviointeja, jotka antavat tietoa toteuttamisen seurauksista tai toteutusvaihtoehtojen eroista.
Joukkoliikenne kilpailutetaan huomattavasti nykyistä laajemmin ensi vuoden aikana. Kuopiossa joukkoliikenteen käyttäjämäärissä on ollut 4-5 % kasvua tänä vuonna.
Rakennusten energiatehokkuus
- Aika: ti 4.12.2012 klo 13:00–14:45
- Paikka: Kokoushuone 4, Valtuustovirastotalo, Suokatu 42, 70110 KUOPIO
Läsnä:
- Marjo Niittynen, Terveyden ja Hyvinvoinnin Laitos
- Arja Asikainen, Terveyden ja Hyvinvoinnin Laitos
- Jouni Tuomisto, Terveyden ja Hyvinvoinnin Laitos
- Virpi Kollanus, Terveyden ja Hyvinvoinnin Laitos
- Matti Jantunen, Terveyden ja Hyvinvoinnin Laitos
- Tapio Kettunen, Kuopion kaupunki, Energiatehokkuushanke
- Erkki Pärjälä, Kuopion kaupunki, Ympäristönsuojelutoimisto
- Mikko Savastola, Kuopion kaupunki, Ympäristönsuojelutoimisto
- Jorma Takkinen, Kuopion Energia
Asiat:
Kokouksessa esiteltiin URGENCHE- hanke ja sen taustat ja tavoitteet. Tämän jälkeen keskusteltiin rakennusten energiatehokkuuteen liittyvistä päästövähennysmahdollisuuksista Kuopiossa sekä päätettiin miten edetään tätä asiakokonaisuutta koskevan päästövähennysskenaarion kanssa.
Rakennusmääräykset Uudet rakennusmääräykset ovat sen verran tiukkoja, että Kuopiossa ei ole mahdollista eikä mielekästä velvoittaa toimimaan näitä määräyksiä tiukemmin.
Rakennuskanta ja energiankulutustiedot
Selvitetään seuraavat asiat kaupungin rakennusvalvonnasta:
- 1. Paljonko rakennuskannasta poistuu rakennuksia vuosittain (eri rakennustyypit)?
- 2. Paljonko tulee uutta rakennuskantaa vuosittain?
- 3. Kuinka paljon nykyisestä rakennuskannasta peruskorjataan vuosittain?
- Hankkeen hallussa olevista tietokannoista (energiankulutukset, rakennuskanta) yritetään laatia muutaman kymmenen kiinteistön kattava otos, jossa saadaan yhdistettyä erilaisten ja eri-ikäisten rakennustyyppien energiankulutukset yksittäisiin rakennuksiin. Mikäli tämä ei onnistu riittävän hyvin, keskustellaan Kuopion Energian kanssa mahdollisuudesta saada tarkempia tietoja kiinteistöjen energiankulutuksesta niin, että yksittäisten asiakkaiden tietoja ei tarvitse paljastaa.
- Erilaisten rakennusten energiankulutuksista ennen ja jälkeen peruskorjauksen saadaan tietoa Kuopion kaupungin tilakeskuksesta.
- Näiden tietojen (rakennuskannan muutokset, kiinteistöjen energiankulutukset, peruskorjausten vaikutus) avulla voidaan kehittää hankkeen mallia ja saada arvioita rakennusten energiatehokkuuden mahdollisuuksista päästövähennyksissä sekä energiatehokkuuden parantamisen vaikutuksista muihin hankkeessa mukana oleviin asioihin.
Muuta
- Kiinteistöjen energiatehokkuuden parantamisessa on selkeää potentiaalia koulutuksen ja tiedottamisen kautta. Isännöitsijöiden, kiinteistönhoitajien ja kiinteistöjen käyttäjien on mahdollista vähentää kiinteistöjen energiankulutusta tekemällä järkeviä hankintoja, kunnossapidon ja säätöjen avulla sekä oikeiden käyttötottumusten kautta. Näiden avulla arvioidaan saavutettavan keskimäärin 10 % vähennys energiankulutuksessa.
- Energiantuotannon (keskitetty lämmön ja sähkön yhteistuotanto) ja Kuopion kaupungin CO2-taseen näkökulmasta sähkönkulutukseen liittyvät energiatehokkuustoimet ovat ensiarvoisen tärkeitä erityisesti niissä kiinteistöissä, jotka ovat kaukolämmityksessä.