Buildings in Basel: Difference between revisions

From Opasnet
Jump to navigation Jump to search
 
(14 intermediate revisions by the same user not shown)
Line 11: Line 11:


== Rationale ==
== Rationale ==
=== Data ===


Detailed data can be found from [[:heande:Buildings in Basel]]. This data is aggregated to the postal code level. The table uses Swiss Land Survey coordinates CH1903. [http://spatialreference.org/ref/epsg/21782/] [http://en.wikipedia.org/wiki/Swiss_coordinate_system] Use this code in the ova2spat function:
Detailed data can be found from [[:heande:Buildings in Basel]]. This data is aggregated to the postal code level. The table uses Swiss Land Survey coordinates CH1903. [http://spatialreference.org/ref/epsg/21782/] [http://en.wikipedia.org/wiki/Swiss_coordinate_system] Use this code in the ova2spat function:
  proj4string = "+init=epsg:21781"
  proj4string = "+init=epsg:21781"
==== Renovations ====
Estimates from Laura Perez and Stephan Trüeb, unibas.ch N:\YMAL\Projects\Urgenche\WP9 Basel\Energy_scenarios_Basel_update.docx
<t2b name='Fraction of houses renovated per year' index="Age" obs="Result" desc="Description" unit= "%">
0|0|Estimates from Laura Perez and Stephan Trüeb
20|0|Assumption Result applies to buildings older than the value in the Age column.
25|1|
30|1|
50|1|
100|1|
1000|1|
</t2b>
<t2b name='Popularity of renovation types' index='Renovation' obs='Fraction' desc='Description' unit='%'>
None|0|
Windows|65|
Technical systems|30|
Sheath reform|5|
General|0|
</t2b>
==== Emission locations ====
Where and how do the emissions of heating take place?
<t2b name='Emission locations' index='Heating,Emission site,Emission height' obs='Dummy' unit='-'>
District|4056|High|4056 is the postal code of the heat and power plant IWB, Hagenaustrasse 40/70 4056 Basel.
Long-distance heating|4056|High|
Electricity|4056|High|
Geothermal|4056|High|
Centrifuge, hydro-extractor|4056|High|
Heating oil|At site of consumption|Ground|
Wood|At site of consumption|Ground|
Gas|At site of consumption|Ground|
Coal|At site of consumption|Ground|
Solar heater/ collector|At site of consumption|Ground|
No energy source|At site of consumption|Ground|
Other sources|At site of consumption|Ground|
</t2b>


<t2b name="Locations of postal codes" index="Postal code,X" obs="Y" unit="epsg:21781">
<t2b name="Locations of postal codes" index="Postal code,X" obs="Y" unit="epsg:21781">
Line 30: Line 73:
</t2b>
</t2b>


=== Calculations ===
==== Fuel use by heating type ====


<rcode name="initiate" label="Initiate objects (developers only)"
Basel-specific data about connections between Heating and fuel usage. Generic data should be taken from [[Energy balance]].
library(OpasnetUtils)


objects.latest("Op_en5932", code_name = "initiate")
<t2b name='Fuel use by heating type' index='Heating,Burner,Fuel' obs='Fraction' desc='Description' unit='-'>
# [[Baseline building stock]] from Kuopio. Replace those that do not apply.
Long-distance heating|Large fluidized bed|Waste|0.5|The values are from Wikipedia for Basel. See below.
Long-distance heating|Large fluidized bed|Wood|0.1|
Long-distance heating|Large fluidized bed|Gas|0.4|
Long-distance heating|Grid|Electricity|0|This is geothermally-generated district heating. Note: the fraction you need electricity is ca. 0.3*the amount of geoheat produced.
Coal|Large fluidized bed|Coal|1|
</t2b>


buildingStock <- Ovariable("buildingStock", ddata = "Op_en7044.postal_code_areas")
For guesstimates about Long-distance heating (which is used in Basel), see [[Climate change policies in Basel]] and [[:de:IWB]].


levels(energyUse@data$Heating)[levels(energyUse@data$Heating) == ""] <- NA
<rcode name="fuelShares" label="Initiate fuelShares (developers only)" embed=1>
heatingShares <- 1 # Heating types of current buildings. Exists as part of buildingStock


# Energy efficiencies of current buildings
## This code is Op_en7044/fuelShares on page [[Buildings in Basel]]
efficiencies <- Ovariable("efficiencies", data = data.frame(Efficiency = "New", Result = 1))
construction <- Ovariable("construction", data = data.frame(
Postal.code = 4051,
Eventyear = 1871,
Building = "Residential buildings with subsidiary use",
Heating = "Electricity",
Result = 0
))


# Construction rate in the future. Only current time in Basel.
library(OpasnetUtils)
constructionAreas <- 1 #Places where construction takes place.
efficienciesNew <- 0 # Energy efficiencies in the future
buildingTypes <- 1 # A dummy variable to combine two different indices: Building and Building2
heatingSharesNew <- 0 # Heating types of the buildings in the future
renovationShares <- 0 # Fraction of renovation type when renovation is done. Renovations not considered.


# A dummy variable to combine time periods to numerical time axis.
fuelShares <- Ovariable("fuelShares",
eventyear <- 1
dependencies = data.frame(
 
Name = "fuelSharesgeneric",
################################
Ident = "Op_en5141/fuelSharesgeneric" # [[Energy balance]]
),
formula = function(...) {
dat <- EvalOutput(Ovariable("dat", ddata = "Op_en7044", subset = "Fuel use by heating type")) # [[Buildings in Basel]]
colnames(dat@output) <- gsub("[ \\.]", "_", colnames(dat@output))


out <- combine(fuelSharesgeneric, dat, name = "fuelShares")
out <- out * Ovariable(output = data.frame(Time = 1900:2080, Result = 1), marginal = c(TRUE, FALSE))
out <- unkeep(out, prevresults = TRUE, sources = TRUE)


return(out)
}
)


objects.store(fuelShares)
cat("Object fuelShares stored.\n")


</rcode>


=== Calculations ===


This code creates ovariables that are needed to run the [[Building model]] and its ovariables buildings and heatingEnergy.
<rcode name="initiate" label="Initiate objects (developers only)" embed=1>
library(OpasnetUtils)


#colnames(emis@output)[colnames(emis@output) == "Emission site"] <- "Emission.site"
# [[Buildings in Basel]], building stock, locations by postal codes (in A Swiss coordinate system)
#colnames(emis@output)[colnames(emis@output) == "Emission height"] <- "Emission.height"
stockBuildings <- Ovariable("stockBuildings", ddata = "Op_en7044.postal_code_areas")
#emis@output$Emission.site <- ifelse(
colnames(stockBuildings@data)[colnames(stockBuildings@data) == "Built"] <- "Time"
# emis@output$Emission.site == "At site of consumption",
colnames(stockBuildings@data)[colnames(stockBuildings@data) == "Postal code"] <- "City_area"
# levels(emis@output$City.area)[emis@output$City.area],
# levels(emis@output$Emission.site)[emis@output$Emission.site]
#)


###### Calculate health impacts
# Construction rate is assumed to be 2 % /a from the year 2010 building stock.


#bg.mort <- 45182 / 5203826 # same values as used in PILTTI unit: deaths per person-year
changeBuildings <- stockBuildings
changeBuildings@name <- "changeBuildings"
colnames(changeBuildings@data)[colnames(changeBuildings@data) == "stockBuildingsResult"] <- "changeBuildingsResult"
changeBuildings@data$changeBuildingsResult <- changeBuildings@data$changeBuildingsResult * 0.02
changeBuildings@data$Time <- NULL
changeBuildings@data <- merge(changeBuildings@data, data.frame(Time = 2015 + 0:7 * 5))


#erf <- Ovariable("erf", data = data.frame(Pollutant = "PM2.5", Result = 0.0097))  
# Geolocations of the buildings for emission calculations. OLD VERSION
# J. T. Tuomisto, A. Wilson, et al. Uncertainty in mortality response to airborne fine particulate matter... 2008
# emissionLocations <- Ovariable("emissionLocations", ddata = "Op_en7044.locations_of_postal_codes")
# unit: m^3 /ug
# colnames(emissionLocations@data)[colnames(emissionLocations@data) == "emissionLocationsResult"] <- "Y"
# emissionLocations@data$emissionLocationsResult <- 1


#health <- (emis * 1E+6 /365 / 24 / 3600) * iF / (20 / 24 / 3600) * (erf * 1E+6) * bg.mort
emissionLocations <- Ovariable("emissionLocations", ddata = "Op_en7044", subset = "Emission locations")  
colnames(emissionLocations@data) <- gsub("[ \\.]", "_", colnames(emissionLocations@data))
emissionLocations@data$emissionLocationsResult <- 1


# emis is in ton /a
heatingShares <- 1 # This is already in the Basel data.
# iF = conc (g /m3) * pop (#) * BR (m3 /s) / emis (g /s) => conc = iF * emis / pop / BR
# HIA = conc * erf * pop * backgroundrisk = emis (g /s) * iF / BR (m3 /s) * erf (m3 /g) * backgroundrisk


renovationRate <- Ovariable('renovationRate',
dependencies = data.frame(Name = "dummy"),
formula = function(...) {
temp <- tidy(opbase.data('Op_en7044', subset = 'Fraction of houses renovated per year'))
temp$Age <- round(as.numeric(as.character(temp$Age)))
out <- as.data.frame(approx(
temp$Age,
temp$Result,
n = (max(temp$Age) - min(temp$Age) + 1),
method = "constant"
))
colnames(out) <- c("Age", "renovationRateResult")
out$renovationRateResult <- out$renovationRateResult / 100
out <- Ovariable("renovationRate", output = out, marginal = c(TRUE, FALSE))
return(out)
}
)


### Impact graphs
renovationShares <- Ovariable("renovationShares",
dependencies = data.frame(Name = "dummy"),
formula = function(...) {
out <- Ovariable("raw", ddata = 'Op_en7044', subset = 'Popularity of renovation types')
out <- findrest((out), cols = "Renovation", total = 100) / 100


BS <- 18
renovationyear <- Ovariable("renovationyear", data = data.frame(
Obsyear = factor(c(2020, 2030, 2040, 2050)),
Result = 1
))


ggplot(buildings@output) + geom_bar() + theme_gray(base_size = BS) +
out <- out * renovationyear # renovation shares repeated for every potential renovation year.
aes(x = Building, weight = buildingsResult/1000000, fill = Heating) + labs(y = "Floor area (M m2)", title = "Building impacts of renovation policy") + coord_flip() # + facet_grid(. ~ RenovationPolicy)


ggplot(heatingEnergy@output) + geom_bar() + theme_gray(base_size = BS) + labs(title = "Energy impacts of renovation policy") +
out@output$Renovation <- factor(out@output$Renovation, levels = c(
aes(x = Building, weight = heatingEnergyResult/1E+6, fill = Heating) + labs(y = "Heating energy need (GWh /a)") + coord_flip() #  + facet_grid(. ~ RenovationPolicy)
"None",
"General",
"Windows",  
"Technical systems",  
"Sheath reform"
), ordered = TRUE)


#emis@output <- emis@output[emis@output$Renovation == "BAU" , ]
return(out)
}
)


ggplot(emis@output) + geom_bar() + facet_grid(Pollutant ~ . , scales = "free_y") + theme_gray(base_size = BS) + labs(title = "Emission impacts of biofuel policy") +
dummy <- 1
aes(x = Heating, weight = Result, fill = Fuel) + labs(y = "Emissions to air (ton /a)") + theme(axis.text.x = element_text(angle = 90, hjust = 1))


#ggplot(health@output) + geom_bar() + theme_gray(base_size = BS) + labs(title = "Health impacts of fuel and renovation policy") +
objects.store(
#aes(x = Year, weight = Result, fill = Heating) + labs(y = "Premature deaths (# /a)") # + facet_grid(FuelPolicy ~ RenovationPolicy)
stockBuildings, # Current building stock
changeBuildings, # Building stock change per year
emissionLocations, # Locations of buildings and emissions
heatingShares, # Heating types of current buildings
renovationRate, # Percentage of renovations per year
renovationShares, # Fraction of renovation type when renovation is done. From [[Building stock in Kuopio]]
dummy # Needed by renovationShares
)


cat("Objects
stockBuildings,
changeBuildings,
emissionLocations,
heatingShares,
renovationRate,
renovationShares
stored.\n")


</rcode>
</rcode>
Line 123: Line 222:
<references/>
<references/>


==Related files==
==Related files==<!-- __OBI_TS:1424513031 -->

Latest revision as of 07:58, 23 July 2015



Question

What is the building stock in Basel?

Answer

Rationale

Data

Detailed data can be found from heande:Buildings in Basel. This data is aggregated to the postal code level. The table uses Swiss Land Survey coordinates CH1903. [1] [2] Use this code in the ova2spat function:

proj4string = "+init=epsg:21781"

Renovations

Estimates from Laura Perez and Stephan Trüeb, unibas.ch N:\YMAL\Projects\Urgenche\WP9 Basel\Energy_scenarios_Basel_update.docx

Fraction of houses renovated per year(%)
ObsAgeResultDescription
100Estimates from Laura Perez and Stephan Trüeb
2200Assumption Result applies to buildings older than the value in the Age column.
3251
4301
5501
61001
710001
Popularity of renovation types(%)
ObsRenovationFractionDescription
1None0
2Windows65
3Technical systems30
4Sheath reform5
5General0

Emission locations

Where and how do the emissions of heating take place?

Emission locations(-)
ObsHeatingEmission siteEmission heightDummy
1District4056High4056 is the postal code of the heat and power plant IWB, Hagenaustrasse 40/70 4056 Basel.
2Long-distance heating4056High
3Electricity4056High
4Geothermal4056High
5Centrifuge, hydro-extractor4056High
6Heating oilAt site of consumptionGround
7WoodAt site of consumptionGround
8GasAt site of consumptionGround
9CoalAt site of consumptionGround
10Solar heater/ collectorAt site of consumptionGround
11No energy sourceAt site of consumptionGround
12Other sourcesAt site of consumptionGround
Locations of postal codes(epsg:21781)
ObsPostal codeXY
14001611296.55267316.04
24051611004.37267137.18
34052612735.06266596.60
44053611695.00265635.41
54054609694.31266598.91
64055609798.12267812.13
74056610271.78268500.37
84057611580.35268976.81
94058612781.70268225.32
104059611615.85264689.04
114125615721.84269737.40
124126617160.01268852.20

Fuel use by heating type

Basel-specific data about connections between Heating and fuel usage. Generic data should be taken from Energy balance.

Fuel use by heating type(-)
ObsHeatingBurnerFuelFractionDescription
1Long-distance heatingLarge fluidized bedWaste0.5The values are from Wikipedia for Basel. See below.
2Long-distance heatingLarge fluidized bedWood0.1
3Long-distance heatingLarge fluidized bedGas0.4
4Long-distance heatingGridElectricity0This is geothermally-generated district heating. Note: the fraction you need electricity is ca. 0.3*the amount of geoheat produced.
5CoalLarge fluidized bedCoal1

For guesstimates about Long-distance heating (which is used in Basel), see Climate change policies in Basel and de:IWB.

+ Show code

Calculations

This code creates ovariables that are needed to run the Building model and its ovariables buildings and heatingEnergy.

+ Show code

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


Related files