# Streetscape morphometrics: Expanding momepy to analyze urban form from the street point of view

Alessandro Araldi, Martin Fleischmann, Giovanni Fusco, Marek Novotný

<figure><img src="image_1.png" /></figure>

## To cite this version:

Alessandro Araldi, Martin Fleischmann, Giovanni Fusco, Marek Novotný. Streetscape morphometrics: Expanding momepy to analyze urban form from the street point of view. SoftwareX, 2025, 31, pp.102242. 10.1016/j.softx.2025.102242. hal-05377975

HAL Id: hal-05377975

https://hal.science/hal-05377975v1

Submitted on 22 Nov 2025

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_2.png" /></figure>
<figure><img src="image_3.png" /></figure>

Original Software Publication

# Streetscape morphometrics: Expanding momepy to analyze urban form from the street point of view

Alessandro Araldi<sup>a,* ID</sup>, Martin Fleischmann<sup>b ID</sup>, Giovanni Fusco<sup>a ID</sup>, Marek Novotný<sup>b</sup>

<figure><img src="image_4.png" /></figure>

## ARTICLE INFO

Keywords:

Urban Form

Morphometric Descriptors

Streetscape

Pedestrian-Centered Analysis

Street Design

Momepy Library

## ABSTRACT

In this paper, we present momepy.streetscape, a new module of the Python library widely used for morphometric analysis, specifically designed to study streetscapes from a pedestrian perspective. The module enables systematic, in-depth analysis of street-based morphology using vector datasets of the built environment. It quantifies features such as street width, façade continuity, and other compositional attributes that shape pedestrian experience and perception. By incorporating streetscape metrics, the expanded momepy functions support interdisciplinary research into how street-level configurations influence social interactions, walkability, and neighborhood vitality.

## Metadata

<table><thead><tr><td>Nr</td><td>Code metadata description</td><td>Metadata</td></tr></thead><tbody><tr><td>C1</td><td>Current code version</td><td>v0.9.1</td></tr><tr><td>C2</td><td>Permanent link to code/ repository used for this code version</td><td>https://github.com/pysal/momepy</td></tr><tr><td>C3</td><td>Permanent link to reproducible capsule</td><td>https://github.com/uscuni/streetscape, archived at https://doi.org/10.5281/zenodo.14244266</td></tr><tr><td>C4</td><td>Legal code license</td><td>BSD-3-Clause</td></tr><tr><td>C5</td><td>Code versioning system used</td><td>git</td></tr><tr><td>C6</td><td>Software code languages, tools and services used</td><td>Python</td></tr><tr><td>C7</td><td>Compilation requirements, operating environments and dependencies</td><td>Python 3.10 or above. Package dependencies: geopandas≥0.12.0, libpysal≥4.12.0, networkx≥2.8, pandas≥1.5.1, shapely≥2, tqdm≥4.63.0, packaging https://docs.momepy.org</td></tr><tr><td>C8</td><td>If available, link to developer documentation/manual</td><td>Not applicable, use public GitHub Discussions</td></tr><tr><td>C9</td><td>Support email for questions</td><td></td></tr></tbody></table>

## 1. Motivation and significance

Understanding how the spatial organization of urban environments influences human perception, movement, and behavior is a central concern in urban morphology research [1–4]. Streetscapes play a crucial role in shaping the human experience of urban space. They serve as the physical and visual interface between urban design and human interaction, influencing the legibility, imageability, and overall functional and aesthetic quality of urban spaces [1,5,6]. They impact not only the visual appeal and usability of urban areas but also social interactions, walkability, and public life, underscoring the need for street-based analysis to understand these influences deeply [7,8]. Despite their importance, many analytical approaches prioritize broader urban configurations, often overlooking pedestrian-centered perspectives and the detailed morphometric properties of streetscapes.

Traditionally, streetscape analysis has relied on manual measurements, limiting both spatial coverage and methodological consistency. More recent computational approaches often require complex, multi-step workflows that depend on researchers’ technical expertise. Several methodologies have been proposed to quantify aspects of the streetscape [9–13], and some have been partially introduced into previous versions of momepy [14]. However, no complete, open-source toolkit of Python libraries/methods has yet emerged that encompasses a wide range of morphometrics at street-level and finer granularities,

<footnote><sup>a</sup> Université Côte d'Azur-CNRS-AMU-AU, ESPACE, 98 Bd Edouard Herriot, 06200, Nice, France</footnote>

<footnote><sup>b</sup> Department of Social Geography and Regional Development, Charles University, Albertov 6 128 00 Praha 2, Czech Republic</footnote>

<footnote>* Corresponding author.</footnote>

<footnote>E-mail addresses: alessandro.araldi@univ-cotedazur.fr (A. Araldi), martin.fleischmann@natur.cuni.cz (M. Fleischmann), giovanni.fusco@univ-cotedazur.fr (G. Fusco), marek.novotny@natur.cuni.cz (M. Novotný).</footnote>
enabling researchers to systematically apply these approaches across diverse research contexts. The lack of computational tools hinders large-scale, systematic, and reproducible analysis of how streetscape morphology influences urban form and function.

Several existing tools provide complementary approaches to analyzing urban public spaces. Street-network configurational tools, such as PST [15], QGIS SSx toolkit [16], UNA toolkits [17], and sDNA [18], analyze the spatial configuration of streets based on network and Space Syntax theories [3]. However, these approaches primarily focus on connectivity and movement patterns rather than the morphological properties of streetscapes. Likewise, Cityseer [19] integrates configurational metrics with accessibility measures but does not explicitly quantify the geometric characteristics of built space along street segments.

Other tools emphasize visual-spatial analysis but remain limited in their morphological assessment of streetscapes. DepthmapX [20], along with GIS-based tools in ArcGIS, QGIS, and the Python library T4GPD [21], facilitate isovist-based analyses, focusing on spatial openness rather than the structural composition of urban streetscapes. Meanwhile, street-image analysis tools [22] leverage computer vision to extract perceptual qualities from images but lack direct morphological quantification.

To address this gap, this work enhances momepy by introducing functions specifically designed to capture pedestrian-sensitive morphometrics at the street level. These new functions allow for detailed quantification of *skeletal streetscape* properties, key morphological features that shape urban experience and visual continuity [10]. By operationalizing complex, street-based measurements, the expanded momepy framework allows urban researchers to capture both the physical and visual characteristics of streetscapes with precision. This significantly facilitates scalable, comparative studies across extensive urban areas, enabling researchers to systematically evaluate variations in streetscape features across cities, neighborhoods, or even regions.

While the set of functions within this new module would likely be enough to stand on its own as an independent package; however, we acknowledge the need to minimize the fragmentation of the ecosystem, which would otherwise result in lower discoverability and higher maintenance cost.

Furthermore, these advancements hold significant potential for interdisciplinary urban research, particularly in environmental psychology, urban design, and social geography. Streetscape characteristics directly influence urban phenomena such as walkability [7] which in turn relate to quality of life, social interactions, and cohesion [8]. By integrating a pedestrian perspective into morphometric analysis, this toolkit enables researchers to systematically explore the relationship between streetscape design and urban phenomena, such as vitality, social interaction, and mobility [23,24], as well as other urban outcomes across multiple disciplines. By operationalizing skeletal streetscape morphometrics, this module facilitates such investigations, offering a methodological foundation for future interdisciplinary applications. Ultimately, this work supports the creation of more livable, inclusive urban spaces through informed planning and design [25].

## 2. Software description

To advance momepy's capability for streetscape analysis from a pedestrian perspective, we implemented a suite of computational functions that captures point-based measures of the skeletal streetscape. These functions distribute uniform points, referred to as Sight Points, along each street segment, with a user-defined inter-distance and a specified offset from the street edges. Morphometric descriptors are calculated at the granularity of the Sight Points and subsequently aggregated at the street segment level, allowing for a comprehensive analysis of streetscape characteristics while maintaining a focus on pedestrian experience.

### 2.1. Software architecture

The functionality is wrapped into a user-friendly API of the **momepy.Streetscape** class, which abstracts the individual steps required for a streetscape analysis into a set of five top-level methods, as illustrated in the Fig. 1. The initialization of the class directly computes the core variables derived from street network data and building footprints and stores the results in an internal representation linked to individual sight points. The result can be directly retrieved either on the sight point level as a geopandas.GeoXFrame using the method **point_level()**, or at the level of street edges using the method **street_level()**. Optionally, if the data is available, users can compute variables derived from plots using **compute plots()** and those from digital terrain model using **compute slope()**. Both of these update the internal representation and can be retrieved via the aforementioned methods.

### 2.2. Software functionalities

The following sections detail the steps involved in using these functions for an in-depth analysis of streetscape characteristics.

#### 2.2.1. Generation of street-building descriptors

**momepy.Streetscape** (Code 1) is the main class implementing all other methods. This class takes as input a line layer representing street centerlines and a polygon layer corresponding to building footprints. It computes an initial set of street-based morphometrics that quantify the relationship between the street and surrounding built environment, both at the Sight Point and Street-segment levels. The whole process is outlined in the pseudocode in Code 2 and the subsequent paragraphs.

