Tutorial 16: Urban planning

To access the tutorials in CityEngine, click Help > Download Tutorials and Examples. After choosing a tutorial or example, the project is automatically downloaded and added to your workspace.

This tutorial describes how CityEngine can be used for typical urban planning tasks.

Proposed building design

Introduction

This tutorial describes how CityEngine can be used to work for typical urban planning tasks. For this purpose, the tutorial uses a fictitious example of a development area with nine building plots in the center of a city. The goal is to design a mixed use quarter where shopping, living, and working will take place. In this tutorial, you are developing a schematic design for this area that meets the city's zoning regulations. (This tutorial was developed in collaboration with Matthias Buehler (http://www.garsdaledesign.co.uk) and the Swiss urban planning company SEILER&SEILER (http://seilerseiler.com), who use CityEngine extensively for their daily work.)

Of course, urban planning processes are typically reaching a much higher level of complexity than the simplified case described in this tutorial. In reality, these processes are influenced by a large number of factors, such as a variety of stakeholder interests, budget, project phasing, mobility targets, capacity of infrastructure (public transport, supply, and waste), listed buildings, nature conservation, and so on. What this simplified example covers in about two hours would take several months up to several years in reality. CityEngine is particularly well suited to deal with such processes of iterative nature. Feedback loops with clients are managed by sharing the proposed design options through CityEngine WebScene. As it is typical work in CityEngine, the refinement of the designs are mostly done by adapting shapes, positions, and changing attributes in the Inspector. Changes are immediately reflected in reported key figures such as FAR (floor area ratio).

This tutorial shows how the CityEngine procedural modeling can successfully be applied to a point and polygon feature-driven semiautomated workflow. Since writing custom distribution rules for building placement patterns can result in quite complex CGA code, it is recommended that in this tutorial, you use either point shapes or manually created footprint shapes of any form, as a faster way to control the footprint distribution. Many people may find this quite intuitive and more flexible, especially for small- to medium-sized contexts.

The following is an overview of this tutorial:

  • The Urban planning tools workflow provides an overview of the CGA files that you will use to accomplish the urban planning tasks.
  • The Zoning workflow defines and displays the zoning regulations as maximum building height and setbacks for the development area.
  • The Master planning workflow develops a schematic design for the building plots, which is in line with the zoning regulations that were just defined.

As you will see, CityEngine can be used in multiple contexts, disciplines, and planning phases for your projects.

Urban planning tools

The following is an overview of the CGA files that will be used in this tutorial:

Rules:

  • Zoning.cga—Applies zoning definitions such as setbacks, maximum building height, and so on to a building plot and displays these as a frame.
  • Pointmarker_To_FootprintShape.cga—Creates footprint shapes from a point marker shape and uses (imports) FootprintShape_To_Building.cga to extrude these. Size of grid, footprint form, and various other attributes allow customization of the footprints. To draw a point marker, use the Shape Creation Tool (in the viewport, Shift+S). To rotate a building, rotate its marker with the R key. Scale it with E.
  • FootprintShape_To_Building.cga—Extrudes a footprint shape and applies building usages. The attributes will switch to display building parts that break the zoning regulations defined in Zoning.cga. Parts that are not entirely within a zoning volume produce red-colored geometries. This is useful in visually exploring multiple designs.
  • Landscaping.cga with start rule Water body—Creates a water body with surrounding walls.
  • Landscaping.cga with start rule Trees and TreeAlley—Creates schematic trees and allows changing their size, distribution type, density, and so on. (Note: TreeAlley is supposed to be used on dynamic street shapes.)
Note:
  • Some of the rules produce helpful dimensioning text.
  • All rules produce CGA reports.
  • The FAR value report needs the parcelArea attribute to be mapped correctly to work. Refer to other tutorials or the manual for more details on attribute mapping.
  • Note that some of these rules have styles defined. These styles are just example presets that were defined for this tutorial and can be freely customized for individual use.

Example styles:

Styles

Example models:

