PARAMETRIC DESIGN OF ‘UNPLANNED’ URBAN NETWORK



Author:

Categories: PN3+DC3 | Tutorials

Tagged with: | | |


The project was made in collaboration with Martin Zaťko.

00_INTRODUCTION

Our project focuses on parametric design of urban networks tied to our semester design studio work, which drives from our previous research of unplanned settlements. We are tasked to design new urban fabric of Rohanský Ostrov located in Prague 7 on principals of Lesser town. We approached the problem by firstly analysing the urban syntax of Lesser town, which gave as a bench mark, objective goal. By establishing other design rules, we are trying to ensure, that new network will be usable and practical.

Urban syntax is a method for analysing spatial configurations by examining street networks as interconnected systems. It quantifies urban accessibility and structure through many metrics. During our research, we found out that the most important one’s for us, hence Lesser Town, are three primary metrics:

1. connectivity (the number of direct connections per node)

2. choice (how frequently a street segment appears on shortest paths between all pairs of locations, measuring its strategic importance)

3. entropy (the distributional complexity of the network, indicating how evenly or unevenly streets are utilized).​

Code overview

01_METHOD

Step zero would mean finding and ideal urban network you would like to “recreate”, analysing it and find out that urban metric syntax are the most important (we used DephtMapX) and select an area for your design.

First, we gathered input data defining the design constraints. These included the boundary outline of existing site, six intersection points where the existing urban network meets our site boundary—ensuring continuity with adjacent areas. We will also have to account for newly planned public building in the  locations with their required area allocations and area size demands.

Next, we established design generation rules. We will have a set of Main roads and Secondary roads. Main roads were designed to create a connected grid with orthogonal logic, ensuring both horizontal and perpendicular relationships. Secondary roads were generated through agent-based algorithms to introduce organic variation while avoiding intersection with public building zones.

The complete network was then analysed using the Decoding Spaces — add-in for Grasshopper, which computed urban syntax parameters to assess how effectively each design variant matched our Lesser Town reference model.

01.1_VERTICAL ROADS GENERATION 

For vertical road generation, we began with six boundary intersection points and their opposing counterparts on the site perimeter. Our fisr idea was to use Manhattan distance, but since it uses the same “block” size for the each step, it was not sufficient for us. We employed a turtle-graphics-inspired approach: from each starting intersection, lines advance in straight segments (random lengths within a defined min-max range), then turn randomly left or right. We ran into problem of including randomness in each cycle of generation. We solved this problem using a simple Python-scripted randomness, repeating until reaching the opposite boundary—this mimics Manhattan distance with variable “block” sizes for organic adaptability.

01.2_HORIZONTAL ROADS GENERATION

For horizontal road generation, we selected two existing boundary points and additional points along the newly created vertical roads. Since the new vertical lines are varied in size, normalized them from 0 to 1 to ensure varied positioning. We are using the “Point on Curve” tool in set parameter to choose other points.
Additionally, we ran into problem with line selection. Since the total length of the road is random in each iteration and we needed the line to always intersect with the next one, we would need different number of iterations for each run. Unfortunately, we have not solved this problem in elegant manner.  To achieve reliable perpendicular intersections with adjacent horizontals, we generated extended lines through high repetition cycles, then trimmed them post-intersection by isolating the initial segment up to the crossing point via list item indexing. This pragmatic approach produced a consistent orthogonal grid of horizontal main roads, complementing the working backbone of the network.

01.3_SECONDARY ROAD GENERATION

For secondary road generation we have used two options-voronoi division and space colonization algorithm. For both options, we have used exactly points, varying in between iterations in number and location using ‘populate area‘.

01.3.1_VORONOI DIVISION

 Voronoi division slices the design area into cells based on proximity to a set of scattered seed points. Each cell represents the region closest to its seed, bounded by edges equidistant from neighbouring seeds. This naturally generates hierarchical street networks with varying block sizes based on density and location of points. In our secondary road generation, this method introduces controlled irregularity to complement the orthogonal main roads, enhancing pedestrian-scale usability while aligning with urban syntax metrics like entropy for balanced network utilization.

01.3.2_SPACE COLONIZATION ALGORITHM

Space colonization is well known in computational methods. It generates branching organic structures like trees, river or veins, by simulating competition for space. We can imagine it as growing branches, that are each step reaching towards attraction points. It takes a closed area with points (food) scattered throughout, starting from attraction points (for us crossroads), iteratively growing paths toward unoccupied nearby sites through a process of attraction and repulsion forces (kill/eat distance, number of iteration). It’s widely used in procedural generation for its ability to create natural-looking, diverse patterns by modelling biological growth principles. In our secondary road generation, this method produces naturalistic infill patterns between main roads.

01.4_ANALYSIS FRAMEWORK

When conducting an urban syntax analyses, we take a street network and look at it as a interconnected graph – system of nodes and links in between them. It is an objective method (using a graph theory) used to analyse how spaces relate to each other. It computes key metrics like connectivity (direct node links), choice (a segment’s role on shortest paths between origins/destinations), and entropy (evenness of path distribution), revealing patterns of movement and land use without behavioural data. A lot of path finding algorithms are used in urban syntax, for example Dijkstra algorithm for finding a system of connecting all the nodes in total shortest distance (1965).