The first step is to distribute Sight Points (SPs) uniformly along each street segment, facilitating a structured sampling of the streetscape. The user defines the interval between SPs (sightlineSpacing), allowing customizability based on desired spatial granularity. Additionally, an intersection offset separates SPs from street intersections to ensure uniformity along the entire street length and avoid outliers; the offset is also a user-defined parameter (intersection_offset). This first step provides the foundation for capturing detailed pedestrian-level spatial morphometrics.

The second step constructs four primary sightlines (SLs) for each Sight Point (SP): two perpendicular to the street centerline (left and right) (Fig. 2) and two tangent lines (front and back). These labels—"left/right" and "front/back"—are used purely to facilitate two-sided measurements and do not imply any actual directionality. The SLs are designed to capture a pedestrian's typical field of view within set visibility thresholds, adjustable via the parameters sightlineLength and tangent_length, which define the lengths of the left/right and front/back SLs, with default values of 50 and 300 m, respectively.

To account for concave street bends, where visual horizons naturally expand on the outer curve, additional SLs are generated along these curves to enhance the spatial analysis. This feature uses the angleolerance parameter to define the minimum angle required between each additional SL, ensuring a detailed capture of the extended view typical in curving streets (orange lines in Fig. 2-left).

The SLs, along with their intersections with building surfaces and any provided building attributes, such as building height (height_col) and building type (category_col), form the basis for calculating a range of morphometric descriptors. The left/right SLs, oriented perpendicular to the street centerline, capture measures like cross-sectional open space, setback, and building height for each SP, calculated in both one-sided and two-sided formats (for instance, Fig. 2-right shows the case of a straight street: the histogram below displays the distribution of building coverage ratio and building height, separately for the right and left sides of the street, at each sight-point along the street sample). Measurements enhanced at concave sections, where additional SLs expand visibility, are incorporated at the SP level as well. The front/back tangent SLs enable analysis along the street, examining the distance a
<figure><img src="image_5.png" /><figcaption>Fig. 1. Diagram of the user-targeted interface of the core class.</figcaption></figure>

```
momepy.Streetscape(
    # Inputs :
    streets, # Street segment geopandas.GeoDataFrame
    buildings, # Building geopandas.GeoGataFrame
    # Parameters :
    sightline_length=50, # Length of SightLines from SightPoint(SP)
    tangent_length=300, # Length of tangent SightLines from SP
    sightlineSpacing=3, # Spacing between SP
    intersection_offset=0.5, # Offset from street intersection
    angle_tolerance=5, # Concave street bend angle for SL enrichment
    height_col=None, # Height column for height-related descriptors
    category_col=None) # Categorical column for type-related descriptors
```

Code 1. momepy.Streetscape.

pedestrian can see along the street before their view is obstructed by a building. All SP-level morphometrics are then aggregated to create street-level indicators, such as cross-sectional Open Space along the street, Setback along the street, and Building Heights along the street (see Section 3.1 for a detailed description of each metric). Together, these descriptors provide nuanced insights into the skeletal structure of the streetscape from a pedestrian perspective, quantifying elements that influence perceived enclosure, openness, and the spatial relationship between streets and adjacent buildings.

### 2.2.2. Generation of street-plots descriptors

momepy.Streetscape.computeplots (Code 3) builds on the results of the previous function by analyzing the relationship between the street centerline and a secondary layer of polygons representing the plot system. The plot layer should be provided by the user as an input dataset. This function enriches the streetscape analysis by adding morphometrics that describe the geometric relationship between the street and plot boundaries.

Using the output from the prior step allows the reuse of the same Sight Points and Sightlines, maintaining consistent granularity and spatial units across both building and plot layer analyses. Given the typically larger scale of plots, this function extends the original sightlines to a customizable depth, defined by sightline plot depth extension, which has a default value of 300 m, enabling more comprehensive

coverage of the plot layer. Similarly to the previous function, Street-Parcel descriptors are implemented at the SP-level and then aggregated to create street-level indicators, such as Parcel Frequency along the street, Parcel Setback along the street, etc. (see Section 3.2 for a detailed description of each metric). These measures provide insights into how plot dimensions influence pedestrian perception, adding depth to the analysis of street edges and property boundaries.

### 2.2.3. Generation of street-site topography measures

momepy.Streetscape.compute slope (Code 4) evaluates street slopes by using data from a digital terrain model (DTM), if provided by the user, to capture topographical influences on streetscape dynamics. For each Sight Point (SP), this function assigns a slope value, calculated both in degrees (angle) and as gradient percentage, based on the nearest available DTM data. This information provides critical insight into the slope variations along the street, enriching the streetscape analysis by accounting for the impact of terrain on pedestrian experience and movement.

### 2.2.4. Extracting streetscape morphometrics

Two functions are designed to extract morphometric descriptors as geopandas.GeoDataFrames from the internal representation (Code 5):

momepy.Streetscape.point level: is designed to extract metrics at the point level, enabling a detailed examination of spatial properties at specific locations along the streetscape.
for each street segment s ∈ S do
    Compute the number of Sight Points nSP:
        nSP ← [(L - 2 × J0) / SI] + 1
    Adjust interspace I:
        I ← (L - 2 × J0) / nSP
    Distribute SPs uniformly along the segment with distance I
end for

for each Sight Point SP do
    Define four primary sightlines:
        SL_left, SL_right (perpendicular, 50m)
        SL_front, SL_back (tangent, 300m)
    if SP is on a bend then
        Compute bending angle BA
        if BA > TA then
            Generate additional sightlines on the concave sid
        e: nSL'_SP ← [BA / TA]
    end if
end for

for each Sight Point SP do
    Compute measures based on the intersection between SL and Building Footprints BF:
        Using perpendicular sightlines SL_left and SL_right
        Using tangent sightlines SL_front and SL_back
end for

<figure><img src="image_6.png" /><figcaption>**Fig. 2.** Computational protocol for the skeletal streetscape obtained through left/right sightlines, enriched over street bends (orange sightlines). On the left, identification of the street parallel façades subsegments in red. On the right, sight-point level morphometrics of building coverage ratio (cr) and building height (h) along the street. (Source:[26]).</figcaption></figure>

**momepy.Streetscape.street_level:** is designed to extract de-
scriptors aggregated at the street level, allowing for a comprehensive
overview of streetscape characteristics across an entire intersection-to-
intersection street segment.

Moreover, metrics at the SP level allows the user to aggregate them
using other definitions of street segment such as named street,

continuous streets, etc.

3. Illustrative examples

In this chapter, we introduce a suite of streetscape morphometrics
developed to enhance pedestrian-centered analysis within the momepy
1 Streetscape.compute plots(
2 # Inputs :
3 plots, # Building Geodataframe
4 # Parameters :
5 sightline plot depth extension=300) # Length of SightLines from SightPoint(SP)
6

Code 3. momepy.Streetscape.compute plots.

1 Streetscape.compute slope (raster) # Input: Raster

Code 4. momepy.Streetscape.compute slope.

1 Streetscape.street_level()
2 Streetscape.point_level()

Code 5. momepy.Streetscape.point_level and momepy.Streetscape.street_level.

library. These morphometrics are organized into three groups, each
corresponding to the outcomes of specific functions: 3.1 Street-Building
Descriptors, 3.2 Street-Parcel Descriptors, and 3.3 Street-Site
Morphology Descriptors.

Some outcomes of the pedestrian-centered streetscape analysis,
including both point-level and street-level morphometrics, are available
in the momepy documentation at http://docs.momepy.org/en/stabl
e/examples/streetscape.html or in the bespoke repository containing
complete code and data to reproduce the analysis in Nice, France,
available from https://github.com/uscuni/streetscape, archived at do
i:10.5281/zenodo.14244266.

A sensitivity analysis was conducted on the same test area to examine
the effects of key parameters on the module's performance and preci-
sion, and to define the default values. The results of these tests, which
focus on parameters such as Sightline Interdistance (SI), Intersection
Offset (IO), and Tolerance Angle (TA), are presented in Appendix C.

3.1. *Street-building descriptors*

This section explores a set of morphometric descriptors that examine
the relationship between street space and building characteristics. The
tables presented in Appendix A (App. A, Tables 1–7) summarize key
metrics used to describe the visible non-built space, building layout,
street corridor effects, building coverage, typology, height distribution,
and vertical openness and enclosure. Each table provides a simplified
visual example that illustrates the logic behind the protocol, allowing
readers to better appreciate how the indicators are derived and applied
in practice. The visual examples help contextualize the indicators at
both the point and street segment levels, showing how these metrics
correspond to the geometry of the street and the adjacent buildings. In
addition to the core indicators, the tables also outline possible derivable
metrics, demonstrating the flexibility and depth of analysis available
through the use of these descriptors.

3.2. *Street-parcel descriptors*

