Urban Taxonomy
We have released something! That something is called[Urban Taxonomy, and it is a classification of built-up fabric.
Recent content on Martin Fleischmann
We have released something! That something is called[Urban Taxonomy, and it is a classification of built-up fabric.
Together with James Gaboardi, we are organising a session at the AAG 2026 sponsored by the Spatial Analysis and Modeling specialty group, merging my two favourite topics - urban morphology and open data science. Join us!
Yesterday we kickstarted the ESA’s Living Planet Symposium with the a workshop on vector data cubes using Xvec package built on top of Xarray, Shapely and GeoPandas. If you did not manage to be there but are still interested, the workshop material is available below. The workshop covered the concept of VDC using both coordinate geometry and variable geometry with applications (and a…
I have been working with street networks for a long time. My first analysis will date probably back to 2017 or so. Most of those focused on the same aspect - understanding the morphology. Yet, practically none of the networks I was able to obtain reflected morphology directly. Rather, they captured transportation networks, with all the detailed intersections, every tiny roundabout, slipway, double…
During GISRUK 2025, organised in April 2025 at the University of Bristol, I had an opportunity to deliver a workshop on urban morphometrics, titled Urban Morphology with Python: City Structure as Predictor and Target. Workshop materials The workshop has not been recorded but the material is openly available on the link above.
The recorrding of a talk delivered during the GeoPython 2024 together with Joris Van den Bossche. GeoPandas is one of the core packages in the Python ecosystem to work with geospatial vector data and has recently released its first major version - 1.0. This talk will give an overview of recent developments in GeoPandas and the broader ecosystem and provide an outlook on where it is heading.…
The workshop organised during the GeoPython 2024 together with Joris Van den Bossche. After 10 years since the first release, GeoPandas reached version 1.0. This workshop will showcase how to get the most out of the recent enhancements and develop a code ready for 2024 and beyond. GeoPandas is one of the core components of the GeoPython ecosystem, providing the critical infrastructure to work with…
A recording of the online workshop entitled “A Brief Introduction to Spatial Data Science” delivered during the UrbanMetaMapping conference in Saarbrücken on September 13th 2024. The repository with the notebook used in the workshop is available from https://github.com/martinfleis/saarbrucken-workshop. Video
The recording of a keynote entitled ‘The emergent structure of cities’ delivered during the UrbanMetaMapping conference in Saarbrücken on September 12th 2024. The slides are available at the US CUNI website. Video
We have released GeoPandas 1.0! Yes, I am excited and a bit relieved as it took a bit longer than expected. Anyway, it’s out and we’re waiting to hear what we broke 🙃. It is a major milestone for GeoPandas, not only in a semantic sense, but it literally closes a long development cycle. If you have been following the ecosystem for a while, you might know the story, but it is worth…
The GeoPandas team is racing towards the 1.0 release, nearly 10 years after 0.1 made it to PyPI. As with any major release, it brings some changes. This post highlights those I feel are the most important and invites you to test the 1.0.0-alpha1 and later rc versions before we let the stable version fly to the world. Please test! As of today, GeoPandas 1.0 is out as a pre-release 1.
I am sitting on a train back to Prague after two days of discussing tooling for spatial data science available in the Python, R and Julia ecosystems, with occasional excursions to the worlds of Rust, JavaScript or ESRI. I am coming back from the Spatial Data Science across Languages (SDSL) workshop and I’d like to share a few thoughts1 while they’re fresh. Different maturity of…
With the release of Shapely 2.0, the GeoPandas-based code that have been optimised years ago may no longer provide the best performance. The workshop organised during the GeoPython 2023 together with Joris Van den Bossche showed how to change that and write efficient and convenient GeoPandas code that uses the benefits of the latest developments in the Python geospatial ecosystem. Workshop…
If you ever wanted to polygonize (i.e. create polygons formed from the linework of a set of geometries, as per shapely’s definition) something like a street network with shapely, you may have noticed missing geometries in the result, like in the case of Vienna below. I had the same issue, and this is a note to myself with a solution. The result of shapely.polygonize with gaps that should not…
A talk from the OpenGeoHub Summer School 2022. Workshop materials Recording The ecosystem of packages for spatial data handling and analysis in Python is extensive and covers both vector and raster analytics from small to large distributed data. This talk covers only a small part, focusing on vector data processing with GeoPandas at its core. First, it covers what GeoPandas is and how it relates…
This is the map we have created for the Urban Grammar AI project. It is created using open source software stack and hosted on GitHub, for free. This post will walk you through the whole process of generation of the map, step by step, so you can create your own. It is a bit longer than usual, so a quick outline for better orientation: By the end of this tutorial, you will be able to take your…
The workshop organised together with James D. Gaboardi during the Spatial Data Science Symposium 2022 is now available online. See the recording below and access the workshop material on Github from which you can even run the code online, in your browser. Annotation Martin & James will walk you through the fundamentals of analysis of the structure of cities. You will learn what can be measured,…
The workshop organised during the GeoPython 2022 together with Joris Van den Bossche introduces the Dask-GeoPandas library and walks you through its key components, allowing you to take a GeoPandas workflow and run it in parallel, out-of-core and even distributed on a remote cluster. Workshop resources are available on Github. Annotation The geospatial Python ecosystem provides a nice set of tools…
Using Python for data science is usually a great experience, but if you’ve ever worked with pandas or GeoPandas, you may have noticed that they use only a single core of your processor. Especially on larger machines, that is a bit of a sad situation. Developers came up with many solutions to scale pandas, but the one that seems to take the lead is Dask. Dask (specifically dask.dataframe as…
Paul Ramsey saw a spatial join done using a GPU and tried to do the same with PostGIS, checking how fast that is compared to the GPU-based RAPIDS.AI solution. Since Paul used parallelisation in PostGIS, I got curious how fast Dask-GeoPandas is on the same task. So, I gave it a go. import download import geopandas import dask_geopandas import dask.dataframe from dask.distributed import Client,…
The final paper based on my PhD thesis is (finally!) out in the Environment and Planning B: Urban Analytics and City Science. We looked into ways of identifying patterns of urban form and came up with the Methodological foundation of a numerical taxonomy of urban form. You can read it on the journal website (open access). We use urban morphometrics (i.e. data-driven methods) to derive a…
During the Spatial Data Science Conference 2021, I had a chance to deliver a workshop illustrating the application of PySAL and momepy in understanding the structure of cities. The recording is now available for everyone. The materials are available on my GitHub and you can even run the whole notebook in your browser using the MyBinder service.
A Python ecosystem offers numerous tools for the visualisation of data on a map. A lot of them depend on XYZ tiles, providing a base map layer, either from OpenStreetMap, satellite or other sources. The issue is that each package that offers XYZ support manages its own list of supported providers. We have built xyzservices package to support any Python library making use of XYZ tiles. I’ll…
We have a new paper published in the Geographical Analysis on the opportunities current developments in geographic data science within the Python ecosystem offer to urban morphology. To sum up - there’s a lot to play with and if you’re interested in the quantification of urban form, there’s no better choice for you at the moment. Urban morphology (study of urban form) is…
I had a chance to present our ongoing work on the classification of the (built) environment in Great Britain during the International Seminar on Urban Form 2021, which was held virtually in Glasgow. I was presenting the classification of urban form, one component of Spatial Signatures we’re developing as part of the Urban Grammar AI project together with Dani Arribas-Bel. The video of the…
The Urban Atlas: Methodological Foundation of a Morphometric Taxonomy of Urban Form is the title of my PhD Thesis defended in January 2021 at the University of Strathclyde. Thanks to Ombretta and Sergio for guiding me along the way! Abstract No two cities in the world are alike. Each urban environment is characterised by a unique variety and heterogeneity as a result of its evolution and…
In this post, I introduce a new Python package to generate clustergrams from clustering solutions. The library has been developed as part of the Urban Grammar research project, and it is compatible with scikit-learn and GPU-enabled libraries such as cuML or cuDF within RAPIDS.AI. When we want to do some cluster analysis to identify groups in our data, we often use algorithms like K-Means, which…
On March 30, 2021, I had a chance to deliver a talk as part of the Spatial Analytics + Data Seminar Series organised by the University of Newcastle (Rachel Franklin), the University of Bristol (Levi Wolf) and the Alan Turing Institute. The recording of the event is now available on YouTube. Spatial Signatures: Dynamic classification of the built environment This talk introduces the notion of…
Yes, the formula above is correct. Well, it depends on what we mean by correct. NDVI does not make sense Imagine the following situation. We have fetched a cloud-free mosaic of Sentinel 2 satellite data and want to measure NDVI (Normalised difference vegetation index), which uses red and near-infrared bands within this simple formula. NDVI = (NIR - Red) / (NIR + Red) The results are normalised,…
This is a short story of one open-source algorithm and its journey from QGIS to mapclassify, to be used within GeoPandas. I am writing it to illustrate the flow within the open-source community because even though this happens all the time, we normally don’t talk about it. And we should. The story Sometimes last year, I asked myself a question. How hard would it be to port topological…
Imagine you are trying to analyse a city, and you want primarily to understand its structure. You look at buildings, their dimensions and patterns they form, you look at a street network, and then you want to understand detailed patterns of density. This last point requires a specification of an aerial unit, and morphological tessellation is one of the most detailed options. I don’t want to…
Sometimes our lines and polygons are way too complicated for the purpose. Let’s say that we have a beautiful shape of Europe, and we want to make an interactive online map using that shape. Soon we’ll figure out that the polygon has too many points, it takes ages to load, it consumes a lot of memory and, in the end, we don’t even see the full detail. To make things easier, we…
This is a short introduction of our recently published paper Measuring urban form: Overcoming terminological inconsistencies for a quantitative and comprehensive morphologic analysis of cities, which is essentially one of the background chapters of my PhD (hopefully finished later this year). When I started my work, which is focusing on measuring of urban form (or urban morphometrics) - see momepy…
Martin is a member of the Urban and Regional Laboratory at the Charles University in Prague where he leads the Research Team on Urban Structure, a fellow in the Geographic Data Science Lab at the University of Liverpool and a former member of the Urban Design Studies Unit at the University of Strathclyde. He has a PhD in Architecture from the University of Strathclyde in Glasgow, where he focused…
I am teaching primarily spatial data science, either as a semester-long course at the Department of Social Geography and Regional Development of Charles University in Prague or as workshops of variable length, some of which are listed below. Spatial Data Science for Social Geography The course introduces data science and computational analysis using open source tools written in the Python…
PhD topics I am currently looking for candidates to fill one funded PhD position. Please reach out (martin.fleischmann@natur.cuni.cz) if you’re interested and considering applying. Bridging urban morphology and community ecology to study structure, organisation and evolution of cities Cities, composed of a plethora of layers, physical or not, made by humans or nature, are entities that, due…