Difference between revisions of "Climate change policies and health in Kuopio"

From Testiwiki
Jump to: navigation, search
(Model version 2: updated and runs to the end. Results are not correct)
(Model version 2)
Line 80: Line 80:
 
BS <- 24 # base_size = font sixe in graphs
 
BS <- 24 # base_size = font sixe in graphs
 
figstofile <- FALSE
 
figstofile <- FALSE
 
############################## Case-sepecific data and submodels
 
  
 
obstime <- Ovariable("obstime", data = data.frame(Obsyear = factor(seq(1920, 2050, 10), ordered = TRUE), Result = 1))
 
obstime <- Ovariable("obstime", data = data.frame(Obsyear = factor(seq(1920, 2050, 10), ordered = TRUE), Result = 1))
Line 116: Line 114:
 
forgetDecisions()
 
forgetDecisions()
  
############################ City-specific data
+
openv$fuelShares
 +
 
 +
############################ IMPORT DATA AND MODELS
  
####!------------------------------------------------
 
 
objects.latest("Op_en5417", code_name = "initiate") # [[Population of Kuopio]]  
 
objects.latest("Op_en5417", code_name = "initiate") # [[Population of Kuopio]]  
 
# population: City_area
 
# population: City_area
Line 135: Line 134:
 
#################### Energy use (needed for buildings submodel)
 
#################### Energy use (needed for buildings submodel)
  
####!------------------------------------------------
 
 
objects.latest("Op_en5488", code_name = "initiate") # [[Energy use of buildings]]  
 
objects.latest("Op_en5488", code_name = "initiate") # [[Energy use of buildings]]  
 
# energyUse: Building, Heating
 
# energyUse: Building, Heating
 
# efficiencyShares: Efficiency, Constructed
 
# efficiencyShares: Efficiency, Constructed
 
# renovationRatio: Efficiency, Building2, Renovation
 
# renovationRatio: Efficiency, Building2, Renovation
####i------------------------------------------------
 
  
 
###################### Actual building model
 
###################### Actual building model
 
# The building stock is measured as m^2 floor area.
 
# The building stock is measured as m^2 floor area.
  
####!------------------------------------------------
 
 
objects.latest("Op_en6289", code_name = "buildingstest") # [[Building model]] # Generic building model.
 
objects.latest("Op_en6289", code_name = "buildingstest") # [[Building model]] # Generic building model.
 
# buildings: formula-based
 
# buildings: formula-based
####i------------------------------------------------
+
 
 +
###################### Energy and emissions
 +
 
 +
objects.latest("Op_en5488", code_name = "energyUseAnnual") # [[Energy use of buildings]] energyUse
 +
objects.latest("Op_en2791", code_name = "emissionstest") # [[Emission factors for burning processes]]
 +
objects.latest("Op_en2791", code_name = "emissionFactors") # [[Emission factors for burning processes]]
 +
objects.latest("Op_en7328", code_name = "emissionLocations") # [[Kuopio energy production]]
 +
objects.latest("Op_en7328", code_name = "fuelShares") # [[Kuopio energy production]]
 +
 
 +
openv$fuelShares
 +
 
 +
## Exposure
 +
 
 +
objects.latest("Op_en5813", code_name = "exposure") # [[Intake fractions of PM]] uses Humbert iF as default.
 +
 
 +
###################### Health assessment
 +
 
 +
objects.latest('Op_en2261', code_name = 'totcases') # [[Health impact assessment]] totcases and dependencies.
 +
objects.latest('Op_en5461', code_name = 'DALYs') # [[Climate change policies and health in Kuopio]] DALYs, DW, L
 +
 
 +
frexposed <- 1 # fraction of population that is exposed
 +
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)
 +
 
 +
##################### CALCULATIONS
 +
 
 
renovationRate <- EvalOutput(renovationRate) * 10 # Rates for 10-year periods
 
renovationRate <- EvalOutput(renovationRate) * 10 # Rates for 10-year periods
 
renovationRate@marginal[colnames(renovationRate@output) == "Age"] <- TRUE
 
renovationRate@marginal[colnames(renovationRate@output) == "Age"] <- TRUE
Line 157: Line 178:
 
changeBuildings <- EvalOutput(changeBuildings)
 
changeBuildings <- EvalOutput(changeBuildings)
 