In this section, we focus on the relationship between the street and
adjacent parcels (or plots) that line the street. The morphometric de-
scriptors outlined in the tables here help quantify the spatial configu-
ration of parcels, examining their influence on street design, use, and
functionality. These descriptors contribute to understanding how street
spaces and parcel layouts interact to create specific urban forms and
pedestrian experiences. Simplified visual examples that showcase in
Appendix A (App. A, Table 8) how the indicators are applied to the

street-parcel context at both the point and street segment levels, with
corresponding labels and derivable metrics provided.

3.3. *Street and street-site morphology descriptors*

The final section in this chapter explores the intrinsic geometrical
properties of the street centerline as well as its relationship with the site-
specific characteristics of the urban environment (App. A, Table 9).

4. Impact

The expanded momepy functions for pedestrian-centered streetscape
analysis have the potential to transform the daily practice of urban re-
searchers and professionals by enabling the rapid extraction of a
comprehensive set of morphometrics (20 and 80 metrics at the sight
point and street level respectively) from a streetscape perspective.
Selected indicator maps are provided in Appendix B. This advancement
significantly reduces the time and computational effort required to
analyze complex urban environments. For instance, utilizing the main
module momepy.Streetscape on a typical desktop computer equipped
with an Intel(R) Core(TM) i9-10,900 K CPU @ 3.70 GHz (10 cores) can
process OpenStreetMap (OSM) building and edges data (including all
street types) at an implementation speed proportional to the total edge
length, achieving rates of 0.75-0.9 km per second, assuming default
settings for sightline spacing and sightline length. These performance
measures (Tab. 1) allow the reader to appreciate the computational ef-
ficiency and scalability of our module across various urban contexts.
This efficiency empowers researchers to quickly and effectively analyze
extensive datasets, enabling real-time exploration of urban design,
environmental psychology, walkability, and related fields. The algo-
rithm scales linearly while being single threaded and fully in-memory.
Future developments shall explore the potential of parallelization,
providing increased performance. However, as this may require
considerable reorganization of the internal data structure, it was left
from the initial release.

The momepy.streetscape functions promise to significantly both re-
searchers and practitioners.

On the academic side, scholars in various urban research disciplines, including environmental psychology, urban design, morphology, social studies, and walkability, can now systematically investigate the role of streetscape qualities in shaping urban dynamics, such as retail distribution, crime patterns, real estate values, and pedestrian behavior. In environmental psychology, researchers could investigate how street morphology influences cognitive and emotional responses, providing
<table><caption>**Table 1**
Performance metrics of streetscape analysis using momepy.</caption><thead><tr><th>Study area</th><th>N input buildings</th><th>N input edges</th><th>Total length edges [km]</th><th>N edges output</th><th>N sight points [M]</th><th>Time [min]</th><th>Point/sec</th><th>Km/sec</th></tr></thead><tbody><tr><td>Nice</td><td>579.834</td><td>311.722</td><td>39.161</td><td>305.192</td><td>13,1</td><td>732,48</td><td>298,07</td><td>0,89</td></tr><tr><td>Göteborg</td><td>81.824</td><td>288.546</td><td>12.208</td><td>274.776</td><td>4,12</td><td>232,33</td><td>295,56</td><td>0,88</td></tr><tr><td>Viareggio</td><td>208.250</td><td>99.210</td><td>9933</td><td>96.734</td><td>3,33</td><td>189,8</td><td>292,41</td><td>0,87</td></tr><tr><td>Vienna</td><td>414.336</td><td>295.102</td><td>21.374</td><td>394.446</td><td>7,19</td><td>442,23</td><td>270,98</td><td>0,81</td></tr><tr><td>Lille</td><td>569.243</td><td>276.702</td><td>17,672</td><td>269.760</td><td>5,94</td><td>392,77</td><td>251,93</td><td>0,75</td></tr></tbody></table>

valuable insights into the effects of urban environments on stress, comfort, and place attachment [27].

Morphological analysis could also benefit from these new functions by linking compositional street descriptors to configurational properties. This connection bridges traditional notions of proximity bands along the street with contemporary, human-centered spatial analysis [29]. The streetscape morphometrics introduced in the new momepy module could be cross-analyzed to provide a more holistic perspective on the different types of observable urban fabric. Araldi and Fusco [11,26] exemplify this approach through their pedestrian-centered method of urban fabric analysis, termed Multiple Fabric Assessment (MFA). The integration of streetscape design and configurational properties (identified by the aforementioned tools in Section 1) enables direct cross-analysis between the physical design of streetscapes, centralities, and urban function distributions throughout the street network (e.g., in the case of Cityseer). For urban designers, the integration of morphometric descriptors enables comprehensive walkability studies that foster the creation of more pedestrian-friendly environments [2]. Additionally, the inclusion of metric descriptors for public-private interfaces facilitates exploration into how street designs influence community interaction, neighborhood cohesion, and social inclusivity, ultimately contributing to the development of equitable public spaces [28]. The assessment of streetscape morphology, including the canyon effect, enhances the understanding of street-level climate-related factors such as temperature and comfort, which directly influences usage patterns and pedestrian movement [30]. Overall, this extension of momepy promotes cross-disciplinary analysis that integrates insights from urban design, psychology, and mobility studies, creating a robust framework for evidence-based, resilient, and human-centric urban design that prioritizes the needs and experiences of city inhabitants.

On the applied side, urban practitioners, planners, and policymakers can leverage this tool to assess and manage streetscape qualities within their cities. The ability to precisely map certain desired or undesired morphological characteristics allows for evidence-based urban design, regulatory interventions, and impact assessments of new developments. While these professionals often rely on qualitative assessments or high-cost data collection efforts, this module provides a streamlined, scalable, and accessible alternative for integrating streetscape analysis into planning and decision-making processes.

Finally, it is worth noting how *momepy.streetscape* (streetscape morphometrics), *Cityseer* (street configuration and urban function accessibility), *T4GPD* (for Isovist computation), and the *streetscape* (for street-image visual analysis) represent four interesting libraries that could foster valuable synergies. All of these libraries are developed within the same environment, and they use public space, points, and streets as reference units. This commonality will enhance the overall analytical capability for studying the urban form of public spaces. By integrating these tools, researchers can explore the interconnections between streetscape characteristics, urban centralities, and function distribution within urban areas. The street and public space serve as the common spatial unit across various approaches to urban form analysis [29,31], ultimately leading to a more comprehensive understanding of

urban form and more informed, effective urban planning strategies.

## 5. Conclusions

The introduction of pedestrian-centered streetscape analysis functions in momepy significantly enhances urban morphometric tools, enabling a quantitative assessment of urban environments from a human perspective. This enhancement deepens our understanding of how street-level design factors affect pedestrian experience and perception.

These new functionalities bridge various disciplines, including urban morphology, environmental psychology, urban design, and social studies, fostering interdisciplinary research that addresses critical urban challenges. We hope that, by facilitating evidence-based decision-making, streetscape momepy functions will support the creation of more livable, inclusive, and resilient urban public spaces that prioritize pedestrian needs. Future perspectives include integrating ground-level imagery for enriching the description of the 'skin' characteristics of streetscapes, capturing elements like colors, textures, and façade details [32]. This addition will provide a more holistic understanding of the visual environment experienced by pedestrians. Furthermore, incorporating advanced data sources such as LiDAR imagery and detailed 3D modeling will enhance the analysis of building porosity and other façade elements, allowing for a more nuanced exploration of how these features impact the urban experience. Additionally, optimizing computational performance through parallel processing techniques will be an important step in improving scalability. Implementing parallelization strategies, such as multiprocessing or GPU acceleration, could significantly reduce computation times, making large-scale analyses of entire metropolitan areas more efficient. By expanding the data inputs and methodologies, future research can more effectively address the complexities of urban environments, promoting a comprehensive understanding of the interaction between urban form and human behavior. This approach will ultimately lead to better-informed urban design strategies that cater to the diverse needs of urban populations.

### CRediT authorship contribution statement

**Alessandro Araldi:** Writing – review & editing, Writing – original draft, Visualization, Software, Methodology, Conceptualization. **Martin Fleischmann:** Writing – review & editing, Visualization, Software. **Giovanni Fusco:** Writing – review & editing, Conceptualization. **Marek Novotný:** Software.

### Declaration of competing interest

The authors declare the following financial interests/personal relationships which may be considered as potential competing interests:

Martin Fleischmann reports financial support was provided by Charles University. If there are other authors, they declare that they have no known competing financial interests or personal relationships that could have appeared to influence the work reported in this paper.
Appendix A

This appendix contains tables presenting simplified visual schematics that illustrate the underlying logic and derivation of the indicators.

