Building Data Model¶
The Building object represents a single residential building with:
- Address information
- Geospatial references
- Roof characteristics
- Photovoltaic (PV) status
- Solar potential metrics
- Economic indicators
- Grid-based neighborhood metrics
- Geometry data (GeoJSON)
It is returned by:
GET /buildingGET /building-coordinatesPOST /buildingsPOST /buildings-coordinatesPOST /bbox/buildingsPOST /query/buildings
Core Identifiers¶
| Field | Type | Description |
|---|---|---|
building_id |
string (24) | Unique building identifier |
postcode |
string (5) | German postcode |
ags |
string (8) | Municipality identifier (Amtlicher Gemeindeschlüssel) |
building_id is the primary identifier used for:
- Batch queries
- Cursor pagination
- Linking to other systems
Address Information¶
| Field | Type | Description |
|---|---|---|
street |
string | Street name |
house_number |
string | House number |
postcode |
string | Postcode |
locality |
string | City / municipality name |
county |
string | Landkreis |
state |
string | Bundesland |
H3 Grid References¶
Each building is linked to multiple H3 grid resolutions:
| Field | Description |
|---|---|
h3_4 |
H3 ID (resolution 4) |
h3_5 |
H3 ID (resolution 5) |
h3_6 |
H3 ID (resolution 6) |
h3_7 |
H3 ID (resolution 7) |
h3_8 |
H3 ID (resolution 8) |
h3_9 |
H3 ID (resolution 9) |
h3_10 |
H3 ID (resolution 10) |
These are useful for:
- Regional grouping
- Aggregation
- Spatial indexing
Building Characteristics¶
| Field | Type | Description |
|---|---|---|
building_type |
string | Building category (e.g., single-family house, terraced house, apartment building) |
roof_type |
string | Roof type (e.g., Flachdach, Satteldach) |
roof_area |
integer | Total roof area (m²) |
building_height |
integer | Height in meters |
n_roofs |
integer | Number of roof segments |
PV Status¶
| Field | Type | Description |
|---|---|---|
pv |
boolean | Whether PV is installed |
solar_thermal |
boolean | Whether 1-3 solar thermal collectors are installed |
img_date |
string | Date of aerial image used for classification |
Solar Potential Metrics¶
| Field | Type | Description |
|---|---|---|
radiation |
integer | Annual radiation (kWh/m²) |
suitable_roof_area |
integer | Usable roof area (m²) |
building_kwh |
integer | Expected annual production (kWh) |
building_kwp |
integer | Expected system capacity (kWp) |
building_panels |
integer | Estimated number of panels |
building_co2 |
number | Annual CO₂ savings (tons) |
Economic Indicators¶
| Field | Type | Description |
|---|---|---|
earnings |
integer | Annual gross earnings (EUR) |
costs |
integer | Installation costs (EUR) |
return_on_investment |
number | Return on investment (percentage) |
amortization |
number | Payback period (years) |
total_earnings |
integer | Total net earnings over 25 years (EUR) |
Sales Opportunity¶
| Field | Type | Description |
|---|---|---|
sales_opportunity_score |
number (0–10) | Sales opportunity score based on expected sales value and probability |
deal_size_class |
string | Categorized deal size class (super, good, other) |
Grid-Based Neighborhood Metrics¶
These values are based on 100x100m INSPIRE grid cells.
| Field | Description |
|---|---|
grid_count_buildings |
Number of residential buildings in the grid cell |
grid_share_owned |
Share of owner-occupied buildings |
grid_share_2020s |
Share built in 2020s |
grid_share_2010s |
Share built in 2010s |
grid_share_2000s |
Share built in 2000s |
grid_share_1990s |
Share built in 1990s |
grid_share_pre_1990s |
Share built before 1990 |
These metrics support:
- Socioeconomic analysis
- Campaign targeting
- Neighborhood profiling
Roof-Level Information¶
Each building may have multiple roof segments.
| Field | Type | Description |
|---|---|---|
roof_ids |
array[string] | Roof identifiers |
roof_areas |
array[int] | Roof areas (m²) |
roof_directions |
array[int] | Orientation in degrees |
roof_direction_labels |
array[string] | Cardinal direction labels |
roof_pitches |
array[int] | Roof inclination (degrees) |
roof_suggested_usage |
array[number] | Suggested PV usage share |
roof_kwh_m2 |
array[number] | Production per m² |
roof_kwp |
array[number] | Capacity per roof segment |
roof_panels |
array[number] | Panel count per roof segment |
roof_geoms |
array[GeoJSON Polygon] | Roof geometries |
Geometry¶
The building includes GeoJSON geometries.
| Field | Type | Description |
|---|---|---|
coordinates |
GeoJSON Point | Building centroid |
geometry |
GeoJSON Polygon | Building footprint |
All coordinates use:
- WGS84 reference system
[longitude, latitude]order
Example (simplified)¶
{
"building_id": "0009c4da348d4cc82f2d3448",
"postcode": "90461",
"pv": false,
"roof_area": 120,
"building_kwh": 10500,
"building_kwp": 9,
"building_type": "single-family house",
"geometry": {
"type": "Polygon",
"coordinates": [...]
}
}
Projection-Friendly Variant¶
Some endpoints return a projection-friendly BuildingOut object.
Characteristics:
- Always includes
building_id - Includes only fields requested via
options.select
Example:
{
"building_id": "0009c4da348d4cc82f2d3448",
"roof_area": 120
}
Recommended Usage¶
For:
- Map rendering → select minimal fields (
building_id,geometry) - Campaign exports → select relevant economic and opportunity fields
- Analytics → use grid metrics + solar potential
Avoid requesting full roof geometries unless necessary.
Summary¶
The Building model provides:
- Address-level identification
- PV classification
- Solar production potential
- Economic evaluation
- Roof-level granularity
- Spatial geometry
It forms the core entity of the Solar Lake Enterprise API.