Models
  1. Open the scene with example models 2_UrbanPlanning_Tools.cej.
  2. Play with the rules and have fun!

Zoning

In this part of the tutorial, the focus is on the definition of the development framework. Usually, there is an area or a city-specific zoning system defined by the public authorities that serves as a guideline for master planning and potentially also a strategy/mission statement that further refines the task (for example, 100,000 flats in 10 years). For the sake of simplicity, the tutorial defines the development framework based on the spatial context (allotment, city structure, neighboring quarters, and so no). First, you define the arrangement and proportion of different usages and then you specify the maximum building heights and setback lines.

Fictional setting

Definition of usages

Plot A overview (aligned to north)

Building Plot A is used as an example to show how the usages are derived from the spatial context. The defined conditions are as follows:

  • Plot A acts as an entrance gate for the development area.
  • The main street that runs along its eastern side brings a high amount of motorized and nonmotorized traffic into the area.

Based on these conditions, you'll plan for mixed usage along the main street with shops on the ground floor and services on the upper floors, plus residential usage behind the buildings.

  1. Open 3_Zoning_01.cej.. This scene contains the building plots and the neighboring context. Click Accept and CityEngine will generate all models.
  2. Zoom in on the building Plot A by selecting it and pressing F.
  3. Empty plots
  4. Assign the rule Zoning.cga.
  5. Choose the style Mixed_Use for Zoning.cga.
  6. Adapt the visibility of the layers and switch the wireframe display (7 key) if needed.
  7. Default zoning volume

Definition of building heights and setbacks

To sett the maximum building height (usually this is defined in the existing building and zoning regulations), complete the following steps:

  1. Ensure the maxHeight attribute of the zoning volume is set to 50 meters to ensure that you allow a dense enough context integration.
  2. Note:

    In addition, it is possible to look at the sun incidence angle (layer scene light in the Scene Editor window), to check direct sunlight in the spaces between the buildings. You will skip this step.

  3. Specify all setback distances to 10 meters to allow flexible usage of the outer areas (parking, outdoor seating, and so on).
  4. Zoning volume with attribute values displayed in Inspector.

Reflect the zoning definitions

To start, you will test whether your zoning definition allows sufficient density for an urban center. Notice that in the scene, there is already a small test shape (layer Footprint) that you can use as a locator (indicated in green in the next image) to place a building. Actually, instead of placing only one, you will place nine (3x3 grid) mixed-use towers with a total height of 50 meters and check the FAR in the Reports section of the Inspector.

Building locator shape, ready to assign a rule
  1. Open 3_Zoning_01.cej and generate all models.
  2. Assign the rule file PointMarker_To_FootprintShape to the footprint shape and generate the model.
  3. Set mainLength to 25 and mainDepth to 25.
  4. Set footprintForm to Rectangle.
  5. Set gridWidth and gridDepth to 3.
  6. Set gridDistWidth and gridDistDepth to 35.
    Note:

    You can also use one of the predefined styles.

  7. Switch to FootprintShape_To_Building.
  8. Set numberFloors to 13.
  9. Look at the building reports.

The current FAR value is 0. To get a correct value, you'll input the area of the plot the building occupies. The most efficient way this is done is by defining the value as a user-set value in the rule. To do so, complete the following steps:

  1. Temporarily, assign the rule rules/helpers/reportShapeArea.cga to the plot shape. Write down the reported value. For this plot, it should be 40,445 m2.
  2. Go back and reassign the Zoning.cga rule.
  3. In the rule FootprintShape_To_Building, set the value of parcelArea to a user value of 40,445 in the Inspector.
    Note:

    This value could also be mapped in the Inspector instead of setting it manually.

  4. Look at the FAR in the reports section: The FAR value is 1.81 and therefore fulfills the requirements of an urban center.

Of course, this is only a very coarse design approach, but it gives you a ballpark number for the FAR quickly. You now can dig deeper and work out more details, with more precisely placed buildings and better overall designs. To do so, complete the following steps:

  1. Open 3_Zoning_03.cej for an example of zoning design.
  2. Feel free to play some more with the zoning volumes of the rest of the plots. Come up with your own designs!