changeBuildings <- oapply(changeBuildings, cols = c("City_area"), FUN = sum)
 
changeBuildings <- oapply(changeBuildings, cols = c("City_area"), FUN = sum)
 +
 +
openv$fuelShares
  
 
buildings <- EvalOutput(buildings)
 
buildings <- EvalOutput(buildings)
Line 171: Line 194:
 
ordered = TRUE
 
ordered = TRUE
 
)
 
)
 +
 +
openv$fuelShares
 +
 +
fuelShares <- CheckDecisions(EvalOutput(fuelShares)) # Why do we need to CheckDecisions manually?
 +
 +
openv$fuelShares
 +
 +
energyUse <- EvalOutput(energyUse)
 +
fuelUse <- energyUse * 1E-3 *3600 # kWh -> MJ
 +
 +
emissions <- EvalOutput(emissions)
 +
emissions@output$Time <- as.numeric(as.character(emissions@output$Time))
 +
 +
population <- 1E+5 # stockBuildings is using another population to divide floor area into City areas.
 +
 +
exposure <- EvalOutput(exposure)
 +
 +
totcases <- EvalOutput(totcases)
 +
totcases@output$Time <- as.numeric(as.character(totcases@output$Time))
 +
totcases <- oapply(totcases, cols = c("Age", "Sex"), FUN = sum)
 +
 +
DALYs <- EvalOutput(DALYs)
 +
 +
###################### GRAPHS AND OUTPUTS
  
 
bui <- oapply(buildings * 1E-6, cols = c("City_area", "buildingsSource"), FUN = sum)@output
 
bui <- oapply(buildings * 1E-6, cols = c("City_area", "buildingsSource"), FUN = sum)@output
Line 212: Line 259:
 
)
 
)
  
###################### Energy and emissions
 
 
####!------------------------------------------------
 
objects.latest("Op_en5488", code_name = "energyUseAnnual") # [[Energy use of buildings]] energyUse
 
objects.latest("Op_en2791", code_name = "emissionstest") # [[Emission factors for burning processes]]
 
objects.latest("Op_en2791", code_name = "emissionFactors") # [[Emission factors for burning processes]]
 
objects.latest("Op_en7328", code_name = "emissionLocations") # [[Kuopio energy production]]
 
objects.latest("Op_en7328", code_name = "fuelShares") # [[Kuopio energy production]]
 
####i------------------------------------------------
 
 
fuelShares <- EvalOutput(fuelShares)
 
energyUse <- EvalOutput(energyUse)
 
fuelUse <- energyUse * 1E-3 *3600 # kWh -> MJ
 
 
## Exposure
 
 
objects.latest("Op_en5813", code_name = "exposure") # [[Intake fractions of PM]] uses Humbert iF as default.
 
#objects.latest("Op_en5813", code_name = "initiate") # [[Intake fractions of PM]], iF
 
 
emissions <- EvalOutput(emissions)
 
emissions@output$Time <- as.numeric(as.character(emissions@output$Time))
 
 
# Plot energy need and emissions
 
  
 
ggplot(subset(energyUse@output, EfficiencyPolicy == "BAU"), aes(x = Time, weight = energyUseResult * 1E-6, fill = Heating)) + geom_bar(binwidth = 5) +
 
ggplot(subset(energyUse@output, EfficiencyPolicy == "BAU"), aes(x = Time, weight = energyUseResult * 1E-6, fill = Heating)) + geom_bar(binwidth = 5) +
Line 248: Line 272:
 
emis <- truncateIndex(emissions, cols = "Emission_site", bins = 5)@output
 
emis <- truncateIndex(emissions, cols = "Emission_site", bins = 5)@output
  
#ggplot(subset(emis, EfficiencyPolicy == "BAU" & RenovationPolicy == "BAU"), aes(x = Time, weight = emissionsResult, fill = Fuel)) + geom_bar(binwidth = 5) +
+
ggplot(subset(emis, EfficiencyPolicy == "BAU" & RenovationPolicy == "BAU"), aes(x = Time, weight = emissionsResult, fill = Fuel)) + geom_bar(binwidth = 5) +
# facet_grid(Pollutant ~ FuelPolicy, scale = "free_y") + theme_gray(base_size = BS) +
+
facet_grid(Pollutant ~ FuelPolicy, scale = "free_y") + theme_gray(base_size = BS) +
# labs(
+
labs(
# title = "Emissions from heating in Kuopio",
+
title = "Emissions from heating in Kuopio",
# x = "Time",
+
x = "Time",
# y = "Emissions (ton /a)"
+
y = "Emissions (ton /a)"
# )
+
)
  
 
if(figstofile) ggsave("Figure5.eps", width = 8, height = 7)
 
