What is the current state of CityEngine's subdivision algorithm tool

08-03-2016 08:26 AM
New Contributor II

Good morning everyone!

Can anyone give me a quick summary of the current state of the CityEngine subdivision algorithm abilities? 

I would like to use it at our landscape and planning firm for doing quick massing & area studies for residential development.

Is this something esri is developing further or is it on the users to develop complex cga rule combinations for realistic layouts?

Thank you!

Tags (1)
0 Kudos
2 Replies
Occasional Contributor III

Generally their subdivision function for shapes generally is one of better ones in the Land Use/GIS world which is still using fishnets to cut land  and then using eliminates to remove slivers in some cases. Recently in 2016 they also made a split area function that might be worth checking out, but I have had performance issues with CE 2016/rule interface bugs. Generally, the best example I have seen in terms of application was a lightning talk a few years ago. His python scripts are pretty simple, but effective, if above the certain size, he subdivides his parcels.

Generally this function is accessed in the Python API under subdivideShapes.

Example from docs:

subdivideShapes(self, shapes, settings=None)Subdivides a set of shapes using a block to lot algorithm.

@param shapes: The set of shapes to subdivide.
@param settings: The subdivision settings. Omit to use default settings. (default  = None).
@return: The new lot shapes. [sequence]

@note: # subdivide shapes in scene
shapes = ce.getObjectsFrom(ce.scene, ce.isShape, ce.withName("'Block 1'"))
subdsettings = SubdivideShapesSettings()
ce.subdivideShapes(shapes, subdsettings)

David Wasserman, AICP
Esri Regular Contributor

If you use the street tools, you can set the subdivision algorithm on the blocks made by streets.

If you are not using streets, and you just have shapes you want to subdivide, then you can write cga (or python code as David suggests) to subdivide the shapes.  Splits applied recursively may help.  Functions that might help:  split, splitArea, offset, setback, shapeL, shapeU, shapeO, convexify, innerRectangle.

0 Kudos