Block parameters

The parameters for a block subdivision can be specified under Block Parameters in the Inspector. Block parameters can be individually set for each block.

Block Parameters
Block Parameters

Note:

Parameters (attributes) can be mapped to Default, User, Object, or to a map layer. See Mapping Attributes for details.

Lot default rules

You can divide blocks into polygonal shapes or lots. The lots have the following default start rules:

Lot

Polygonal shape touching a street.

LotInner

Lots that reside within a block but do not touch a street.

LotCorner

Created when the corners of a lot are given a width when you set the Block Corner Length parameter on a block with recursive or offset subdivision.

When you select a lot shape within a block, it displays the one of the start rules:

Start rule Lot

Subdivision type parameters

Several parameters are available that allow you to control the street shapes.

Subdivsion Type (attr type)

Specifies the subdivision algorithm to use: Recursive Subdivision, Offset Subdivision, Skeleton Subdivision, or No Subdivision

Recursive Subdivision creates rectangular lots by repeatedly splitting the block.

Recursive Subdivision

Offset Subdivision creates lots only within a given distance from the street edges of the block.

Offset Subdivision

Skeleton Subdivision creates street-aligned lots that always have access.

Skeleton Subdivision

No Subdivision doesn't perform subdivision on this shape.

No Subdivision

General block parameters

The following tables describe parameters that are common to all the block types.

Terrain Alignment (attr alignment)

This parameter is only used if the initial shapes are uneven. This sets the alignment of the lot over the terrain. There are four numeric options, as illustrated below.

Valid values are [0,1,2,3]

0. Uneven. The lots follow the terrain, given uneven heights.

Uneven

1. Minimum. The lots lie at their lowest point of the terrain that they cover.

Minimum

2. Maximum. The highest point of the lot is used.

Maximum

3. Average. The average height of the lot is used.

Average

 

Create Shape (attr shapeCreation)

Enable or disable the shape geometry creation from the segment.

Recursive subdivision

The recursive subdivision technique is the default. It subdivides the block into rectangular lots of various sizes.

Force Street Access (attr forceStreetAccess)

The factor indicating the preference for lots with street access. A higher value results in more lots having street access.

Given in range [0.0,1.0]

Subdivision obtained for a Force Street Access value close to 0.

Force Street Access value close to 0

Subdivision obtained for a Force Street Access value close to 1.0.

Force Street Access value close to 1.0

 

Lot Area Min (attr lotAreaMin) and Lot Area Max (attr lotAreaMax)

The approximate lower and upper bounds of the area of lots obtained after subdivision.

Given in absolute area units

Subdivision obtained for smaller Lot Area Min and Lot Area Max values.

Lot Area Min and Lot Area Max small values

Subdivision obtained for larger Lot Area Min and Lot Area Max values.

Lot Area Min and Lot Area Max large values

Subdivision obtained when the difference between Lot Area Max and Lot Area Min is small.

Lot Area Min and Lot Area Max small difference

Subdivision obtained when the difference between Lot Area Max and Lot Area Min is large.

Lot Area Min and Lot Area Max large difference

 

Lot Width Min (attr lotWidthMin)

The minimum width of the side of a lot. Subdivision stops if the length of any of the sides of any of the resulting lots is less than this value. If this value is high, the area of resulting lots may be larger than the area specified by Lot Area Max.

Given in absolute length units

Subdivision obtained for a smaller Lot Width Min value.

small Lot Width Min

Subdivision obtained for a larger Lot Width Min value.

large Lot Width Min

 

Subdivision Irregularity (attr irregularity)

The relative deviation of the split line from the middle point of the center of the oriented bounding box (OBB). If this value is 0.0, the split line will be pivoted at the middle point of the OBB of the parent lot. A higher value results in the split line being farther away from the middle point, and generally, in a higher difference in the areas of the two children nodes.

Given in range [0.0,1.0]

Subdivision obtained for a Subdivision Irregularity value close to 0.

Subdivision Irregularity value close to 0

