Code Analysis: International City, Part 3

Covered:
  • How land blocks are subdivided
  • Start rules including Lot --> and LotInner -->

CityEngine city models are centered around street networks or “graphs”, which help define how the city is structured.  In between the streets are “blocks” which are subdivided into “lots".  If you click on a block or lot in a CityEngine model and look under Block Parameters, you will see several subdivision types listed:

  • Recursive, where a block is continuously split into square sections
  • Offset, where lots are created only within a set distance from streets
  • Skeleton, where every lot is aligned to the streets and has street access
  • No subdivision, where the block is not split

This is important to understand because the initial or “Start” rules of a CE model are often named “Lot” and “LotInner”.  The string of successor rules that fashion most of the model will proceed from the start rules (other typical start rules include Streets and Sidewalks).  In the illustration, Lots are shown in orange and Inner Lots are shown in blue. See how the lots rearrange and keep their characteristics when we add a street to each quadrant.

translate(mode, coordSystem, x, y, z)

@StartRule

Lot -->
   translate(rel,world,0,Street_Modern_Standard.SidewalkHeight,0)
   LotAligned

LotAligned -->
                case Type == "Open Space"            : GreenGround Trees
                case Type == "Residential"           : ResidentialBlock
                case Type == "Apartment Building"    : ApartmentBlock
                case Type == "Office Building"       : CommercialBlock
                else : HighriseBlock

The Start Rule, as indicated by the @ annotation, is Lot, and the annotation makes it selectable under the Rules tab of the Shape Inspector. The translate( ) operation translates the scopes of each lot to whatever coordinate system (projected or otherwise) is being used in the model. In this instance, the translation:

  • (absolute or relative) is in relative mode, meaning the translation is added rather than being set to a given value;
  • (scope, pivot, object or world) the name of the coordinate system in which coordinates are given is “world”;
  • x and z coordinates for a shape’s scope are 0;
  • the “y” (elevation) coordinates are the sidewalk height constant found on Line 58 of the Street_Modern_Standard rule file: const SidewalkHeight = 0.2 (meters).

The Lot rule leads to LotAligned, where successor rules are dictated by the land use Type that was determined based on the distanceToCenter constants described in Part 2 of this analysis. The same treatment is given to the LotInner start rule and to the LotInnerAligned successor rule.

From here, the successor rules split off to the initial rules that define characteristics of each land use type:

  • GreenGround Trees
  • ResidentialBlock
  • ApartmentBlock
  • CommercialBlock
  • HighriseBlock
  • ParkingGround

This is a good place to take a break. In the next installment, we will begin to see how these land use type definitions progress.

 

Leave a Reply

Your email address will not be published. Required fields are marked *