<table><caption>**Table 1**
Summary table of morphometric descriptors for Visible non-built space.</caption><thead><tr><th colspan="4">Visible non-built space</th></tr><tr><th></th><th>Sight Point Measures</th><th>Street Segment Measures</th><th></th></tr></thead><tbody><tr><th>Indicator description</th><td>Open Space Width measured as the length of the sightline between the sight-point and the building or the maximal length [sightline_length]. The measure is provided both left/right individually [left/right]_os and as the average of left and right open space. Multiply os by 2 if you want to get the measure of the total cross-sectional open space width (total_os=left_os+right_os)</td><td>Open Space Width along the street measured as the average or the median (med) of the Open Space Width along the street segment (Right, Left and Total).</td><td>Open Space Width Variability along the street measured as the deviation of the sightline length along the street segment (Right, Left and Total). The deviation is implemented as: standard deviation (_std), Median Absolute Deviation from the average (_mad), the Median Absolute Deviation from the Median (_mad_med).</td></tr><tr><th>Labels</th><td>- left_os<br/>- right_os<br/>- os</td><td>- [left/right]_os<br/>- os<br/>- [left/right]_os_med<br/>- os_med</td><td>-[left/right]_os_std<br/>-os_std<br/>- [left/right]_os_mad<br/>-os_mad<br/>- [left/right]_os_mad_med<br/>-os_mad_med</td></tr><tr><th>Other derivable measures</th><td colspan="3">Depending on the goals of the analysis, if street width measurements are available, you can subtract these values from the [os], left_[l]/right_[r] measures, for both median and average. Removing the street width results in a cross-sectional Open Space Width as measured from the edges of the street rather than from the centerline. Measures of variability are not influenced by the street width when defined as a constant along the street.<br/><br/><b>Streetscape Perforation along the street - proxy</b><br/>The % of sightlines not touching buildings within the maximal distance. Since the number of [left/right] sightlines touching buildings is stored as n_r and n_l while the number of sightpoint is N, then the Streetscape Perforation can be computed as:<br/>-[left/right]_Street_Perforation= 1-(n_[l/r])/N<br/>-Streetscape Perforation= 1-(n_[l+n_r])/2N</td></tr></tbody></table>
<table><caption>**Table 2**
Summary table of morphometric descriptors for Building Layout along the Street.</caption><thead><tr><th colspan="4">Building layout along the street</th></tr><tr><th></th><th>Sight Point Measures</th><th colspan="2">Street Segment Measures</th></tr></thead><tbody><tr><th>Indicator description</th><td>Setback measured as the length of the sightline between the sight-point and the building, only if the sightline reaches a building.</td><td>Setbacks along the street measured as the average or the median (med) of the sightline length along the street segment only if the sightline reaches a building (right, left and total).</td><td>Horizontal Building Misalignment along the street measured as the deviation of the sightline length along the street segment only if the sightline reaches a building (right, left and total). The deviation is implemented as: standard deviation (std), Median Absolute Deviation from the average (mad), the Median Absolute Deviation from the Median (mad_med).</td></tr><tr><th>Labels</th><td>- leftSB [m]<br/>- rightSB [m]<br/>- SB= avg(leftSB; rightSB)<br/>NB: multiply os by 2 if you want to have the measure of the total building setback (totalSB= leftSB+rightSB)</td><td>- [left/right]SB<br/>-SB<br/>- [left/right]SB_med<br/>-SB_med</td><td>- [left/right]SB_std<br/>-SB_std<br/>- [left/right]SB_mad<br/>-SB_mad<br/>- [left/right]SB_mad_med<br/>-SB_mad_med</td></tr><tr><th>Other derivable measures</th><td colspan="3">- If street width measurements are available, you can subtract these values from the [SB], left_[]/right_[] measures, for both median and average. Removing the street width results in a building Setback h as measured from the edges of the street rather than from the centerline.<br/>- If you compute [Public Space Width] from Streetscape.compute Plots you can subtract this measure from [Setback] resulting in the Setback defined as the distance between Building Front Façade and the Public-Private edge.<br/>- Measures of variability are not influenced by the street width when defined as a constant along the street.</td></tr></tbody></table>