Subdivision obtained for a Subdivision Irregularity value close to 0.5.

Subdivision Irregularity value close to 0.5

 

Subdivision Seed (attr seed)

To increase the stability of subdivisions under interactive editing operations, the random seeds for the children lots of a given lot are computed before the recursive call to the subdivision function.

 

Block Corner Angle Threshold (attr cornerAngleMax)

Corner angle threshold. If the angle at the vertex of a block contour is less than this value, a corner lot is inserted. A larger value results in a more relaxed criterion for inserting corners, and thus in more corners being created. If this value is 0.0, no corners are created.

Given in degrees

Subdivision obtained for a smaller Block Corner Angle Threshold value.

Small corner Angle

Subdivision obtained for a larger Block Corner Angle Threshold value.

Large Block Corner Angle Threshold

 

Block Corner Length (attr cornerWidth)

Width of the interior side of the created corners. If this value is 0.0, no corners are created. The maximum value for this attribute is automatically computed to avoid self-intersections.

Given in absolute length units

Subdivision obtained for a smaller Block Corner Length value.

Small Block Corner Length

Subdivision obtained for a larger Block Corner Length value.

Large Block Corner Length

Offset subdivision

A block that uses offset subdivision is offset to create a fixed-width strip along the street edges, which is then subdivided into lots.

Offset Width (attr offsetWidth)

The perpendicular distance from the block contour to the inward offset polygon. Intuitively, this value corresponds to the depth of the lots that are created when offset subdivision is used.

  • If this value is close to 0.0, OBB subdivision is used.
  • If this value is high enough so that the offset polygon is collapsed, OBB subdivision is used.

Given in absolute length units

Subdivision obtained for a smaller Offset Width value.

Small Offset Width

Subdivision obtained for a larger Offset Width value.

Large Offset Width

 

Recursive Subdivision

After the offset routine, there is an option to also run the recursive subdivision on the result. This is controlled by the same set of parameters as the recursive subdivision scheme.

See Recursive subdivision for the rest of the specific parameters.

Skeleton subdivision

Skeleton subdivision attempts to subdivide a block such that every lot has access to the street. The sides of the lots are perpendicular to the roads to which they are adjacent.

Shallow Lot Fraction (attr shallowLotFrac)

Limit for merging triangular lots.

Subdivision obtained for a smaller Shallow Lot Fraction value.

Small Shallow Lot Fraction

Subdivision obtained for a larger Shallow Lot Fraction value.

Large Shallow Lot Fraction

 

Corner Alignment (attr cornerAlignment)

Skeleton subdivided lots face their nearest streets. At the corner of two streets, one will normally take priority. The corner alignment determines how this priority is assigned, either by Street length or by Street width.

Street width—The widest street takes priority. If the streets have similar average widths, the street length is used instead.

Corner Alignment street width priority

Street length—The longest street takes priority.

Corner Alignment street length priority

Simplify (attr simplify)

Amount of simplification that occurs. A high value creates irregular lots with fewer vertices.

Given in range [0.0,1.0]

Subdivision obtained for a smaller Simplify value.

Small Simplify

Subdivision obtained for a larger Simplify value.

Large Simplify

 

Lot Area Min (attr lotAreaMin)

After subdivision, lots with a small area are repeatedly combined with their neighbors until they are larger than this minimum. This reduces the number of smaller lots, but may create lots of more irregular shape.

Given in absolute area units

 

Lot Width Min (attr lotWidthMin)

The ideal length of street front that each lot should possess. This is increased or decreased by several other processes. A low lot width relative to the block size may create many narrow lots.

Given in absolute length units

Subdivision obtained for a Lot Width Min value of 15.

Lot Width Min value of 15

Subdivision obtained for a Lot Width Min value of 30.

Lot Width Min value of 30

 

Subdivision Irregularity (attr irregularity)

As this parameter increases, it introduces a stochastic element into the lot width and lot edge direction.

Given in range [0.0,1.0]

