Notebooks, enrivonment and code to generate the taxonomy of Central European Urban Fabric.
This accompanies a research paper:
Fleischmann, Martin, Krasen Samardzhiev, Anna Brázdová, Daniela Dančejová, and Lisa Winkler. 2026. “The Hierarchical Morphotope Classification: A Theory-Driven Framework for Large-Scale Analysis of Built Form.” Cities 174 (July): 107047. https://doi.org/10.1016/j.cities.2026.107047.
@article{fleischmann2026Hierarchical,
title = {The Hierarchical Morphotope Classification: {{A}} Theory-Driven Framework for Large-Scale Analysis of Built Form},
shorttitle = {The Hierarchical Morphotope Classification},
author = {Fleischmann, Martin and Samardzhiev, Krasen and Br{\'a}zdov{\'a}, Anna and Dan{\v c}ejov{\'a}, Daniela and Winkler, Lisa},
year = 2026,
month = jul,
journal = {Cities},
volume = {174},
pages = {107047},
issn = {02642751},
doi = {10.1016/j.cities.2026.107047},
urldate = {2026-04-07},
langid = {english}
}-
First, make sure you have the correct folder structure in place or you will have to change it in the python scripts/notebooks.
-
Clone this repository and checkout the
resultsbranch. -
Run
pixi install, thenpixi run buildand optionallypixi run tests. These commands setup the enviroment and all the required packages.- Alternatively you can manually install the conda-forge dependencies, but you have to still run the pixi build and tests commands:
pixi add momepy umap-learn fast_hdbscan jupyterlab pyarrow matplotlib lonboard folium mapclassify datashader dask pip sidecar glasbey scikit-image colorcet pandas holoviews bokeh=3.1 esda pytest hdbscan
- Alternatively you can manually install the conda-forge dependencies, but you have to still run the pixi build and tests commands:
Then, run:
code/01_download_buildings_footprints.ipynbto download all the cadastre data for central europecode/02_standardise_footprints.ipynbto standardise all the cadstre data from different countries into a single formatcode/03_generate_regions.ipynbto split the buildings into regions for independent processingcode/04_download_streets.ipynbto download the raw Overture streets for every region- Run bulding processing. If running again, clean up processed data to avoid conflicts.
pixi run python src/core/generate_buildings.py > buildings_log.txtcode/05_preprocess_cz_housing.ipynbto update socialist housing in Czechia (needs to be run after building simplification)- Run the entire processing pipeline from building, street preprocessing, element generation, characters calculations and morphotope creation.
bash full_run.sh`code/06_morphotope_postprocessing.ipynbto fix morphotope geometries based on adjacency.code/07_morphotope_chars.ipynbto generate characteristics specific to morphotopes.code/08_clustering.ipynbto generate the heirarchy of morphotopes, and store the data.code/09_noise.ipynbto assign the noise points to the nearest clusters.code/10_cluster_characteristics.ipynbto generate characteristics of each cluster.code/11_evaluation.ipynbto generate comparisons with other data products.code/12_postprocess_morphotope_ids.ipynbto ensure uniqueness of noise IDs.
- Clone the repository
- Run
pixi install, then optionallypixi run generate_test_dataandpixi run tests. - Follow the same structure as above.
To extend the hierarchy with new data follow the notebooks starting with ext_ prefix.