Since we would be reinventing the wheel, we have decided to use an existing and working plug in. From available plug-ins such as SYNTACTIC,  SpaceChase, UrbanX Tools we have decided to use plug-in DecodingSpaces.

We ran into trouble in the beginning with lack of tutorial of examples of how to use the plug-in. A key challenge was preparing the generated street network for analysis. This step involves exploding complex curves and polylines into individual line segments, which we achieved through targeted preprocessing. Targeting betweenness centrality (equivalent to choice metric), we defined entry/exit points at site boundaries to simulate origin-destination flows; the plugin then computes each segment’s frequency on shortest paths, visualizing results on a blue-to-red spectrum where bright red indicates high strategic through-movement potential.​

Afterwards, to compare to Lesser Town,  we needed to statistically compare the data. We have to find minimum, average and maximum of the network. We have done that using simple ‘decomposition of the domain’ to find out minimum and maximum and ‘mean average’ for average, then from panel copying numbers into Excel sheet, where we compare the data.

02_RESULTS of ANALYSIS

We have tried analysing our network in three separate ways:

1. Network as just main road system

2. Network as main road and secondary road-Voronoi system

3. Network as main road and secondary road-Colonisation algorithm system

Expalme of numbering: M1.sv (Mx-bumber of generation, .vr -secondary road is  Voronoi devision, .ca-secondary road is space colonization).

02.1_STATISTICAL ANALYSIS

Each generation works with new set of points and lines. After generating the newrok, we copied the numbers to Excel sheet. The first problem we run into is the fact that raw choice values are dependent on street size, so direct comparison between street networks is not meaningful. Since the size is changing in each generation in number of segments and length—denser structures have bigger lengths—we had you use different method.

We decided to use an internal min–max normalization applied separately to each network. Choice values were rescaled to a unitless 0–1 range using the network-specific minimum and maximum values, and the normalized average choice was subsequently derived.

This procedure removes the influence of network size while retaining the relative distribution and hierarchical structure of movement potential within each urban network. By rescaling choice values to a common 0–1 range, networks of different sizes become comparable in terms of how strongly movement is concentrated in a limited number of segments versus distributed across the network.

We have used 5 examples for each type of generation. The results in table:

By looking at the data, we can notice that our parametric network achieved string alignment of distribution of choice alignment with Lesser Town’s. Addinig a secondary road system was a step in good direction since both  Voronoi (vr) and colonization (ca) secondary roads consistently outperformed main-road-only iterations (20-22% diffs). In general, Voronoi system for secondary road generation slightly outperformed space colonization one.  By looking at the data, we can see that for voronoi systems following is true: smaller number of points, closer results to desired value. For space colonization, opposite seem to be true: bigger number of points leads to closer results to desired value. Top variants are M10.vr (0.921, 0.77% diff), M7.vr (0.925, 1.20% diff), and M11.ca (0.899, 1.64% diff)—demonstrating near-perfect through-movement replication.

03_CONCLUSION

Our parametric urban design was focused on mimicking/replicating urban pattern of Lesser Town trough it’s distribution of choice metrics in urban syntax. We have created a system for main road generation based on ‘turtle graphic’ movement and two different options for secondary road generation, voronoi division and space colonization algorithm.  We generatd and analysed 15 separate options looking for the one closest to Lesser town—choice norm (0.914) with top variants M10.vr (0.921, 0.77% diff) and M7.vr (0.925, 1.20% diff), proving hybrid orthogonal-organic networks excel for Rohanský Ostrov. Secondary systems—Voronoi (fewer points better) and colonization (more points better)—dramatically outperformed main-road baselines (20-22% diffs), validating syntax-driven generation.​

While generated street patterns require human touch for practical implementation — such as cleaning intersections and adjusting alignments for sensibility—they excel as functional underlays providing instant parametric barebones. This approach delivers countless viable options, helping a lot with blank-page starts and enabling rapid iteration toward optimized urban fabric.

04_FUTURE WORK

We have many ideas where to move with this project in the future. First of them would looking in other two urban syntax elements, entropy and connectivity, and conducting a same analysis based  on these elements. Secondly, we would try using optimization via Galapagos to evolve network parameters toward target Lesser Town metrics. We see a challenge in choosing a correct parameter for optimalization, since we work with numerous variables like step distances in main road generation and seed counts for secondary roads. Thirdly, code enhancements would address lag through cleaner clustering, post-generation validation to fix malformed grids, resolving Decoding Spaces warnings (despite functional outputs), and native Grasshopper data handling instead of Excel exports.

As our first Rhino/Grasshopper project, we’re pleased with the parametric workflow’s viability and overall outcome. It was a huge challenge for us, but we have learnt a lot. Huge thanks to our teachers, Mr. Prokop, Mr. Kurilla and Mr. Šrubař.  We are also thankful to Decoding Spaces team. 

*Runtime note:
1. Enable components sequentially—main roads first, then one secondary system, finally analysis—to prevent crashes

2. Plug-in Decoding Spaced need to be downloaded, source: https://toolbox.decodingspaces.net/download-decodingspaces-toolbox/