<figure><img src="image_7.png" /></figure>
<table><caption>**Table 3**
Summary table of morphometric descriptors for Street Corridor Effect.</caption><thead><tr><th colspan="3">Street Corridor Effect</th></tr></thead><tbody><tr><td colspan="3"><strong>Street Segment Measures</strong></td></tr><tr><td colspan="3"><strong>Protocol:</strong> At each point where the sightlines intersect façades, a segment of the façade (Ā_left/right) is selected, using a buffer equal to half the inter-distance [sightlineSpacing]. Similarly, a corresponding segment of the street (Ś) is selected. The angle between the façade segment (Ā_left/right) and the street segment (Ś) is then measured. If this angle is below or above a specific threshold (5°), the segment Ā_left/right is tagged as either parallel or non-parallel to Ś. This process is repeated for each Sightpoint (i) along the street. The results of this assessment are subsequently used as follows:</td></tr><tr><th>Indicator description</th><th>Parallel Façades relatively to the street length<br>The length of building façades (obtained as the number of tagged façade samples* interdistance) divided by [once/twice] the street segment length [one/double sided measures].<br>In the image:<br>green-façades length /street length<br>The same indicator is also assessed within 15 meters from the street centerline [indicator name]_15</th><th>Parallel Façades relatively to the building façades<br>The number of building façade tagged samples divided by the total number of façade samples (n_l,n_r).<br>In the image:<br>number of sight-lines intersecting green façades /number of sight-lines intersecting all façades<br>The same indicator is also assessed within 15 meters from the street centerline [indicator name]_15</td></tr><tr><th>Labels</th><td>- par_tot,<br>- [left/right]_par_tot<br>- par_tot_15<br>-[left/right]_par_tot_15</td><td>-par_rel<br>- [left/right]_par_rel<br>-par_rel_15<br>-[left/right]_par_rel_15</td></tr></tbody></table>
<table><caption>**Table 4**
Summary table of morphometric descriptors for Building Coverage and Typology.</caption><thead><tr><th colspan="5">Building Coverage and Typology</th></tr><tr><td colspan="5">Only if variable category_col is defined as input of momepy.Streetscape</td></tr><tr><th></th><th>Sight Point Measures</th><th colspan="3">Street Segment Measures</th></tr></thead><tbody><tr><th>Indicator description</th><td>Building Coverage Ratio*<br>measured as the ratio between the sightline length intersecting polygons (building coverage) and the maximal length [sightline_length].<br>NB: All buildings within the maximal distance are considered</td><td>Building Coverage Ratio along the street<br>measured as the average of the Building Coverage ratio along the street.<br>NB: All buildings within the maximal distance are considered</td><td>Building Type Ratios along the street **<br>measured as the number of sightlines intersecting buildings of type j (within a given building typology) over the total number of sightlines intersecting buildings (right and left).<br>NB: only building facing the street are considered (the first building intersected by the sightline)</td><td>Building Frequency/ Fragmentation along the street<br>measured as the ratio between the number of buildings along the street and the street length (Right, Left and Total).</td></tr><tr><th>Labels</th><td>- left_BC [m]<br>- right_BC [m]<br>- BC [m]</td><td>- [left/right]_built_cov<br>erage<br>-built_coverage</td><td>-building_prevalence[j]</td><td>-[l/r]_built_freq<br>-built_freq</td></tr><tr><th>Other derivable measures</th><td colspan="4">* Any polygonal layer can be provided to momepy.Streetscape() instead of building layer such as vegetation surfaces, allowing for instance the implementations such as Vegetation Coverage Ratio, Vegetation Type Ratios (if a vegetation typology is available), etc.<br>** Type could be any categorical variable [category_col] such as building type, building use, frontage type etc., within a corresponding established typology, resulting in a proportion of the visible type j over the streetscape.<br>To get the Building Type Ratios Weighted by Ground Surfaces not limited at the first building facing streets, consider multiple runs of momepy.Streetscape using one category at the time.</td></tr></tbody></table>
<table><caption>**Table 5**
Summary table of morphometric descriptors for Building Heights Distribution.</caption><thead><tr><th colspan="4">Building Heights Distribution</th></tr><tr><td colspan="4">Only if variable height_col is defined as input of momepy.Streetscape</td></tr><tr><th></th><th>Sight Point Measures</th><th>Street Segment Measures</th><th></th></tr></thead><tbody><tr><th>Indicator description</th><td>Building Height* measured as the height of the building observed at the intersection between each sightline and a building, if the sightline intersects a building.</td><td>Building Heights along the street* measured as the average and the median (med) of building heights along the street (right, left and total).</td><td>Vertical Building Misalignment measured as the deviation of the heights along the street segment (right, left and total). The deviation is implemented as: standard deviation (_std), Median Absolute Deviation from the average (_mad), the Median Absolute Deviation from the Median (_mad_med).</td></tr><tr><th>Labels</th><td>- left_h [m];<br/>- right_h [m];<br/>- h= avg(left_h; right_h)</td><td>-[left/right]_H<br/>-H<br/>-[left/right]_H_med;<br/>-H_med</td><td>[left/right]_h_std, h_std<br/>[left/right]_h_mad, h_mad<br/>[left/right]_h_mad_med, h_mad_med</td></tr><tr><th>Other derivable measures</th><td colspan="3">Vertical Surfaces (VS) along the street -proxy<br/>The Vertical surface can be obtained as<br/>VS_[left/right]= [left/right]_H* n_[l/r]*interdistance<br/>Total_VS= VS_left+ VS_right<br/>the smallest the interdistance the more close to the real surface<br/><br/>* Any continuous variable var describing the building can be used in [height_col] such as building Age. The resulting [left/right]_h will correspond to var distributed along the street; [left/right]_h, h, [left/right]_h_med, h_med would correspond to the average and median of input var (i.e. average visible year along the street, etc.)<br/><br/>* Any polygonal layer can be potentially provided to momepy.Streetscape() instead of building layer such as vegetation polygon with their height, allowing for instance the implementations of indicators such as Vegetation Height along the street</td></tr></tbody></table>
<table><caption>**Table 6**
Summary table of morphometric descriptors for Vertical Openness and Enclosure.</caption><thead><tr><th colspan="4">Vertical Openness and Enclosure</th></tr><tr><th colspan="4">Only if variable height_col is defined as input of momepy.Streetscape</th></tr><tr><th></th><th>Sight Point Measures</th><th>Street Segment Measures</th><th></th></tr></thead><tbody><tr><th>Indicator description</th><td><strong>Building Height - Width Ratio</strong> measured as the ratio between building height ([left/right]_H) and building distance from the centerline ([left/right]_sb)<br/><strong>Cross-sectional Sky View Factor</strong> Angle [°] of visible sky measured between the top of the buildings on either side of the street and the midpoint of the street at ground level (highlighted green in the image)</td><td><strong>Height - Width along the street</strong> measured as the average or the median (med) of the heights-width ratios of the buildings observed along the street segment (right, left and total).<br/><strong>Cross Sectional Sky View Factor along the street</strong> Average of the cross sectional sky view factor, along the street</td><td><strong>Height - Width Variability along the street</strong> measured as the deviation of the heights-width ratios along the street (right, left and total). The deviation is implemented as: standard deviation (_std), Median Absolute Deviation from the average (_mad), the Median Absolute Deviation from the Median (_mad_med)</td></tr><tr><th>Labels</th><td>- [left/right]_hw;<br/>- hw= avg(left_HW; right_HW)<br/>-NB: θ at the point level can be obtained as : 180-np.rad2deg(np.arctan(left_HW)) - np.rad2deg(np.arctan(right_HW)) if [left/right]_hw are not nan</td><td>-[left/right]_hw<br/>-hw<br/>-[left/right]_hw_med,<br/>-hw_med<br/>-csosva= avg(θ)</td><td>[left/right]_h_std<br/>h_std<br/>[left/right]_h_mad<br/>h_mad<br/>[left/right]_h_mad_med,<br/>h_mad_med</td></tr><tr><th>Other derivable measures</th><td colspan="3">All these measures do not consider the site morphology underlying the buildings. This approximation should not impact the outcomes assuming small elevation variation within the streetscape. This might not always be true: including the site morphology into Vertical Openness and Enclosure Indicators require the use of point-level individual measures from the function momepy.Streetscape.compute_slope() to estimate the DTM height value for each sight point along the street, and the function providing the Z value of building as var_h. and combining them.</td></tr></tbody></table>
<table><caption>**Table 7**
Summary table of morphometric descriptors for Sight Depth Indicators.</caption><thead><tr><th colspan="4">Sight Depth</th></tr><tr><th colspan="4">Front/back sightlines are defined as the tangent half-line from the Sight Point (i) up to a building façade or a user defined maximal distance (tangent_length, default value: 300m)</th></tr><tr><th></th><th>Sight Point Measures</th><th colspan="2">Street Segment Measures</th></tr></thead><tbody><tr><th>Indicator description</th><td>Visual Depth measured as the length of the tangent Front/Back SightLine from the Sight Point to the intersection point with the first building encountered or the user defined maximal length (tangent_length)<br>The Two-Sided Visual Depth can be obtained as the sum of frontSB+backSB</td><td>Visual Depth along the street<br>measured as the average of the (front_sightline + back_sightline) length along the street segment (right, left and total).<br>Visual Depth-to-Width ratio along the street<br>measured as the average of the ratios between (front_sightline + back_sightline) length and open space.</td><td>Visual Depth Fluctuation along the street<br>measured as the deviation (std) of the (front_sightline + back_sightline) length along the street segment.<br>Visual Depth-to-Width Fluctuation along the street<br>measured as the deviation (std) of the ratios between (front_sightline + back_sightline) length and open space.</td></tr><tr><th>Labels</th><td>-front/backSB</td><td>- tan<br>- tan_ratio</td><td>- tan_std<br>- tan_ratio_std</td></tr></tbody></table>
<table><caption>**Table 7**
Summary table of morphometric descriptors for Sight Depth Indicators.</caption><thead><tr><th colspan="5">Parcel layout along the street</th></tr><tr><th></th><th>Sight Point Measures</th><th colspan="3">Street Segment Measures</th></tr></thead><tbody><tr><th>Indicator description</th><td><strong>Public Space Width</strong> is the sightline length between the Sight Point and the first parcel intersected or the maximal length (sightline_plot_depth_extensión, default value 300m)<br/><strong>Perpendicular Parcel Depth</strong> is the depth of the first parcel bordering the street measured with perpendicular lines to the street. It is measured as the sightline length between the first and the second intersection with the parcel polygons (up to the maximal length)</td><td><strong>Public Space Width along the street</strong> is measured as the average of the Public Space Width along the street<br/><strong>Perpendicular Parcel Depth</strong> is measured as the average of Perpendicular Parcel Depth along the street</td><td><strong>Parcel count and frequency along the street</strong><br/>Parcel count is measured as the number of plots on the left and right side of the street ([l/r]_plot counts). The Plot frequency is measured as the total number of plots (left+right) divided by the street length</td><td><strong>Parcel Width-to-Depth Ratio along the street</strong> and <strong>Width-to-Perimeter Ratio along the street</strong><br/>These measures are computed as the average of the <strong>Parcel Width-to-[Depth/Perimeter] Ratios</strong> calculated at every sightpoint where: <strong>-Parcel Width</strong> is the portion of the parcel perimeter facing the street. <strong>-Parcel Depth</strong> is the <strong>Perpendicular Parcel Depth</strong>. <strong>-Perimeter</strong> is the overall perimeter of the parcel facing the street</td></tr><tr><th>Labels</th><td>- plot_seqSB<br/>- plot_seqSB_depth</td><td>- plot_seqSB<br/>- [l/r]_plot_seqSB<br/>- plot_depth<br/>[l/r]_plot_depth</td><td>- [l/r]_plot_count<br/>- [l/r]_plot_frequency<br/>- plot_frequency</td><td>- plot_WD_ratio - [l/r]_plot_WD_ratio<br/>- plot_WP_ratio - [l/r]_left_plot_WP_ratio</td></tr><tr><th>Other derivable measures</th><td colspan="4">* Any polygonal layer can be provided to streetscape.compute plots() instead of Parcel layer. The interpretation of the resulting variables needs to be adjusted accordingly. i.e. Perpendicular Parcel Depth when using the building layer would correspond to <strong>Perpendicular Building Depth</strong> describing the depth of the first building bordering the street; similarly Parcel Width-to-Depth/Perimeter Ratio along the street would correspond to <strong>Building Width-to-Depth/Perimeter Ratio along the street</strong>.</td></tr></tbody></table>
<table><caption>**Table 9**
Summary table of morphometric descriptors for Street Level measurement.</caption><thead><tr><th colspan="4">Street Level measurement</th></tr></thead><tbody><tr><td>Indicator description</td><td>Street centerline geometrical shape:<br>Street length correspond to the length of the street segment geometry<br>Street Windingness (or Tortuosity) corresponds to the ratio between the street segment length and the measure of the straight line between its two endpoints.</td><td>Street centerline intersection degrees:<br>Street edges nodes degree . Nodes are divided into three groups (Node degree 1, 4, 3/5+) and associated with dummy boolean variables 0-1. The average between the two dummy variables is then associated with the street. nodes_degree_[n] is then equal to 0 if none of the two nodes is n; 0.5 if at least one of the two edges has both node degree n; 1 if both street edges are associated to node degree n. Cul-de-sac are identified as nodes_degree_1= 0.5</td><td>Street-Site morphology<br>Street centerline slope is measured as the average value of the slope measures (both as degree and percentage) observed at every Sight Point along the street (or the closest value to it depending on the size of the Digital Terrain Model provided to compute_slope function)<br>If Digital Terrain Model available<br>momepy.Streetscape.compute_slope()</td></tr><tr><td>Labels (column names)</td><td>'street_length' 'windingness'</td><td>- nodes_degree_1<br>- nodes_degree_4<br>- nodes_degree_3_5_PLUS</td><td>-slope_degree<br>-slope_percent</td></tr></tbody></table>

<figure><img src="image_8.png" /></figure>
Appendix B

