The Grow streets tool can be used to generate typical street networks. Three street patterns (organic, raster, and radial) can be arbitrarily combined. The dialog box with a number of settings allows the user to generate street networks according to their needs.
The tool can be used in the following ways:
- Create a 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 in 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. 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.
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 settings have 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). |
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, you can control the minimal distance between any two nodes of the street network. Note that only half of this distance is applied if a minor street intersects with a major street (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, you 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, you can define boundary conditions such as 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 that 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 that defines the Boolean attribute obstacle. |
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, in other words, 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 downward.
Street width settings
Street and sidewalk widths are assigned to the new streets. If an existing street is extended, its 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 width 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]. |
Street pattern examples
Workflow examples as impressions
- Create a separated single street.
- First growth phase with raster pattern.
- Second growth phase with raster pattern.
- The two networks are connected.
Parameter sets
- Raster pattern.
- Radial pattern.
- Organic pattern.
- Radial major streets with raster pattern on minors.
- Organic circle pattern.
- Honeycomb style.
- The Glasses style.
- Organic distribution of rasters.