Parametric City Generator

Modify date: 2021-07-13


Latest update

The related paper Cross-Scale and Density-Driven City Generator: Parametric assistance to designers in prototyping stage is published on eCAADe 2021.

View the source codes including .gh files and .cs files on Github.

The codes are packed into Grasshopper plugin components and published as food4Rhino | CITY GENERATOR (by Zihan MEI).

Basic Info

Subtitle Computational Urban Design Tool Kit
Category Professional Work from GSD SCI-6338 Introduction to Computational Design
Location GSD, Cambridge
Date Nov - Dec, 2020
Tutor Jose Luis Garcia del Castillo Lopez
Collaborator Pam Pan, Jack Cheng

The project is written in C# in Grasshopper. It's aimed for:

The tool takes in the urban boundary and primary roads and generates the network of roads in 3 classes as well as buildings in various density. It simulates the density variation by scaling blocks and controlling building type and height according to the location block by block.

View the project on course website

View the sources on GitHub



Organic or Rigid?


Cities around the world have urban forms mainly in 2 tendencies - organic forms like London, and rigid forms like Manhattan. The urban forms determine cities’ overall structure.

In this program, the users can input several primary roads either organic or rigid, and change parameters for secondary and minor roads later, to test the possible outcomes of different urban forms.

Traditional Zoning Trio


Under each form, cities apply a set of planning rules determining the zoning patterns of themselves. Reviewing the zoning ordinance across the US, the 3 key aspects of traditional zoning are use, shape and density.

This program tries to create the block and building patterns based on the traditional zoning trio. It uses each block’s distance to roads in different classes to define the use and density, which in turn affects the shape of buildings. By playing with parameters, the users are allowed to change the rules by which distance influences the three aspects.



Part A: Network Generation


Loop over all the blocks and divide those whose area exceeds critical values, until all the blocks cannot be subdivided further.

Generally, being closer to roads of higher class means the block area is smaller, and the road density is higher.



Larger Crt1 means blocks are larger after division by secondary roads.


Larger Crt2 means blocks are larger after division by minor roads.


Larger Dist2 means even blocks far from secondary roads are divided further, while smaller Dist2 means only blocks near secondary roads are subdivided further.


Larger AmpC2 means blocks near secondary roads are much smaller than those farther, while smaller AmpC2 means blocks nearer are similarly large as those farther.


Smaller RndPara generates more rigid overall structure, while larger RndPara generates more organic overall structure.


Part B: Street & Block Generation

After the generation of primary/secondary/minor roads, the second step is to offset roads of each class differently, and generate the block setback with pedestrians.


Input: Primary/Secondary/Minor Roads

Parameters: Width for Primary/Secondary/Minor Roads, Width for Pedestrians

Output: Pedestrian Outlines, Building Setback in Blocks

Part C: Density Remapping

Based on the overall structure and general urban forms from Part A, this part prepares for building form generation.

For each block, it classifies the distance to different roads into multiple ranges, and add up the weighted distance to represent the relative density among the blocks. Then it remaps the density to a certain interval of FAR which makes sense for building form generation.


Larger starting interval means primary roads raise the density of blocks even far away.


Larger starting interval menas secondary roads raise the density of blocks even far away.


Larger weight means primary roads raise the density dominantly.


Part D: City Form & Buildings Generation



P-S Ratio




Demos & Screenshots



Click here to view larger screenshot.