Buildings Module
The buem.buildings module maps raw LOD2 geometry and TABULA typology data
into canonical Building objects. These objects carry all envelope, thermal,
and identity information required by the thermal model.
Sub-packages
components
Dataclass definitions for each envelope element type: wall, roof, floor,
window, door, and ventilation. All inherit from EnvelopeElement
(components.base).
mapping
Orchestration of the LOD2 + TABULA pipeline:
lod2_mapper.LOD2Mapper— main pipeline entry pointwall_classifier.SharedWallDetector— party wall detectionelement_factory— window, door, ventilation element creationtabula_helpers— TABULA variant selection, window ratios, safe numerics
datasources
Data ingestion from PostgreSQL (pg_source) or Excel (excel_source).
generator
v3 GeoJSON file writer (json_generator).
Assumptions
The building mapper makes a number of simplifying assumptions when converting LOD2 geometry and TABULA statistical data into a thermal model input. These are documented here for transparency and reproducibility.
Geometry & Surface Classification
Assumption |
Rationale / Source |
|---|---|
Surfaces with area < 0.01 m² are discarded |
LOD2 geometry computations produce floating-point artefacts (e.g. 1.1 × 10⁻¹⁶ m²) that have no physical meaning. |
|
CityGML LOD2 convention for thematic surfaces. |
Wall tilt is always 90° (vertical) |
LOD2 walls are planar; any stored tilt is ignored. |
Roof tilt: negative or NaN → 0° (flat) |
Negative tilt values in the database are artefacts; 0° is the safe default per pvlib convention (horizontal = 0°). |
Floor tilt is always 0°; azimuth always 0° |
Ground slabs are horizontal; azimuth is irrelevant for floors. |
Roof azimuth is always 0° (placeholder) |
Roof azimuth has no role in the ISO 13790 5R1C model; the solar irradiance on roofs (horizontal windows) uses tilt only. |
Wall azimuth: negative or NaN → 0° (North) |
Some LOD2 databases store −1 for unknown azimuth. North is chosen as a conservative fallback (lowest solar gains in the Northern Hemisphere). |
Front / Back Wall Identification
Assumption |
Rationale / Source |
|---|---|
The front wall is the exposed wall with the largest surface area |
The main entrance façade of European residential buildings is typically the widest exposed face. |
The back wall is the exposed wall whose azimuth is closest to 180° opposite the front wall (within 90° angular tolerance) |
Provides the opposite façade for cross-ventilation. If no wall falls within 90° of the ideal opposite, no back wall is assigned. |
Front wall receives: windows, door, and ventilation opening |
Typical residential building entrance and primary window façade. |
Back wall receives: windows and ventilation opening |
Rear façade provides cross-ventilation path and secondary glazing. |
Side walls receive: windows only (no doors or ventilation) |
Side elevations have glazing but typically no entrance or openable ventilation pathways in the simplified model. |
Window Sizing
Assumption |
Rationale / Source |
|---|---|
Window area on each wall = |
TABULA provides directional window areas for the reference archetype; ratios are applied proportionally to actual LOD2 wall sizes. |
Walls smaller than 5 m² do not receive any windows |
Small wall segments (gable fragments, narrow returns, chimney faces) rarely contain glazing in practice. |
Window elements with area < 0.01 m² are discarded |
TABULA directional ratios can produce floating-point artefacts (e.g. east ratio ≈ 6.7 × 10⁻⁶) that yield negligible window areas. |
|
TABULA defines window ratios relative to variant 1; maintaining this denominator preserves the typological proportions. |
Door Sizing
Assumption |
Rationale / Source |
|---|---|
One door on the front wall only; area = |
Single main entrance proportional to facade size. |
Door is omitted when no front wall exists (all party walls) |
Fully enclosed buildings (row houses with all shared walls) have no exterior entrance in the simplified LOD2 model. |
Ventilation
Assumption |
Rationale / Source |
|---|---|
Front wall ventilation opening: 1.0 m² (capped at 10 % of wall area) |
Representative of a large window/door openable area for natural ventilation on the primary façade. |
Back wall ventilation opening: 0.5 m² (capped at 10 % of wall area) |
Smaller opening on the rear façade for cross-ventilation path. |
Cross-ventilation: |
Balanced airflow when both inlet and outlet are available. |
Single-sided ventilation: full |
When no back wall exists, all purposeful ventilation occurs through the front façade. |
Fully enclosed (all party walls): infiltration-only placeholder |
No natural ventilation possible; only uncontrolled air leakage. |
The thermal model (ISO 13790) uses only air change rates, not physical opening areas |
Opening areas are metadata: they reduce opaque wall area for accurate transmission loss accounting and serve as documentation for future advanced ventilation models. |
TABULA Variant Selection
Assumption |
Rationale / Source |
|---|---|
For each component (wall, roof, floor), the primary variant is the one
with the largest area AND |
Ensures the dominant exterior-facing variant is used for thermal
calculations; variants with |
If no variant has |
Variant 1 is the TABULA typology’s main exterior component. |
Thermal Properties
Assumption |
Rationale / Source |
|---|---|
|
ISO 13790 §11.4.4; typical value for moderate European climate with some horizon obstructions. |
|
ISO 13790 §11.4.4; accounts for vertical obstructions (neighbouring buildings, vegetation). |
|
ISO 13790 §11.4.5; 20 % frame area is typical for standard window frames. |
|
Non-scattering glazing per ISO 13790 §11.3.3. |
|
Temperature correction factor for unheated cellar or ground contact. |
Missing TABULA values use safe defaults: |
ISO 13790 / TABULA typical values for existing residential buildings. |
|
Per-typology internal gains (occupants + appliances). |
|
Annual energy for domestic hot water normalised by reference floor area. Ranges from 10 to 15 kWh/(m²·a) in the German TABULA dataset. |
|
Used for peak heating load sizing. Default −12 °C (German DIN 4710). |
|
Reduces transmission losses for unheated adjacent spaces (stairwells, corridors). Default 1.0 (no reduction). German data: 0.85–0.95. |
TABULA Column Mapping
v3 Schema Field |
TABULA Column |
Unit |
Default |
|---|---|---|---|
|
|
1/h |
0.5 |
|
|
1/h |
0.5 |
|
|
kJ/(m²K) |
165.0 |
|
|
m |
2.5 |
|
|
°C |
−12.0 |
|
|
— |
0.80 |
|
|
— |
0.75 |
|
|
— |
0.20 |
|
|
— |
1.0 |
|
|
W/m² |
(model default) |
|
|
kWh/(m²a) |
(not provided) |
|
|
— |
1.0 |
per-element |
|
W/(m²K) |
(required) |
per-element |
|
— |
1.0 |
per-element |
|
— |
0.5 |