I am a researcher in urban morphology and geographic data science focusing on quantitative analysis and classification of cities, remote sensing, and bits of AI. While not doing the research, I write open source software, promote open science and help others with their data.
I am an author or a maintainer of a range of open scientific software, including GeoPandas, the open source Python package for geographic data handling, momepy, the urban morphology measuring toolkit for Python, Xvec, the tool for vector data cubes, and PySAL, the Python library for spatial analysis.

Latest posts

Fixing missing geometries in a polygonized network

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 be there....

January 23, 2023 · 2 min

Introduction to GeoPandas and its Python ecosystem

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 to other packages and combines them into a user-friendly API....

October 20, 2022 · 1 min

How to create a vector-based web map hosted on GitHub

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 vector data and turn them into a fully-fledged vector map hosted on GitHub with no cost involved, for everyone to enjoy....

September 29, 2022 · 14 min

Understanding the structure of cities through the lens of data

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, how to do that in Python, and how to use those numbers to capture the patterns that make up cities....

September 29, 2022 · 1 min

Introducing Dask-GeoPandas for scalable spatial analysis in Python

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 Dask can do much more) creates a partitioned data frame, where each partition is a single pandas....

March 31, 2022 · 3 min

Dask-GeoPandas vs PostGIS vs GPU: Performance and Spatial Joins

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, LocalCluster Let’s download the data using Paul’s query, to ensure we work with the same CSV....

March 10, 2022 · 4 min

Methodological Foundation of a Numerical Taxonomy of Urban Form

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 classification of urban form in Prague and Amsterdam, and you can check the results in online interactive maps - http://martinfleis....

December 16, 2021 · 3 min

Capturing the Structure of Cities with Data Science

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.

November 2, 2021 · 1 min

xyzservices: a unified source of XYZ tile providers in Python

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 try to explain the rationale why we did that, without going into the details of the package....

August 3, 2021 · 4 min

Evolution of Urban Patterns: Urban Morphology as an Open Reproducible Data Science

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 historically a qualitative discipline that only recently expands into more data science-ish waters....

July 15, 2021 · 4 min