Grow a street

The Grow streets tool can be used to generate typical street networks. Three different street patterns (organic, raster and radial) can be arbitrarily combined. The dialog with a number of settings allows the user to generate street networks according to its needs.

The tool can be used in the following different ways:

  • Create a new street network (deselect all and start the generator).
  • Extend an existing street network by selecting an existing street layer before growing.
  • Extend a part of an existing street network (select some streets of an existing street network and apply the tool).

You can access the Grow streets tool by clicking Graph > Grow Streets the main menu.

Note:

The algorithm distinguishes between major and minor streets. Basically, major streets are created until they enclose an area, called a quarter. Then the quarter is subdivided by minor streets. Afterwards the algorithm continues creating major streets and so on.

The wizard creates a user-chosen number of streets. Each new street is added locally to the existing street network, depending on a number of settings (where the street pattern is probably the most important).

  • Basic Settings consist of the number of streets to generate and the street patterns.
  • Pattern Specific Settings define the street patterns more precisely.
  • Advanced Settings specify the algorithm behavior and the algorithm constraints.
  • Environment Settings include obstaclemaps to restrict the growth area and terrains to adapt the created streets to the elevation.
  • Street Width Settings define the street widths of the created streets.

Basic settings

The basic settings consist of the number of streets, the street patterns, and the street lengths.

Organic major street pattern and raster minor street pattern
Radial pattern for both major and minor streets

Street patterns need two street lengths: The long and the short length. The organic pattern needs just one length (the short length is used).

Basic setting has the following parameters:

Number of Streets

The number of streets to generate in total.

Pattern of Major Streets

The street pattern used for major streets: Organic, raster or radial.

Pattern of Minor Streets

The street pattern used for minor streets: Organic, raster or radial.

Long Length

The average length of the long streets (used for the raster and radial pattern).

Long Length Deviation

Before the subdivision of a quarter the length of the long streets is randomly set within the interval [Long Length - Long Length Deviation, Long Length + Long Length Deviation]. In the case of the organic pattern, this length is randomly set for each new street.

Short Length

The average length of the short streets (used for all patterns). See Short Length Deviation.

Short Length Deviation

Before the subdivision of a quarter the length of the short streets is randomly set within the interval [Short Length - Short Length Deviation, Short Length + Short Length Deviation]. In the case of the organic pattern, this length is randomly set for each new street.

Pattern specific settings

The pattern specific settings specify the street patterns in more detail.

Max. Bend Angle (Organic)

The maximal bending angle of organic streets. The angle of a new organic street is randomly set within the interval [Proposed Angle - Max. Bend Angle, Proposed Angle + Max. Bend Angle]. It defines the legal area of street expansion (the green area in the figure below).

Expansion functions for the organic pattern.

City Center (Radial)

The city center used for the radial pattern. Streets go radial or centripetal around or outside of the center.

Max. Bend Angle (Radial)

The maximal bending angle of radial streets. The algorithm tries to adapt the proposed street to either the radial or the centripetal direction. The maximal adaption angle is restricted by this parameter.

Street Alignment (Radial)

There is a long and a short length for radial streets. This parameter decides whether the long streets are aligned radial or centripetal, or if the alignment is chosen randomly.

       Left: Radial street alignment. Right: Centripetal street alignment.

Advanced settings

The advanced settings specify the algorithm behavior and the algorithm constraints.

Snapping Distance

If the distance between a new street node and an existing one is smaller than this snapping distance, the new node is snapped into the existing one. This way, one can control the minimal distance between any two nodes of the street network. Note that only the half of this distance is applied if a minor street intersects with a major street (in order to model more realistic quarter subdivision).

Minimal Angle

The minimal angle between any two neighbor streets of the street network. It is guaranteed that no smaller angle originates.

Street to Crossing Ratio

Using the street to crossing ratio, one can influence the average size of quarters. The algorithm tries to fulfill this ratio (only the major streets and major crossings count!). Quarters are large if this ratio is large and small if the ratio is small. Street to Crossing Ratio = #Major street nodes / #Major crossing nodes where a street node is one with valence (valence = number of outgoing graph segments) equal to 2 and a crossing node is one with valence greater than 2.