This appendix presents a series of maps illustrating the type of results that momepy.streetscape enables users to obtain. These visualizations were generated using momepy.streetscape() with OpenStreetMap (OSM) datasets of buildings and street segments of Nice, Vienna, Goteborg and the Versilia conurbations. They provide insight into the spatial patterns captured by the analysis. The complete code and data used to reproduce these results for Nice, France, are also available in the dedicated repository at GitHub and archived at Zenodo (DOI: 10.5281/zenodo.14244266).

<figure><img src="image_9.png" /><figcaption>**Figure A1.** Streetscape Morphometrics: Street Sight Depth at the point-level (Nice).</figcaption></figure>
<figure><img src="image_10.png" /><figcaption>Figure A2. Streetscape Morphometrics: Height-Width Ratio at the street-level (Nice).</figcaption></figure>

<figure><img src="image_11.png" /><figcaption>Figure A3. Streetscape Morphometrics: Coverage Ratio at the street-level (Göteborg).</figcaption></figure>
<figure><img src="image_12.png" /><figcaption>Figure A4. Streetscape Morphometrics: Building Frequency along the street (Vienna).</figcaption></figure>

<figure><img src="image_13.png" /><figcaption>Figure A5. Streetscape Morphometrics: Street Parallel Façades (Vienna).</figcaption></figure>
# Appendix C

## Sensitivity Analysis of momepy.streetscape Parameters

This Appendix presents a sensitivity analysis of the three key parameters influencing the morphometric descriptors computed using momepy. streetscape: Sightline Interdistance (SI), Intersection Offset (IO), and Tolerance Angle (TA). The objective is to assess their impact on various basic indicators and identify optimal parameter choices based on urban characteristics. This analysis focuses on a restricted set of main indicators. We do not test the parameters of Sightline Length and Depth, as these are thematic and research-specific, depending on the particular goals for which this library is being applied.

The test area is the municipality of Nice, which was also used for the outcomes stored in the GitHub repository and archived on Zenodo (DOI: 10.5281/zenodo.14244266). This area was chosen due to its diverse range of urban morphologies, spanning from the hyper-compact historical city center to the regular grid-like developments of the 19th and 20th centuries, as well as the irregular, tree-like patterns of residential suburbs.

**Sightline Interdistance (SI):** The **Sightline Interdistance** parameter controls the precision of sightline measurements by determining the distance between adjacent sightpoints. A **shorter interdistance** leads to greater precision in capturing the finer details of street geometry, though it increases computational effort. Conversely, a **larger interdistance** reduces computational time but at the cost of less precise measurements. Therefore, **SI** directly impacts the balance between precision and computational effort. In general, to achieve more accurate results, particularly at 1 meter as a reference, it is recommended to keep the interdistance **below 5 meters**. From the results, **3 meters** offers the best tradeoff between precision and effort.

**Intersection Offset (IO):** The **Intersection Offset** parameter addresses potential biases in measurement near intersections, particularly where street geometry can distort results. **High intersection offsets** risk overestimating street characteristics at intersections, while **lower offsets** may **underestimate** these regions. To minimize these biases, it is crucial to **adapt the intersection offset** depending on the proximity of sightlines to intersections, especially in more complex street networks. In cases where intersection effects are significant, implementing specific preprocessing techniques to **exclude parts of the street edge** near intersections can improve accuracy.

**Tolerance Angle (TA):** The **Tolerance Angle** is used to control how much deviation is acceptable when defining sightlines along the street. A higher TA value leads to broader sightline considerations, which may **reduce the over- or underrepresentation of concave parts of streets**. By reducing the sensitivity of sightlines to small deviations, TA helps ensure that the measurement of spaces, particularly those on the concave side of streets, is **less biased**. For **straight streets**, the TA parameter has minimal impact, but it becomes more important for **winding streets**, where the distribution of sightlines can vary significantly. Hence, increasing the **angle tolerance** helps **balance the number of sightlines** across both straight and winding parts of streets, reducing bias in the final measurements.

### B.1. Sensitivity Analysis: Sightline Interdistance (SI)

To evaluate the sensitivity of morphometric indicators to SI, we use the 1m SI as a reference (the most detailed case) and analyze deviations for SI values of 3, 5, 7, 9, 11, 13, 15, 17, and 20 meters.
Sensitivity Analysis: Sightline Interdistance (SI)

**Building Coverage Ratio [buildCoverage]**

<figure><img src="image_14.png" /></figure>

**Building Frequency [build_freq]**

<figure><img src="image_15.png" /></figure>

<figure><img src="image_16.png" /></figure>

<figure><img src="image_17.png" /></figure>

<figure><img src="image_18.png" /></figure>

<figure><img src="image_19.png" /></figure>
Sensitivity Analysis: Sightline Interdistance (SI)

Open Space mean [os_]

<figure><img src="image_20.png" /><figcaption>Variation of os_ values for different Sightline Interdistance [SI] values</figcaption></figure>

Open Space median [os_med]

<figure><img src="image_21.png" /><figcaption>Sensitivity Analysis - Sightpoints interval:
Variation of os_ at different Sightpoints interval values, for different Built Coverage Intervals</figcaption></figure>

<figure><img src="image_22.png" /><figcaption>Sensitivity Analysis - Sightpoints interval:
Variation of os_med_ at different Sightpoints interval values, for different Built Coverage Intervals</figcaption></figure>

<figure><img src="image_23.png" /><figcaption>Sensitivity Analysis - Sightpoints interval:
Variation of os_ at different Sightpoints interval values, for different Street Length intervals</figcaption></figure>

<figure><img src="image_24.png" /><figcaption>Sensitivity Analysis - Sightpoints interval:
Variation of os_med_ at different Sightpoints interval values, for different Street Length intervals</figcaption></figure>

<figure><img src="image_25.png" /></figure>
Sensitivity Analysis: Sightline Interdistance (SI)

Open Space Variability,

Standard Deviation [os_std_]

Variation of os_std_ values for different Sightline Interdistance [SI] values

<figure><img src="image_26.png" /></figure>

Sensitivity Analysis - Sightpoints interval:

Variation of os_std_ at different Sightpoints interval values, for different Built Coverage intervals

<figure><img src="image_27.png" /></figure>

Sensitivity Analysis - Sightpoints interval:

Variation of os_std_ at different Sightpoints interval values, for different Street Length intervals

<figure><img src="image_28.png" /></figure>

Open Space Variability,

Mean Abs. Deviation from Median [os_mad_med]

Variation of os_mad_med_ values for different Sightline Interdistance [SI] values

<figure><img src="image_29.png" /></figure>

Sensitivity Analysis - Sightpoints interval:

Variation of os_mad_med_ at different Sightpoints interval values, for different Built Coverage intervals

<figure><img src="image_30.png" /></figure>

Sensitivity Analysis - Sightpoints interval:

Variation of os_mad_med_ at different Sightpoints interval values, for different Street Length intervals

<figure><img src="image_31.png" /></figure>
Sensitivity Analysis: Sightline Interdistance (SI)

Setback Mean [sb_]

<figure><img src="image_32.png" /></figure>

Setback Median [sb_med_]

<figure><img src="image_33.png" /></figure>

<figure><img src="image_34.png" /></figure>

<figure><img src="image_35.png" /></figure>

<figure><img src="image_36.png" /></figure>

<figure><img src="image_37.png" /></figure>
Sensitivity Analysis: Sightline Interdistance (SI)

Building Height [H_]

<figure><img src="image_38.png" /></figure>

Building Height-Width Ratio [HW_]

<figure><img src="image_39.png" /></figure>

<figure><img src="image_40.png" /></figure>

<figure><img src="image_41.png" /></figure>

<figure><img src="image_42.png" /></figure>

<figure><img src="image_43.png" /></figure>
## Sensitivity Analysis: Sightline Interdistance (SI)

### Parallelism to the street [par_tot_]

<figure><img src="image_44.png" /></figure>

### Parallelism of the buildings [par_rel_]

<figure><img src="image_45.png" /></figure>

<figure><img src="image_46.png" /></figure>

<figure><img src="image_47.png" /></figure>

<figure><img src="image_48.png" /></figure>

<figure><img src="image_49.png" /></figure>

## Sensitivity Analysis: Sightline Interdistance (SI) - Conclusion

SI strongly influences multiple morphometric indicators, particularly in intermediate-length streets (20–100m) and dense urban areas (CR > 0.6, especially CR > 0.8).

### Main Impacts:

* OS and SB values are progressively overestimated as SI increases, with the most significant deviations occurring at SI > 7m, particularly in high-density environments.

* Building Frequency and HW ratio are increasingly underestimated, especially in streets shorter than 50m with high CR.

* Facade parallelism (par_tot) is underestimated for high-density streets at high SI and low-density streets at low SI.

### Recommended SI Values:

* For dense urban settings (CR > 0.6, streets 20–100m long): SI should be ≤ 5m to avoid overestimation of OS and SB.

* For peripheral areas or open spaces (low-density, CR < 0.3): SI can be increased to 7–11m for computational efficiency without major distortions.

* For very long (> 200m) streets: SI has minimal impact. An adaptive approach (e.g., lower SI in dense zones, higher SI in open areas) could optimize results.

