Procedural Modeling of Cities

The Cities CORE Model

Main Page, CORE Model Page, Road Network Builder Page, Urban Modeling Suite, Papers & Publications

Jump to Introduction to Cities, Additional Videos & Imagery, Cities - NightLife, Download Cities

Introduction to Cities

The Cities model allows users to create a terrain and environment in which a set of builders will create a city. Users can interrupt the city building process and change the environment and then continue the city creation simulation. The city consists of roads, parcels (contiguous groupings of terrain patches which are developed as a single unit), and buildings. Parcels are zoned for specific types of usage: commercial, industrial, residential, or park.

The user paints parameters onto the terrain, such as elevation, road grid constraints, and "honey" which attracts specific kinds of developers. In this way, users have indirect control over the process of city creation. This allows a city designer to orchestrate the building process with broad strokes, rather than being forced to specify precisely where each street and house are placed.

The user may also create several city seeds, which allows several urban centers to grow and evolve in unison. The user may also draw primary roads and link them to the edge of the terrain, to simulate the city's major transportation routes.

There are many, many adjustable parameters to the model (as shown in the figure at right), which allow for great flexibility in agent behavior, and correspondingly in the style of the city that results.

An example of the early growth pattern of a city is shown at left. The five-pointed star is a city growth seed. The triangles are road workers -- yellow for primary roads and orange for tertiary roads. The circles are developers, yellow for residential, red for commercial, blue for industrial, and green for park/recreation area. Land developments are colored with the same scheme.

Builders for each type of development, residential, commercial, industrial, and park move through the terrain, grouping patches into parcels and then attempting to "develop" them by putting a new building upon the parcel, or increasing the size of the current building. Road builders move through the terrain, extending current roads to reach new areas, and attaching existing roads to each other to improve connectivity.

At any time, the user can pause the simulation, paint new parameters onto the terrain, free up terrain that has been developed, add new primary roads, or change the land use ratios. When the simulation continues, builders will respond to these changes.

For more information about the inner workings of the Cities model and the rules the agents use to create these cities, we recommend the following academic papers:

T. Lechner, B.A. Watson, S. Tisue, U. Wilensky & M. Felsen (2004). Procedural modeling of land use in cities (pdf). Technical report NWU-CS-04-38.

T. Lechner, B.A. Watson, U. Wilensky & M. Felsen (2003). Proceduring city modeling (pdf). 1st Midwestern Graphics Conference (St. Louis, MO).

Additional Videos & Imagery

Click images to view animations in another window

Simulated city growth

A city develops on a lakeshore, demonstrated by a gif animation.

Mixing Road Styles

A fairly mature city -- note areas of gridded and curving roads. Yellow is residential, red is commercial, blue is industrial.

A SimCity visualization

Here we zoom in on a city populated with SimCity's buildings. Again, note the transition to a curved and meandering layout, which cannot be simulated automatically by SimCity.

Growing a large city

This animation shows the growth of a city recently created by the Cities - Nightlife system.

Growing a large city (density-view)

This animation shows the growth of the same city as above, except that instead of monitoring land zoning designations, it displays population density information as the city evolves.

CITIES - NightLife

Through our automated NightLife system, the Cities CORE model is run nightly, generating a unique city. The output of these runs includes an animation demonstrating how the city grew over time, snapshots of the city at regular time intervals, as well as other data. The final state of the city is recorded, so that it may be loaded into NetLogo for complete inspection of the resulting land usage.

Download the Cities model

The complete Cities model is available for download as a zip archive. This archive includes all of the NetLogo source files for the model, as well as a JAR file that includes the Java classes that compose the Cities-specific language extension to NetLogo.

To run the Cities model, first extract all the files from the "" file into a folder. If you do not have NetLogo 4.0 software installed on your computer, you should download it, and install it. After installing NetLogo 4.0, you should be able to run the "Cities.nlogo" file which was extracted from the zip archive, either directly from your file system (in Windows, double-click on Cities.nlogo), or by first launching NetLogo, and then choosing the file through "File -> Open".

After you have opened the Cities.nlogo file in NetLogo, you can click on the "Information" tab, to find out more about how to run the city creation simulation. Note that there is also a file called "Road Network Builder.nlogo" included in the zip archive. More information about this file can be found either in its "Information tab", or on this web page.

Note: The extension the model depends on only works with NetLogo 4.0, not any later version such as NetLogo 4.1. You must use 4.0 to use the model. Also, the extension does not work on the Windows systems we have tried; you may need to use Mac OS X or Linux instead.