Urban block with FAR=1.81

Master planning

Now that you have set a starting point in the zoning regulations, you can start looking at the schematic design for the complete development area.

First, you'll select an initial layout with base topologies and main usages for the building plots and show how the compliance with zoning regulation can be ensured. Next, you'll zoom in on one building plot and further refine topology and design. Finally, you'll move your focus to the exterior space and add structuring elements.

Schematic design

You have prepared an initial layout with a mixture of rectangle, L-shapes, and U-shapes with a variety of usages. You can now customize the design by changing the attributes in the Inspector. The predefined styles for usage mixes, footprint shapes, and the ability to create grid-like arrays make this process substantially more simple.

  1. Open the initial scene 4_Masterplanning_01.cej
  2. Play around with footprint shapes, grids, usage mixes, and so on. Open Reports in the Inspector and see how reported key figures such as FAR are updated automatically when you change the building specifications.
    3 by 3 grid of square buildings
  3. Adjust the footprint shapes to L buildings to get the following:
    3 by 3 grid of L buildings

Now you can look at how you can use the given rules to visualize any broken zoning regulations. You can change the height of one of the buildings to a value that is higher than allowed, such as 20 floors. The part of the building that exceeds the maximum height allowed by the zoning regulation is displayed in red.

The building rules in this tutorial have a small set of attributes to actually design the building, especially the overall building volume. You can drive the building's total height and design the building minimally by cutting away one part of the building. You will use the three attributes volumeChangeFloorID, volumeChangeRotation, and relVolumeChangeSplit for this. To do so, complete the following steps:

  1. Select one of the buildings.
  2. Set the attribute visualizeBrokenLaw to True.
  3. Change the number of Floors to 20.
Before: playing with the visualizeBrokenLaw attribute

After: playing with the visualizeBrokenLaw attribute

Add two new landmark buildings

In this workflow, you'll zoom in on the central building plot and refine the design of the future entrance to the neighborhood. You'll add landmarks by changing the design of the two adjacent buildings. 4_Masterplanning_02.cej shows the results of these adjustments.

  1. Open 4_Masterplanning_02.cej, and generate all models.
  2. View of the default building volume proposals
  3. Change numberFloors of the L-Shape building to 13 and volumeChangeFloorID to 5.
  4. Set volumeChangeRotation to 330 degrees.
  5. Set relVolumeChangeSplit to 0.5. This changes the building form to a slightly truncated tower which starts at level 5.
  6. Simple proposed building design
  7. Change the numberFloors of the line-shaped building to 13 and its volumeChangeFloorID to 5.
  8. Set the relVolumeChangeSplit to 0.7. This attribute drives the split for the tower and cuts away 70 percent (relative 0.7) of the top volume.
  9. Additional simple proposed building design

Design the exterior space

4_Masterplanning_03.cej shows the results of your basic design for the exterior space. Now you are ready to zoom in further and design the exterior space (your attempt on landscape architecture) right at the entrance of the development area. You'll increase the amenity of the entrance by adding a water basin and trees.

  1. Open the scene with exterior space design 4_Masterplanning_03.cej.
  2. Start with a simple pool of water. Create a square shape and apply the rule file Landscaping.cga with the start rule Waterbody.
  3. Added landscaping element: a big water pool
  4. In your fictitious city, the temperatures are relatively high in summer. Therefore, you'll add a line of trees along the street.
  5. Continue using the landscaping tools at hand to create your own exterior designs.
  6. If you are stuck, have a look at the result in 4_Masterplanning_04.cej.
    Simple proposed design
  7. Change your view.
    Alternate view of simple proposed design

Obviously, there is only time in this tutorial to focus on this small and abstract design. Hopefully this tutorial, however, has been helpful and has demonstrated the many ways in which CityEngine can be used in your city planning scenarios.