## B.2. Sensitivity Analysis: Intersection Offset (IO)

The **Intersection Offset (IO)** parameter is analyzed by comparing indicators at **3m IO** (assumed optimal for reducing intersection effects) against values at **0.1, 0.5, 1, 1.5, 2, 2.5, and 3 meters**.
Sensitivity Analysis: Intersection Offset (IO)

Building Coverage Ratio [buildCoverage]

<figure><img src="image_50.png" /></figure>

Building Frequency [build_freq]

<figure><img src="image_51.png" /></figure>

<figure><img src="image_52.png" /></figure>

<figure><img src="image_53.png" /></figure>

<figure><img src="image_54.png" /></figure>

<figure><img src="image_55.png" /></figure>
Sensitivity Analysis: Intersection Offset (IO)

Open Space mean [os_]

<figure><img src="image_56.png" /><figcaption>Variation of os_ values for different Intersection Offset [IO] values</figcaption></figure>

Sensitivity Analysis - Intersection Offset:

<figure><img src="image_57.png" /><figcaption>Variation of os_ at different Intersection Offset values, for different Built Coverage Intervals</figcaption></figure>

Sensitivity Analysis - Intersection Offset:

<figure><img src="image_58.png" /><figcaption>Variation of os_ at different Intersection Offset values, for different Street Length intervals</figcaption></figure>

Open Space median [os_med]

<figure><img src="image_59.png" /><figcaption>Variation of os_med values for different Intersection Offset [IO] values</figcaption></figure>

Sensitivity Analysis - Intersection Offset:

<figure><img src="image_60.png" /><figcaption>Variation of os_med at different Intersection Offset values, for different Built Coverage Intervals</figcaption></figure>

Sensitivity Analysis - Intersection Offset:

<figure><img src="image_61.png" /><figcaption>Variation of os_med at different Intersection Offset values, for different Street Length intervals</figcaption></figure>
Sensitivity Analysis: Intersection Offset (IO)

Open Space Variability,

Standard Deviation [os_std_]

<figure><img src="image_62.png" /><figcaption>Variation of os_std_ values for different Intersection Offset [IO] values</figcaption></figure>

Sensitivity Analysis - Intersection Offset:

<figure><img src="image_63.png" /><figcaption>Variation of os_std_ at different Intersection Offset values, for different Built Coverage Intervals</figcaption></figure>

Sensitivity Analysis - Intersection Offset:

<figure><img src="image_64.png" /><figcaption>Variation of os_std_ at different Intersection Offset values, for different Street Length Intervals</figcaption></figure>

Open Space Variability,

Mean Abs. Deviation from Median [os_mad_med]

<figure><img src="image_65.png" /><figcaption>Variation of os_mad_med_ values for different Intersection Offset [IO] values</figcaption></figure>

Sensitivity Analysis - Intersection Offset:

<figure><img src="image_66.png" /><figcaption>Variation of os_mad_med_ at different Intersection Offset values, for different Built Coverage Intervals</figcaption></figure>

Sensitivity Analysis - Intersection Offset:

<figure><img src="image_67.png" /><figcaption>Variation of os_mad_med_ at different Intersection Offset values, for different Street Length Intervals</figcaption></figure>
Sensitivity Analysis: Intersection Offset (IO)

Setback Mean [sb_]

<figure><img src="image_68.png" /></figure>

Setback Median [sb_med_]

<figure><img src="image_69.png" /></figure>

<figure><img src="image_70.png" /></figure>

<figure><img src="image_71.png" /></figure>

<figure><img src="image_72.png" /></figure>

<figure><img src="image_73.png" /></figure>
Sensitivity Analysis: Intersection Offset (IO)

Building Height [H_]

<figure><img src="image_74.png" /><figcaption>Variation of H_ values for different Intersection Offset [IO] values</figcaption></figure>

Sensitivity Analysis - Intersection Offset :

<figure><img src="image_75.png" /><figcaption>Variation of H_ at different Intersection Offset values, for different Built Coverage intervals</figcaption></figure>

Sensitivity Analysis - Intersection Offset :

<figure><img src="image_76.png" /><figcaption>Variation of H_ at different Intersection Offset values, for different Street Length intervals</figcaption></figure>

Building Height-Width Ratio [HW_]

<figure><img src="image_77.png" /><figcaption>Variation of HW_ values for different Intersection Offset [IO] values</figcaption></figure>

Sensitivity Analysis - Intersection Offset :

<figure><img src="image_78.png" /><figcaption>Variation of HW_ at different Intersection Offset values, for different Built Coverage intervals</figcaption></figure>

Sensitivity Analysis - Intersection Offset :

<figure><img src="image_79.png" /><figcaption>Variation of HW_ at different Intersection Offset values, for different Street Length intervals</figcaption></figure>
# Sensitivity Analysis: Intersection Offset (IO)

## Parallelism to the street [par_tot_]

<figure><img src="image_80.png" /></figure>

## Parallelism of the buildings [par_rel_]

<figure><img src="image_81.png" /></figure>

<figure><img src="image_82.png" /></figure>

<figure><img src="image_83.png" /></figure>

<figure><img src="image_84.png" /></figure>

<figure><img src="image_85.png" /></figure>

## Sensitivity Analysis: Intersection Offset (IO) - Conclusions

IO variations primarily affect OS, CR, and facade parallelism, with the strongest impact in short streets (<50m) and high-density areas (CR > 0.6).

### Main Impacts:

- Lower IO values (<1m) lead to overestimation of OS and CR, especially in short streets.

- Building Frequency is overestimated in dense areas (CR > 0.8) at lower IO values.

- SB values remain relatively stable, but variability increases with low IO in winding streets.

- HW is slightly overestimated in low-density short streets and underestimated in high-density environments.

### Recommended IO Values:

- For dense urban environments (CR > 0.6, short streets <50m): IO should be ≥2m to reduce intersection-related distortions.

- For open areas or low-density streets: IO has minimal impact but should be ≥1.5m for consistency.

- For historical or irregular street layouts: A flexible IO adjustment may be necessary, avoiding values <1m to prevent excessive overestimations.

## B.3. *Sensitivity Analysis of Tolerance Angle (TA) – Point-Level and Street-Level Assessments*

The Tolerance Angle (TA) is an important parameter that can influence both point-based and street-level measures. We proceed with a double assessment to explore its impact at both scales.

### Point-Level Sensitivity Analysis of TA

For the point-level analysis, we focus on the **enriched sight points**, which represent locations where the sightline distribution is most relevant. We begin by taking the 1° TA as the reference value (which is where we assume the sight points are most densely distributed and enriched). The analysis explores the variation of a specific indicator [indicator] for different TA values: 1°, 3°, 5°, 7°, 9°, 11°. NB: The behavior of the TA parameter can vary significantly depending on the **local characteristics of the built-up space**. Enriched sight points can also include areas like **dead-end streets**, where the built-up conditions may vary greatly (dense vs. non-dense environments).
## Street-Level Sensitivity Analysis of TA

In the street-level analysis, the focus shifts to how TA influences the entire street segments, particularly for streets that feature bending parts. Since straight streets aren't impacted by changes in TA (as they have consistent sightlines along their length), the analysis only considers bending streets. These constitute approximately 70% of the street segments in our test case. The impact of TA at the street level is also influenced by street length and windingness. Winding streets with varying built-up conditions will experience more pronounced changes than long, straight streets with a uniform layout.

## Sensitivity Analysis: Tolerance Angle - Sight Point Level

### Open Space [OS_]

<figure><img src="image_86.png" /></figure>

<figure><img src="image_87.png" /></figure>

### Building Height [H_]

<figure><img src="image_88.png" /></figure>

<figure><img src="image_89.png" /></figure>

### Building HW ratio [HW_]

<figure><img src="image_90.png" /></figure>

<figure><img src="image_91.png" /></figure>
Sensitivity Analysis: Tolerance Angle - Street Level

Open Space [OS_]

<figure><img src="image_92.png" /></figure>

<figure><img src="image_93.png" /></figure>

<figure><img src="image_94.png" /></figure>

<figure><img src="image_95.png" /></figure>

<figure><img src="image_96.png" /></figure>

Setback [sb_]

<figure><img src="image_97.png" /></figure>

<figure><img src="image_98.png" /></figure>

<figure><img src="image_99.png" /></figure>

<figure><img src="image_100.png" /></figure>
# Sensitivity Analysis: Tolerance Angle - Street Level

## Open Space [OS_]

<figure><img src="image_101.png" /></figure>

<figure><img src="image_102.png" /></figure>

<figure><img src="image_103.png" /></figure>

<figure><img src="image_104.png" /></figure>

## Setback [sb_]

<figure><img src="image_105.png" /></figure>

<figure><img src="image_106.png" /></figure>

<figure><img src="image_107.png" /></figure>

<figure><img src="image_108.png" /></figure>

## Sensitivity Analysis of Tolerance Angle (TA) - Conclusions

TA has a smaller impact than SI or IO, but variations become noticeable in winding streets, irregular geometries, and low-built environments.