Subdivision obtained for a smaller Subdivision Irregularity value.

Small Subdivision Irregularity

Subdivision obtained for a larger Subdivision Irregularity value.

Large Subdivision Irregularity

 

Subdivision Seed (attr seed)

To increase the stability of subdivisions under interactive editing operations, the random seeds for the children lots of a given lot are computed before the recursive call to the subdivision function.

No subdivision

No Subdivision

This simple subdivision technique subdivides the block into a single lot of the same shape. There is an option to remove the lot's corners.

Description of algorithms

Recursive OBB algorithm

The recursive OBB algorithm computes a split line at each step. If the two lots resulting from the split meet the user-specified constraints, the algorithm recurses on them. To determine the pivot point and direction of the split line, the minimum-area oriented bounding box (OBB) of the lot is computed. By default, the pivot point is set to the midpoint of the largest edge of the OBB, and the split line direction is set to the direction of the smallest edge of the OBB. The split line pivot and direction can be modified by the following criteria:

  • Street access—If one of the lots resulting from a split has no street access, the orthogonal vector to the initial direction vector is used.
  • Snap to block contour vertices—If the split line is within a threshold distance from one of the vertices of the contour of the original block, the pivot point of the split line is set to that vertex.
  • Edge alignment—To increase the stability of subdivisions under interactive editing operations, the sampling angle space to compute an approximation of the OBB uses one of the lot edges as reference.
  • Random seeds—To increase the stability of subdivisions under interactive editing operations, the random seeds for the children lots of a given lot are computed before the recursive call to the subdivision function.

Successive steps of the recursive OBB algorithm
Successive steps of the recursive OBB algorithm

Offset algorithm

The offset subdivision algorithm computes the inward offset of the block contour and subdivides into lots the stripe between the block contour and its offset. The inward offset is computed with CGA. A set of sample points is computed along the offset. Consecutive points are separated by a distance computed as a function of the user-specified lot areas. Lines orthogonal to the offset at the sample points and passing through the sample points are used to split the stripe between the block contour and the offset.

Skeleton subdivision algorithm

The skeleton subdivision algorithm uses the straight skeleton (below, top left) to identify the center lines of the block. Given a set of skeleton faces, you identify those whose street edges are adjacent and of a similar curvature (below, top right). These faces are then grouped together. For each corner, the alignment priority (see Corner Alignment) determines how you assign the corner sections of these face-groups (below, bottom left). Finally, each of the face-groups are sliced in a direction perpendicular to their street edges to create lots, and small lots are merged together until they are larger than Lot Area Min.

Successive steps of the skeleton subdivision algorithm
Successive steps of the skeleton subdivision algorithm

Consistent Indexing

As a result of the recursive nature of the subdivision algorithm and the different criteria dictated by shape attributes, the ordering of the lots resulting from subdivision may significantly vary after an editing operation. This is particularly inconvenient if models have been generated inside the lots.

To improve the consistency in the lot indexing among two consecutive subdivisions, the algorithm computes the relative position of each lot for each one of the two subdivisions, using a metric based on generalized barycentric coordinates. Pairs of lots that are the closest to each other in this barycentric space, are assigned the same index.

The same approach is also used to improve the consistency of the seed of each lot. As a result, two lots that are relatively in the same position of the block at two different subdivision configurations, have higher chances of sharing the same seed and attributes. The figure below shows a subdivision together with the shapes generated from a grammar that assigns one of 15 possible random colors to each lot. Due to the consistency logic above, the colors of lots that have similar relative positions inside the block are preserved, even though the topology and geometry of the subdivisions are different as a result of an editing operation.

Subdivision for initial block

Subdivision for initial block

Subdivision for block after interactive editing

Subdivision for block after interactive editing

Autogenerated street width attributes

For each resulting lot, an array of street width object attributes is generated.

A typical lot selected in the Viewport
A typical lot selected in the Viewport
Street width attributes in the Inspector
Street width attributes in the Inspector
Note:

The first edge of a lot is the edge with maximal street width.