buildingdata
Data-management layer for buildingmodel.
buildingdata delivers clean, ready-to-use building, demographic and weather
datasets for French building energy inference, and caches everything locally so
repeated calls don't re-download.
pip install buildingdata
Quick start
import buildingdata as bd
# One-time configuration (bucket, cache dir, credentials).
# The public bucket works anonymously, so this is optional.
bd.configure()
# Reference datasets (downloaded once from Google Cloud Storage, then cached)
census = bd.get_census() # INSEE census -> polars DataFrame
districts = bd.get_districts() # IRIS district geometry -> geopandas GeoDataFrame
diagnosis = bd.get_diagnosis() # ADEME energy diagnoses -> polars DataFrame
gas = bd.get_gas_network() # GRDF gas network routes -> geopandas GeoDataFrame
# On-demand datasets (fetched live from public APIs)
buildings = bd.get_bdtopo("751010101") # per-IRIS building geometry (IGN WFS)
epw = bd.get_era5_climate(48.85, 2.35, 2020) # ERA5 weather -> synthetic EPW
You can also configure from the command line:
buildingdata configure --bucket my-bucket --cache-dir ~/.cache/buildingdata
What it provides
| Function | Source | Returns | Consumed by |
|---|---|---|---|
get_census() |
INSEE census (GCS) | polars DataFrame |
buildingmodel — dwelling inference |
get_districts() |
IRIS geometries (GCS) | geopandas GeoDataFrame |
buildingmodel — geocoding; building_eload — district lookup |
get_diagnosis() |
ADEME energy performance diagnoses (GCS) | polars DataFrame |
buildingmodel — envelope & system inference |
get_gas_network() |
GRDF gas network routes (GCS) | geopandas GeoDataFrame |
buildingmodel — gas-connection inference |
get_ore() |
Agence ORE annual consumption per IRIS (GCS) | polars DataFrame |
building_eload — calibration target |
get_enedis_national() / get_enedis_regional() |
Enedis conso-inf36 measured consumption (GCS) | polars DataFrame |
building_eload — validation reference |
get_elmas(table) |
ELMAS non-residential load curves (GCS) | polars DataFrame |
building_eload — non-residential model |
get_occupant_diaries() |
synthetic occupant activity calendar (GCS) | polars DataFrame |
building_eload — occupancy models |
get_elecdom() |
Enedis panel Elecdom end-use load curves (GCS) | polars DataFrame |
provenance only — source of building_eload constants |
get_bdtopo(iris_code) |
IGN Géoplateforme WFS (live) or bulk cache | geopandas GeoDataFrame |
building_eload → buildingmodel — input geometry |
get_era5_climate(lat, lon, year) |
Copernicus CDS (live) or bulk cache | path to EPW file | buildingmodel — weather boundary condition |
Reference datasets are pulled from a public Google Cloud Storage bucket and
cached locally with generation-based freshness checks. French geospatial data
uses CRS EPSG:2154 (Lambert-93). The documentation page Datasets
describes each dataset in detail — provenance, schema, units — and how
buildingmodel / building_eload consume it.
Bulk prefetch for large-scale simulations
The live APIs fetch one IRIS or one grid point at a time. For campaigns over thousands of IRIS, prefetch whole years and départements into the local cache once, then read them lock-free from any number of parallel workers:
buildingdata configure --cds-key YOUR-CDS-KEY # ERA5 needs Copernicus CDS credentials
buildingdata prefetch era5 --years 2019 # ~1.5 GB/year; one Zarr store over metropolitan France
buildingdata prefetch bdtopo --departments 75 92 # IGN 7z -> per-département GeoParquet
buildingdata cache info # sizes + completed bulk partitions
import buildingdata as bd
# After the prefetch, the same functions read the bulk cache automatically:
buildings = bd.get_bdtopo("751010101") # source="auto" by default
frame = bd.get_era5_frame(48.85, 2.35, year=2019) # EPW-format DataFrame, no EPW file
# Many IRIS at once — one partition scan + spatial join per département
frames = bd.get_bdtopo_bulk(["751010101", "751010102", "920020101"])
# Or force the local cache (fails fast instead of hitting the network):
buildings = bd.get_bdtopo("751010101", source="bulk")
BDTOPO bulk prefetch needs the bulk extra (pip install "buildingdata[bulk]"),
ERA5 the era5 extra. See the documentation page Bulk prefetch for
large-scale simulations for source selection ("auto"/"bulk"/"wfs"/"cds"),
disk sizes, concurrency guarantees and BDTOPO vintage notes.
Configuration
Settings are resolved in the following precedence order:
- Explicit function arguments / CLI options
- Environment variables (
BUILDINGDATA_BUCKET,BUILDINGDATA_CACHE_DIR,GOOGLE_APPLICATION_CREDENTIALS) - Global configuration file (
~/.config/buildingdata/config.ini) - Dynamic defaults
Configurable settings:
- bucket — GCS bucket holding reference datasets (default:
building-inference-data) - cache directory — where downloaded data is stored locally
- credentials — path to a GCS service-account JSON (omit for anonymous access to the public bucket)
Cache Behavior & Multi-Project Sharing
- Default (Unconfigured): The cache directory is namespaced per installation (
~/.local/share/buildingdata/cache/<install-id>on Linux/macOS). Each virtualenv or package installation receives its own unique cache subfolder to prevent collisions between environments. - Sharing Across Projects: To share a single cache directory across multiple repositories, virtualenvs, or Snakemake pipelines, set the
BUILDINGDATA_CACHE_DIRenvironment variable or write a global configuration file:
# Via CLI (writes ~/.config/buildingdata/config.ini):
buildingdata configure --cache-dir /path/to/shared/cache
# Or via environment variable:
export BUILDINGDATA_CACHE_DIR="/path/to/shared/cache"
Because ~/.config/buildingdata/config.ini is stored in your home directory, configuring it once applies globally to all projects and virtual environments for your user account.
Installation extras
pip install "buildingdata[era5]" # ERA5 weather (cdsapi, xarray, pvlib, ...)
pip install "buildingdata[bulk]" # BDTOPO bulk prefetch (py7zr)
pip install "buildingdata[docs]" # build the Sphinx documentation
Requires Python ≥ 3.10.
License
Released under the MIT License.
Metadata
Release files for buildingdata 0.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| buildingdata-0.7.0.tar.gz | 79.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| buildingdata-0.7.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 172.9 kB
Release files / buildingdata-0.7.0.tar.gz
| Download URL | buildingdata-0.7.0.tar.gz |
|---|---|
| Size | 79.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d8f104eae87e0b6792c3269799ec1139b766a2f99b1d9f5024c50d148ce16d63
|
|
BLAKE2b-256 checksum How to use checksums |
7ec5bdf398f2fbced7ebcbcae61144277a66e48a72039f8027d5aebf2dc921dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / buildingdata-0.7.0-py3-none-any.whl
| Download URL | buildingdata-0.7.0-py3-none-any.whl |
|---|---|
| Size | 93.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d7959ef74e64fdc7c4effebb0f4c3b8bf2970832ab60019f5e05260224558c6e
|
|
BLAKE2b-256 checksum How to use checksums |
3177cb3a64e67cd56a2f679608c83ac28437d4f6b6b5ea73c72fa863a17bc18b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|