Very recently, the Journal of Open Source Software published a paper called momepy: Urban Morphology Measuring Toolkit by Martin Fleischmann, a Ph.D. student from the Department of Architecture at the University of Strathclyde. The momepy toolkit allows researchers to measure spatial distributions (simple and complex) and spatial weights of buildings, blocks, plots, streets, networks, and other urban elements. The name momepy is short for Morphological Measuring in Python.
Fleischmann’s toolkit aims to help spread the use of Urban Morphometrics (UMM) [1], which is the description of urban form “via the systematic and comprehensive measurement of its morphological character” [2]. The issue is that this type of analysis has been lacking general-purpose software that allows researchers to make use of large datasets for the description of urban spaces and structures.
One key feature of momepy is the use of morphological tessellation. The following images illustrate the Voronoi tessellation function using Open Street Maps data from Böblingen (a town in Germany where I did a student internship at IBM):


The paper and its accompanying software are freely distributed under the Creative Commons Attribution 4.0 International License which allows free sharing and adaptation for any purpose as long as the correct attribution is given.
Resources
- The entire paper is available here.
- These are the links to the GitHub repository and the User Guide. I strongly suggest reading through the user guide for a brief survey of what momepy can do!
- To know more about Martin Fleischmann, you can read his student profile here or visit his own website here!
- The Journal of Open Source Software is a publication aimed to help academics distribute and publish research software.
- momepy stemmed from current research in the Urban Design Studies Unit at the University of Strathclyde, Glasgow.
- Pro tip: if you install momepy through conda-forge (which is the recommended way to install it), do it on a separate conda environment where you set the channel priority to strict. You will probably have to install matplotlib through conda-forge as well. Then you can install osmnx using pip if you want to use Open Steet Map’s data.
References
- [1] Dibble, J., Prelorendjos, A., Romice, O., Zanella, M., Strano, E., Pagel, M., & Porta, S. (2017). On the origin of spaces: Morphometric foundations of urban form evolution. Environment and Planning B: Urban Analytics and City Science, 46(4), 707–730. doi:10.1177/2399808317725075
- [2] Fleischmann, M. (2019). momepy: Urban Morphology Measuring Toolkit. Journal of Open Source Software, 4(43), 1807, https://doi.org/10.21105/joss.01807
Erratum
Martin Fleischmann graciously helped me to solve my issue on the tessellation of larger urban areas. I was able to tessellate for you the metropolitan area of Vancouver, CA, again using Open Street Map data. I also tried tessellating other larger urban areas, but the process failed on the part of the osmnx Python package. I might later look at this issue or I may not.



As Martin points out, when performing this type of analysis, one should beware the fact that it is resource consuming and the odds are that you will need to have a good computer or use some kind of web service to process your analysis. If you are on the coding/big data side of urban studies and you are interested in Martin’s work, I recommend that you follow him on his GitHub page for the latest news on his work @martinfleis
Hi, I am Martin, the author of momepy. Thank you so much for writing about it, I am really happy people find it useful.
You mentioned that you struggled to run tessellation for larger areas. Could you open an issue with a short description what happened? https://github.com/martinfleis/momepy/issues It can easily run out of memory on the default settings and large GeoDataFrame.
Thanks again!
Martin
Hi Martin! Of course! I will do this later today. Thank you and I must say thank you for coming over to check out our blog. I am sure that several of our readers and our journal authors will find momepy very useful. I already have some ideas! I will stay in touch.