if(figstofile) ggsave("Figure5.eps", width = 8, height = 7)
Line 266: Line 290:
 
)
 
)
  
#ggplot(subset(emis, EfficiencyPolicy == "BAU" & RenovationPolicy == "BAU"), aes(x = Time, weight = emissionsResult, fill = Fuel)) + geom_bar(binwidth = 5) +
+
ggplot(subset(emis, EfficiencyPolicy == "BAU" & RenovationPolicy == "BAU"), aes(x = Time, weight = emissionsResult, fill = Fuel)) + geom_bar(binwidth = 5) +
# facet_grid(Pollutant ~ ., scale = "free_y") + theme_gray(base_size = BS) +#FuelPolicy
+
facet_grid(Pollutant ~ ., scale = "free_y") + theme_gray(base_size = BS) +#FuelPolicy
# labs(
+
labs(
# title = "Emissions from heating in Kuopio",
+
title = "Emissions from heating in Kuopio",
# x = "Time",
+
x = "Time",
# y = "Emissions (ton /a)"
+
y = "Emissions (ton /a)"
# )
+
)
  
ggplot(subset(emis, EfficiencyPolicy == "BAU"), aes(x = Time, weight = emissionsResult, fill = Emission_site)) + geom_bar(binwidth = 5) +# & FuelPolicy == "BAU"
+
ggplot(subset(emis, EfficiencyPolicy == "BAU" & FuelPolicy == "BAU"), aes(x = Time, weight = emissionsResult, fill = Emission_site)) + geom_bar(binwidth = 5) +
 
facet_grid(Pollutant ~ RenovationPolicy, scale = "free_y") + theme_gray(base_size = BS) +
 
facet_grid(Pollutant ~ RenovationPolicy, scale = "free_y") + theme_gray(base_size = BS) +
 
labs(
 
labs(
Line 282: Line 306:
 
)
 
)
  
ggplot(subset(emis, EfficiencyPolicy == "BAU"), aes(x = Time, weight = emissionsResult, fill = Fuel)) + geom_bar(binwidth = 5) +# & FuelPolicy == "BAU"
+
ggplot(subset(emis, EfficiencyPolicy == "BAU" & FuelPolicy == "BAU"), aes(x = Time, weight = emissionsResult, fill = Fuel)) + geom_bar(binwidth = 5) +
 
facet_grid(Pollutant ~ RenovationPolicy, scale = "free_y") + theme_gray(base_size = BS) +
 
facet_grid(Pollutant ~ RenovationPolicy, scale = "free_y") + theme_gray(base_size = BS) +
 
labs(
 
labs(
Line 290: Line 314:
 
)
 
)
  
###################### Health assessment
+
ggplot(subset(exposure@output, RenovationPolicy == "BAU" & EfficiencyPolicy == "BAU" & FuelPolicy == "BAU"), aes(x = Time, weight = exposureResult, fill = Heating)) +  
 
+
geom_bar(binwidth = 5) + facet_grid(Area ~ Emission_height) + theme_gray(base_size = BS) +
####!------------------------------------------------
+
labs(
#objects.latest('Op_en2261', code_name = 'initiate') # [[Health impact assessment]] dose, RR, totcases.
+
title = "Exposure to PM2.5 from heating in Kuopio",
#objects.latest('Op_en5917', code_name = 'initiate') # [[Disease risk]] disincidence
+
x = "Time",
#directs <- tidy(opbase.data("Op_en5461", subset = "Direct inputs"), direction = "wide") # [[Climate change policies and health in Kuopio]]
+
y = "Average PM2.5 (µg/m3)"
objects.latest('Op_en2261', code_name = 'totcases') # [[Health impact assessment]] totcases and dependencies.
+
)
objects.latest('Op_en5461', code_name = 'DALYs') # [[Climate change policies and health in Kuopio]] DALYs, DW, L
 
####i------------------------------------------------
 
 
 