Development Center Preference

If large, street nodes near the center are developed more likely than nodes outside. The center is defined as the center of mass of all selected nodes. If small, all nodes are equally likely to be developed.

Angle Offset of Major Streets

Before major street creation, this offset angle is added to the proposed street angle.

Angle Offset of Minor Streets

Before minor street creation, this offset angle is added to the proposed street angle.

Environment settings

Using environment maps one can define boundary conditions like terrains or obstaclemaps.

Adapt to Elevation

Enables or disables adaption to elevation.

Critical Slope

Only proposed streets with a slope greater than the critical slope are adapted.

Maximal Slope

The maximal allowed street slope.

Adaption Angle

The maximal angle a proposed street is adapted (rotation around the y-axis).

Heightmap

If a heightmap is selected, the new streets align to the heightmap and, if enabled (see below), the streets adapt to the elevation. In the combo box, all terrains of the scene are listed. A terrain is an attribute map which defines the float attribute elevation.

Obstaclemap

If an obstaclemap is selected, the new street nodes avoid the obstacles. The street algorithm is able to avoid and circumnavigate obstacles. In the combo box, all obstaclemaps are listed. An obstaclemap is an attribute map which defines the boolean attribute obstacle.

Street growth with obstaclemap.

Street growth with obstaclemap.

Adaption to elevation

The adaption of new streets to elevation is active if a terrain is selected and the adaption is enabled. If the proposed street's length is close to Long Length, the proposed street is adapted to go along an elevation contour line, i.e. the goal is to create a street with slope 0.

If its length is close to Short Length, the proposed street is adapted in order go maximally elevation up or downwards.

Street width settings

Street and sidewalk widths are assigned to the new streets. If an existing street is extended, their street and sidewalk widths are copied to the new street. Otherwise, street and sidewalk widths are randomly set according to the following parameters.

General parameters

Calculate width using street integration

Uses the graph topology to calculate street and sidewalk widths using graph connectivity (slower), otherwise randomly distributed street widths are used (faster).

Street integration parameters

Minimum number of street lanes

The minimum number of lanes that each street may have.

Maximum number of street lanes

The maximum number of lanes that each street may have.

Minimum sidewalk width

The minimum width of each street's sidewalks.

Maximum sidewalk width

The maximum width of each street's sidewalks.

Randomly distributed street widths parameters

Width of Major Streets

The average street width of a major street. See Width Deviation of Major Streets.

Width Deviation of Major Streets

The street width deviation for major streets. The street width is randomly set within the interval [Width of Major Streets - Width Deviation of Major Streets, Width of Major Streets + Width Deviation of Major Streets].

Sidewalk Width of Major Streets

The average sidewalk width of a major street. See Sidewalk Width Deviation of Major Streets.

Sidewalk Width Deviation of Major Streets

The sidewalk width deviation for major streets. The sidewalk width is randomly set within the interval [Sidewalk Width of Major Streets - Sidewalk Width Deviation of Major Streets, Sidewalk Width of Major Streets + Sidewalk Width Deviation of Major Streets].

Width of Minor Streets

The average street width of a minor street. See Width Deviation of Minor Streets.

Width Deviation of Minor Streets

The street width deviation for minor streets. The street width is randomly set within the interval [Width of Minor Streets - Width Deviation of Minor Streets, Width of Minor Streets + Width Deviation of Minor Streets].

Sidewalk Width of Minor Streets

The average sidewalk width of a minor street. See Sidewalk Width Deviation of Minor Streets.

Sidewalk Width Deviation of Minor Streets

The sidewalk width deviation for minor streets. The sidewalk width is randomly set within the interval [Sidewalk Width of Minor Streets - Sidewalk Width Deviation of Minor Streets, Sidewalk Width of Minor Streets + Sidewalk Width Deviation of Minor Streets].