### Main Impacts:

OS and SB indicators remain mostly stable, even at higher TA values.
H and HW tend to be slightly overestimated across different densities, but variations are minor.

Facade parallelism (par_tot) and OS variability are slightly underestimated as TA increases.

Short, winding, and low-built streets exhibit the highest sensitivity.

Recommended TA Values:

For general applications: TA should be kept at $\le 5^\circ$ to ensure minimal variability.

For highly irregular or winding streets: A lower TA ($1-3^\circ$) is preferable to maintain accuracy.

For straight, regular urban grids: TA up to $7^\circ$ may be acceptable with limited impact.

## Processing time for varying parameters

<figure><img src="image_109.png" /></figure>

<figure><img src="image_110.png" /></figure>

<figure><img src="image_111.png" /></figure>

## Final Takeaways – Sensitivity Analysis Summary

1. Sightline Interdistance (SI) is the most influential parameter, significantly affecting OS, SB, and facade parallelism, particularly in intermediate-length streets (20–100m) and dense environments (CR > 0.6, especially CR > 0.8).

a. To get more precise measures (using 1m SI as a reference), SI should remain below 5m.

b. A 3m SI provides the best trade-off between precision and computational efficiency.

c. If increasing SI, it is recommended to increase the angle tolerance (TA) proportionally to maintain the correct balance between straight and bending street segments.

d. SI = 5m takes 2001.24 seconds (approx. 33 minutes), with decreasing time as the SI increases. The processing time decreases significantly as SI increases, with SI = 20m taking just 626.15 seconds (approx. 10 minutes).

2. Intersection Offset (IO) has a moderate impact, mainly affecting OS, CR, and facade parallelism, especially in short streets (<50m) and high-density areas (CR > 0.6).

a. Lower IO values (<1m) cause OS and CR overestimation, particularly in short, dense streets.

b. An IO $\ge 2$m is recommended to reduce distortions, particularly in historical or dense areas.

c. The best way to reduce intersection effects is through data preprocessing—trimming street edges near intersections based on their morphological properties.

d. The processing time is relatively stable across various IO values, ranging from 3145.01 seconds (IO = 0.1m) to 2845.87 seconds (IO = 3m). This suggests minimal impact on processing time, making it a flexible parameter for most cases.

3. Tolerance Angle (TA) has the smallest overall effect, but variations become noticeable in winding streets and irregular geometries.

a. TA should be kept $\le 5^\circ$ for general applications to minimize distortions.
b. For highly irregular or winding streets, a TA of 1–3° is preferable, whereas straight grids can tolerate up to 7°.

c. A mismatch between high TA and low SI (or vice versa) should be avoided to prevent overrepresentation of straight or curved segments.

d. Processing time considerations: TA = 1° took 3884.52 seconds, with a slight decrease as TA increases, with TA = 11° taking 2949.99 seconds. The impact on processing time is moderate, with more substantial increases observed in higher TA values, especially when compared to SI variations.

4. Dense and intermediate-length streets are the most sensitive to parameter variations.

a. SI and IO should be carefully selected for such environments to minimize distortions in OS, SB, and facade alignment metrics.

5. A dynamic, context-aware approach is recommended:

a. Lower SI for compact, high-density cities; higher SI for peripheral, open spaces.

b. Adjust IO based on junction sizes and street morphology.

c. Ensure proportionality between SI and TA to maintain a balanced distribution of sightlines along straight and curved segments.

d. For point-based analyses, TA and SI discrepancies are less critical, but for street-level measures, balance is key.

e. Processing time and precision trade-off:

When considering computational time, 3m SI and 2m IO should be considered as optimal starting points for a reasonable balance of precision and time.

References

[1] Lynch K. The image of the city. Cambridge: MIT Press; 1960.

[2] Gehl J. Cities for people. New York: Island Press; 2010.

[3] Hillier B. Space is the machine. Cambridge: Cambridge University Press; 1996.

[4] Batty M. Exploring isovist fields: space and shape in architectural and urban morphology. Environ Plan B Plan Des 2001;28(1):123-50.

[5] Thiel P. A sequence experience notation for architectural and urban space. Town Plan Rev 1961;32:33-52.

[6] Benedikt M. To take hold of space: isovist and isovist fields. Environ Plan B 1979;6: 47-65.

[7] Ewing R, Handy S. Measuring the unmeasurable: urban design qualities related to walkability. J Urban Des 2009;14(1):65-84.

[8] Carmona M. Place value: place quality and its impact on health, social, economic and environmental outcomes. J Urban Des 2019;24(1):1-48.

[9] Vialard A. A typology of block-faces [dissertation]. Georgia Institute of Technology; 2013.

[10] Harvey C, Aultman-Hall L, Troy A, Hurley SE. Streetscape skeleton measurement and classification. Environ Plan B Urban Anal City Sci 2017;44(4):668-92.

[11] Araldi A, Fusco G. From the street to the metropolitan region: pedestrian perspective in urban fabric analysis. Environ Plan B Urban Anal City Sci 2019;46 (7):1243-63.

[12] Usui H. Relative spatial variability in building heights and its spatial association: application for the spatial clustering of harmonious and inharmonious building heights in Tokyo. Environ Plan B Urban Anal City Sci 2024;51(4):987-1002.

[13] Usui H. Relative variability in streetscape skeletons and spatial association: application for identifying harmonious and inharmonious streetscape skeletons in Tokyo. Geogr Anal 2024;56(2):358-83.

[14] Fleischmann M. Momepy: urban morphology measuring toolkit. J Open Source Softw 2019;4(43):1807. https://doi.org/10.21105/joss.01807.

[15] Ståhle A, Marcus L, Karlström A. Place syntax: geographic accessibility with axial lines in GIS. In: Fifth International Space Syntax Symposium. Techne Press; 2005. p. 131-44.

[16] Gil J. Space Syntax Toolkit for QGIS. Version 0.1.0 [software]. Available at: https://github.com/SpaceGroupUCL/qgisSpaceSyntaxToolkit; 2014 [accessed 10 June 2025].

[17] Sevtsuk A, Mekonnen M. Urban network analysis. Rev Int Géomatique 2012;287: 305.

[18] Cooper CH, Chiaradia AJ. sDNA: 3-d spatial network analysis for GIS, CAD, Command Line & Python. SoftwareX 2020;12:100525. https://doi.org/10.1016/j. softx.2020.100525.

[19] Simons G. The cityseer Python package for pedestrian-scale network-based urban analysis. Environ Plan B Urban Anal City Sci 2023;50(5):1328-44.

[20] depthmapX development team. depthmapX (Version 0.6.0) [software]. https://github.com/SpaceGroupUCL/depthmapX/; 2017 [accessed 10 June 2025].

[21] Leduc T. t4gpd. Version 0.5.0 [software]. Zenodo 2022. https://doi.org/10.5281/ zenodo.5771916.

[22] Yang X, Lindquist M, Van Berkel D. “streetscape” package in R: a reproducible method for analyzing open-source street view datasets and facilitating research for urban analytics. SoftwareX 2025;29:101981. https://doi.org/10.1016/j. softx.2025.101981.

[23] Hillier B. A note on the intuiting of form: three issues in the theory of design. Environ Plan B Plan Des 1998;25(7):37-40.

[24] Dovey K, Wood S. Public/private urban interfaces: type, adaptation, assemblage. J Urbanism 2015;8(1):1-16.

[25] Weitkamp G, van Lammeren R, Bregt A. Validation of isovist variables as predictors of perceived landscape openness. Landsc Urban Plan 2014;125:140-5.

[26] Araldi A, Fusco G. Multi-level street-based analysis of the urban fabric: developments for a nationwide taxonomy. Geogr Anal 2025;57(2):270-301.

[27] Erin I, Fusco G, Cubukcu E, Araldi A. Quantitative methods of urban morphology in urban design and environmental psychology. In: 24th ISUF International Conference. Book of Papers. Editorial Universitat Politècnica de València; 2018. p. 1391-400.

[28] Pafka E, Dovey K. Permeability and interface catchment: measuring and mapping walkable access. J Urbanism 2017;10(2):150-62.

[29] Araldi A, Fusco G. Bridging configurational, streetscape and urban fabric analysis: the street as a keystone. In: XXVI International Seminar on Urban Form, Cities as Assemblages; 2019. https://doi.org/10.36158/978889295356733. July.

[30] Basu R, Colaninno N, Alhassan A, Sevtsuk A. Hot and bothered: exploring the effect of heat on pedestrian route choice behavior and accessibility. Cities 2024;155: 105435. https://doi.org/10.1016/j.cities.2024.105435.

[31] Kropf K. Bridging configurational and urban tissue analysis. In: Proc. 11th Space Syntax Symposium; Lisbon; 2017. 165.1-13.

[32] Li X, Ratti C, Seiferling I. Mapping urban landscapes along streets using google street view. In: Advances in Cartography and GIScience: Selections from the International Cartographic Conference 2017. Springer International Publishing; 2017. p. 341-56.