#colnames(directs) <- gsub(" ", "_", colnames(directs))
 
 
 
### Use these population and iF values in health impact assessment. Why?
 
 
 
frexposed <- 1 # fraction of population that is exposed
 
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)
 
 
 
population <- 1E+5
 
 
 
exposure <- EvalOutput(exposure, verbose = TRUE)
 
 
 
#ggplot(subset(exposure@output, RenovationPolicy == "BAU" & EfficiencyPolicy == "BAU" & FuelPolicy == "BAU"), aes(x = Time, weight = exposureResult, fill = Heating)) +  
 
# geom_bar(binwidth = 5) + facet_grid(Area ~ Emission_height) + theme_gray(base_size = BS) +
 
# labs(
 
# title = "Exposure to PM2.5 from heating in Kuopio",
 
# x = "Time",
 
# y = "Average PM2.5 (µg/m3)"
 
# )
 
  
 
exposure@output <- exposure@output[exposure@output$Area == "Average" , ] # Kuopio is an average area,
 
exposure@output <- exposure@output[exposure@output$Area == "Average" , ] # Kuopio is an average area,
 
# rather than rural or urban.
 
# rather than rural or urban.
  
#ggplot(subset(exposure@output, EfficiencyPolicy == "BAU"), aes(x = Time, weight = exposureResult, fill = Heating)) + geom_bar(binwidth = 5) + facet_grid(FuelPolicy ~ RenovationPolicy) + theme_gray(base_size = BS) +
+
ggplot(subset(exposure@output, EfficiencyPolicy == "BAU"), aes(x = Time, weight = exposureResult, fill = Heating)) + geom_bar(binwidth = 5) + facet_grid(FuelPolicy ~ RenovationPolicy) + theme_gray(base_size = BS) +
# labs(
+
labs(
# title = "Exposure to PM2.5 from heating in Kuopio",
+
title = "Exposure to PM2.5 from heating in Kuopio",
# x = "Time",
+
x = "Time",
# y = "Average PM2.5 (µg/m3)"
+
y = "Average PM2.5 (µg/m3)"
# )
+
)
  
totcases <- EvalOutput(totcases)
+
ggplot(subset(totcases@output, EfficiencyPolicy == "BAU" & FuelPolicy == "BAU"), aes(x = Time, weight = totcasesResult, fill = Heating))+geom_bar(binwidth = 5) +  
totcases@output$Time <- as.numeric(as.character(totcases@output$Time))
+
facet_grid(Response ~ RenovationPolicy) +
totcases <- oapply(totcases, cols = c("Age", "Sex"), FUN = sum)
+
theme_gray(base_size = BS) +
 
+
labs(
DALYs <- EvalOutput(DALYs)
+
title = "Health effects of PM2.5 from heating in Kuopio",
 
+
x = "Time",
#ggplot(subset(totcases@output, EfficiencyPolicy == "BAU" & FuelPolicy == "BAU"), aes(x = Time, weight = totcasesResult, fill = Heating))+geom_bar(binwidth = 5) +  
+
y = "Health effects (deaths /a)"
# facet_grid(Response ~ RenovationPolicy) +
+
)
# theme_gray(base_size = BS) +
 
# labs(
 
# title = "Health effects of PM2.5 from heating in Kuopio",
 
# x = "Time",
 
# y = "Health effects (deaths /a)"
 
# )
 
 
 
#DW <- Ovariable("DW", data = data.frame(directs["Response"], Result = directs$DW))
 
#L <- Ovariable("L", data = data.frame(directs["Response"], Result = directs$L))
 
 
 
#DALYs <- totcases * DW * L
 
  
 
cat("Total DALYs/a by different combinations of policy options.\n")
 
cat("Total DALYs/a by different combinations of policy options.\n")
Line 358: Line 349:
 
)
 
)
  
#oprint(oapply(temp, INDEX = c("Time", "EfficiencyPolicy", "RenovationPolicy", "FuelPolicy"), FUN = sum))
+
oprint(oapply(temp, INDEX = c("Time", "EfficiencyPolicy", "RenovationPolicy", "FuelPolicy"), FUN = sum))
  
 
ggplot(subset(DALYs@output, Response == "Total mortality"), aes(x = Time, weight = DALYsResult, fill = Heating))+geom_bar(binwidth = 5) + #FuelPolicy == "BAU" &  
 
