Select to view content in your preferred language

CGA Strategies for Dealing with Irregular Shaped Lots

394
0
02-25-2026 12:03 PM
DJ_GIS
by
Occasional Contributor

Hello, looking to see if anyone has any example CGA scripts or strategies for dealing with irregularly shaped parcels.

I have a few examples where I have a simple CGA rule applied to static lot shapes that show the different setback areas and a build area using innerRectangle(). All of the lots shown would be low density residential with single detached homes.

The following examples have been included:

Example A Pie shaped lotThe build area (green) is being generated towards the rear of the lot (orange) instead of towards the front (red).
Example B - Reverse Pie Shaped LotThe build area (green) is in an acceptable position, but no rear setback (orange) has been generated.
Example C - Triangular Shaped LotThe build area (green) is in an acceptable position, but only a single side setback (blue) has been generated and the generated rear setback (orange) does not meet the rear property line definition in the bylaw I am working with.
Example D - Rear Property Line DefinitionThis example shows the wording for the rear property line definition and provides and example of the rear setback (orange) i am hoping to achieve through CGA.

 

Ideally I am looking to see if it is possible to use CGA to:

  • Have the build area shape (green) generated from innerRectangle() always be adjacent and parallel to the front setback (red).
    • Is innerRectangle() the best operation to use for my use case?
    • Would I be better off inserting primitive shapes to generate required building masses?
    • Any other thoughts or suggestions are welcome!
  • Generate a pseudo rear property line that is used to generate the rear setback based on the rear setback definition provided in Example D.

For reference, here is the CGA script I am using on the shapes:

version "2025.0"

Lot -->
	setback (3) {street.front = Front | remainder :
		setback (7.5) {street.back = Back | remainder :
			setback (1.2) {street.left = Side | remainder :
				setback (1.2) {street.right = Side | remainder :
					buildArea}}}}

buildArea -->
	innerRectangle(scope) {shape : FinalBuildArea | remainder = Color}

FinalBuildArea -->
	color("#37BC7D") # Green

Front -->
	color("#E7180B") # Red
	
Back -->
	color("#FFB93B") # Orange
	
Side -->
	color("#155DFC") # Blue

Color -->
	color(0.75,0.75,0.75)

 

 

0 Kudos
0 Replies