EstIP-Building-Toolbox
Developed at IOER
Copyright © Denis Reiter, Dresden, 2026
All rights reserved.
Overview
This set of tools is meant to enrich building data with various features, enabling additional processing steps down the line. It was built as part of the EstIP population estimation pipeline and serves as the foundation for the corresponding dataset series. Therefore, the structure and output is tailored towards EstIP, but it can be used in different contexts, too. The output of this toolbox is directly compatible with the actual population estimation pipeline, which can be found here.
Features
- Built for 3D building data (LoD2)
- Modular pipeline consisting of 6 individual scripts
- Logical processing steps are bundled together
- Full output delivers 35 building features, plus some optional ones
- Reproducible configuration via files
Requirements
- Windows 11 (currently the only supported OS)
- Python 3.11
- Working conda/miniforge installation
Installation
For end-users:
pip install estip-building-toolbox
For development:
- Clone the repository.
git clone https://github.com/denisreiter/EstIP-Building-Toolbox.git
- Open a conda/miniforge prompt.
- Change to the directory where you cloned the repo into.
cd <path/to/your/cloned/repo>
- Create and activte a new environment:
conda env create --file environment.yml conda activate estip-building-toolbox
Configuration
The toolbox consists of six indivdual processing scripts (s1 - s6). Each scripts variables are controlled via its corresponding .yaml config file, where paths and field names need to be set by the user. A minimal working collection of config files and datasets can be found under examples/.
The config files can be saved for reproducability. Config flags given via command line overwrite flags given inside config files.
run_all_cfg.yaml controls which scripts are run during a full pipeline run. Use comments # to exclude scripts from execution in a full pipeline run, or remove the entries entirely.
Assumptions & Limitations
- All data should be projected to EPSG:3035.
- Input buildings ideally should be converted footprints from a 3D CityGML model inside a .gpkg file (see an example here).
- All datasets need to be stored inside a single workspace
.gpkgfile.
Usage
If you installed the package via pip:
- Adapt paths and field names in the config files
cfg_s1.yaml-cfg_s6.yaml. - Activate
estip-building-toolbox(or any alternative env you installed the package in) in your conda prompt. - Use the example dataset provided under
examples/for demonstration, or your own dataset. - Single script execution:
run-s1 --config <path/to/your/config/cfg_s1.yaml>
- Run entire pipeline:
run-all --config <path/to/your/config/run_all_cfg.yaml>
If you are using the development version:
- Adapt paths and field names in the config files
cfg_s1.yaml-cfg_s6.yaml. - Activate
estip-building-toolbox(or any alternative env you installed the package in) in your conda prompt. - Use the example dataset provided under
examples/for demonstration, or your own dataset. - Change to the directory where you cloned the repo into.
cd <path/to/your/cloned/repo>
- Single script execution:
python -m scripts.s1_preprocessing.cli --config <path/to/your/config/cfg_s1.yaml>
- Run entire pipeline:
python -m scripts.run_all --config <path/to/your/config/run_all_cfg.yaml>
Pipeline Overview
s1_preprocessing
- Input: LoD2 buildings, LoD2 building parts
- Tasks: Cleaning, reprojecting, joining parts info, assign residential building types.
- Features: "CNT_PRTS", "RF_TYPE", "FNC_CODE"
Note: This step can be skipped if building data already is preprocessed.
s2_basic_geometric_features
- Input: Output from s1 or raw buildings
- Tasks: Calculate basic geometric features which are not dependent on context.
- Features: "SHPX_2D", "RATIO_C_A", "RATIO_LW_MRR", "RATIO_MRR_A", "CNT_NDS", "CNT_HLS", "A", "C", "H", "V", "RATIO_HLL_V"
s3_neighbourhood_features
- Input: Output from s1
- Tasks: Calculate features dependent on neighbouring buildings within a configurable radius. Fields are dynamically named based on radius. Default: 50m.
- Features: "DIST_NGHB", "RATIO_SW", "CNT_NGHB_Rxx", "DIST_NGHB_Rxx"
s4_context_features
- Input: Output from s3, Addreses (points), Blocks (polygons), Streets (polylines)
- Tasks: Calculates features and ratios based on contextual information.
- Features: "DIST_STRT", "CNT_ADD", "BLCK_TYPE", "CNT_BLCK", "A_SUM_BLCK", "A_MEAN_BLCK", "A_STD_BLCK", "V_SUM_BLCK", "V_MEAN_BLCK", "V_STD_BLCK", "MEAN_DIST_NGHB_BLCK", "RATIO_A_BLCK", "RATIO_A_SUM", "RATIO_V_SUM", "RATIO_A_MEAN", "RATIO_V_MEAN"
Note: Each ancillary dataset is optional, but at least one has to provided. Corresponding features will not be processed for those not not provided.
s5_spatial_assignment
- Input: Output from s4, muncipalities, grid
- Tasks: Adds municipality, reginonal type (optional) and grid cell ID to buildings.
- Features: "MUNICIP", "REG_TYPE", "MAPPED_CELLCODE"
s6_population_mapping
- Input: Output from s6, grid
- Tasks: Dasymetrically maps population from census raster to buildings by grid cell ID.
- Features: "MAPPED_POPULATION"
Note: This step can be skipped if no population data is available.
Citation
Reiter, Denis (2026): EstIP-Building-Toolbox (Version 0.1.0) [Software]. https://github.com/denisreiter/EstIP-Building-Toolbox
Metadata
Release files for EstIP-Building-Toolbox 0.1.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 | Provenance | Actions |
|---|---|---|---|---|
| estip_building_toolbox-0.1.0.tar.gz | 37.7 kB | Without provenance | Details for estip_building_toolbox-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| estip_building_toolbox-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for estip_building_toolbox-0.1.0-py3-none-any.whl |
Total release size: 91.4 kB
Release files / estip_building_toolbox-0.1.0.tar.gz
| Download URL | estip_building_toolbox-0.1.0.tar.gz |
|---|---|
| Size | 37.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a0107a6556733b08707a337529775f8de36e8d92000b5bddc2068c9a1007c856
|
|
BLAKE2b-256 checksum How to use checksums |
40c56ec8ffd8fd02822ec7980df8c6088cdebe4fba07ff13b45cc637d4034c77
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.15
|
Release files / estip_building_toolbox-0.1.0-py3-none-any.whl
| Download URL | estip_building_toolbox-0.1.0-py3-none-any.whl |
|---|---|
| Size | 53.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fcf10ef9a175d2585fa94a74b831b666907fe33c7a5697dd9f79dbbdfc38ab83
|
|
BLAKE2b-256 checksum How to use checksums |
11edb006acee36aa2797c6748a7ba9e8e7631ffceb2df16af0208bc7d161e310
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.15
|
Security for EstIP-Building-Toolbox 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.