ggplot(subset(DALYs@output, Response == "Total mortality"), aes(x = Time, weight = DALYsResult, fill = Heating))+geom_bar(binwidth = 5) + #FuelPolicy == "BAU" &  
Line 411: Line 402:
 
)
 
)
 
}
 
}
 +
 
</rcode>
 
</rcode>
  

Revision as of 13:58, 21 July 2015


Main message:
Question:

What are the most beneficial ways from public health point of view to reduce GHG emissions in Kuopio?

Answer:

The target of 40 % GHG reduction seems realistic due to reforms in Haapaniemi power plant, assuming that GHG emissions for wood-based fuel is 0. Life-cycle impacts of the wood-based fuel have not yet been estimated.


{{#display_map: 62.900223, 27.637482, Kuopio | zoom = 11 }}

Scope

Question

What are potential climate policies that reach the greenhouse emission targets in the city of Kuopio for years 2010-2030? What are their effects on health and well-being, and what recommendations can be given based on this? The national greenhouse emission target is to reduce greenhouse gas emissions by 20 % between 1990 and 2020; the city of Kuopio has its own, more ambitious target of 40 % for the same time period.

Answer

Conclusions

The target of 40 % GHG reduction seems realistic due to reforms in Haapaniemi power plant, assuming that GHG emissions for wood-based fuel is 0. Life-cycle impacts of the wood-based fuel have not yet been estimated.

Results

Model version 2

This model version was used to produce the corrected manuscript in July 2015.

+ Show code

Model version 1

This model version was used to produce the submitted manuscript in spring 2015.
Calculate building stock into the future
  • The dynamics is calculated by adding building floor area at time points greater than construction year, and by subtracting when time point is greater than demolition year. This is done by building category, not individually.
  • Also the renovation dynamics is built using event years: at an event, a certain amount of floor area is moved from one energy efficiency category to another.
  • Full data are stored in the ovariables. Before evaluating, extra columns and rows are removed. The first part of the code is about this.

+ Show code

Rationale

Error creating thumbnail: Unable to save thumbnail to destination
Causal diagram of the building model.

Dependencies

Decisions

  • Efficiency policy (index EfficiencyPolicy): Relates to the shares of efficiency types when new buildings are built (ovariable efficiencyShares).
  • Biofuel policy (index FuelPolicy): Increase the share of biofuels in the Haapaniemi power plant (ovariable fuelShares).
  • Renovation policy (index RenovationPolicy): Existing buildings are renovated (typically after 25 years of age) for better energy efficiency. Different renovations produce different results (ovariables renovationRate, renovationShares).
    • BAU: Default renovation rate is 3 % /a if the age of the building is >= 25 a. For renovation shares, see Building stock in Kuopio#Renovations.
    • Active renovation: The renovation rate of all renovation types is 4.5 % /a.
    • Effective renovation: The renovation rate is 3 % /a as in BAU, but all renovations are the most effective. i.e. sheath reforms.



Direct inputs

Direct inputs(-)
ObsExposure agentResponseCasesDWLDescription
1PM2.5Total mortality877111Actually "Mortality (all cause)". In 2009 for Pohjois-Savo area 1090 / 100 000 from death cause registry.
2PM2.5Work loss days (WLDs)3231350.020.003
3PM2.5Restricted activity days (RADs)318670.070.0032.1 million in whole Finland
4PM2.5Infant mortality3181<1 year old 2009 data for Pohjois-Savo area 244 / 100 000 from death registry. In 2009 in Kuopio 1110 <1 year olds.
5PM2.5COPD3390.09915Actually "Chronic bronchitis (>15 year olds)". Kelasto, includes astma cases too
6PM2.5Cardiovascular hospital admissions (number)21090.2530.01721424 in year 2010 in Kuopio hospital. Hospital serves area with 817166 inhabitats.
7PM2.5Respiratory hospital admissions11500.0430.02In 2007 1429.55 hospital discharges for respiratory disease / 100 000 in whole Finland. http://data.euro.who.int/hfadb/
8PM2.5Asthma medication use (children aged 5-14)620.04315Kelasto
9Mold/dampnessAsthma development (>15 year olds)2520.04315Kelasto-database
10Mold/dampnessAsthma development (5-14 year olds)620.04315Kelasto-database
11NoiseHighly annoyed0.021
12NoiseSleep disturbance0.071
13NoiseMyocardial infarction12890.4390.01966313101 cases in Kuopio university Hospital in year 2010. Hospital serves area with 817166 inhabitats.
14ECCardiovascular mortality3660.0430.02In 2009 for Pohjois-Savo area 455 / 100 000 from death cause registry.
15Cardiopulmonary111Guesswork. The same as total mortality
16Lung cancer111Guesswork. The same as total mortality.

+ Show code

Specific actions - real and potential

Error creating thumbnail: Unable to save thumbnail to destination
The plume of Haapaniemi power plant in January, 2014.
Error creating thumbnail: Unable to save thumbnail to destination
The Iloharju heat plant is only used when the heat demand is high, i.e. at temperatures below ca. -15 °C. January, 2014.
  • Energy production
    • New power plant unit in Haapaniemi: ability to use significantly more biomass in the production of district heat (2014)
    • Enhancement of dispersed energy production with biofuels
    • Wide scale transition to renewable energy sources in heating
  • Building stock
    • Energy efficiency of buildings is increased: new stricter building regulations in Finland (2/2013)
    • Education to building owners and managers: semblance of best practicies in heating and other use of energy. Possible reduction in energy use of building stock is about 10%, and mere beneficial health effects are expected.
  • Land use and transport
    • If possible, PM emissions and noise are calculated based on updated version of Kuopio´s traffic network
    • Alternatively, the effect of increased use of biofuels on GHG and CO2 emissions is evaluated.
    • Possibilities of rail traffic in Kuopio
  • Other...

Indicators

  • Cardiovascular mortality
  • Pulmonar mortality
  • Well-being...

An archived version was planning to use Weighted product model to summarise results, but the idea was dropped.

  • Stakeholders: City of Kuopio, Citizens, Budget office of Kuopio

Assessment-specific data

Received

  • Building stock data
    • Building registry
    • Use of electricity by building type or type of activity
    • Use of district heat by contract
    • Amount of building stock renovated per year
    • Amount of new building stock per year during 2010-2012
    • Energy consumption in some of city´s own buildings before and after renovation
  • Energy production
    • Fuels and emissions of Haapaniemi CHP plant
  • Traffic
    • Regional plan on public transport

To be gathered

  • Updated traffic network model?
  • Estimates of the amount, area, volume and energy class of new buildings during next years (about 2014-2020)

See also

Urgenche research project 2011 - 2014: city-level climate change mitigation
Urgenche pages

Urgenche main page · Category:Urgenche · Urgenche project page (password-protected)

Relevant data
Building stock data in Urgenche‎ · Building regulations in Finland · Concentration-response to PM2.5 · Emission factors for burning processes · ERF of indoor dampness on respiratory health effects · ERF of several environmental pollutions · General criteria for land use · Indoor environment quality (IEQ) factors · Intake fractions of PM · Land use in Urgenche · Land use and boundary in Urgenche · Energy use of buildings

Relevant methods
Building model · Energy balance · Health impact assessment · Opasnet map · Help:Drawing graphs · OpasnetUtils‎ · Recommended R functions‎ · Using summary tables‎

City Kuopio
Climate change policies and health in Kuopio (assessment) · Climate change policies in Kuopio (plausible city-level climate policies) · Health impacts of energy consumption in Kuopio · Building stock in Kuopio · Cost curves for energy (prioritization of options) · Energy balance in Kuopio (energy data) · Energy consumption and GHG emissions in Kuopio by sector · Energy consumption classes (categorisation) · Energy consumption of heating of buildings in Kuopio · Energy transformations (energy production and use processes) · Fuels used by Haapaniemi energy plant · Greenhouse gas emissions in Kuopio · Haapaniemi energy plant in Kuopio · Land use in Kuopio · Building data availability in Kuopio · Password-protected pages: File:Heat use in Kuopio.csv · Kuopio housing

City Basel
Buildings in Basel (password-protected)

Energy balances
Energy balance in Basel · Energy balance in Kuopio · Energy balance in Stuttgart · Energy balance in Suzhou


References


Keywords

Climate Change, Kuopio, Green house gas emissions, Health, Energy

Related files

<mfanonymousfilelist></mfanonymousfilelist>