Landuses – Area Test

Landuses – Area Test

This is duplicate post of a discussion I started on ESRI’s CityEngine support forum

I’ve already outlined a way to allocate landuses based on a static shape layer, as we get nearer placing buildings on our plots we need to ensure that the “lots” are the correct size and shape.

This following rule can be adapted to test a Lot’s area (in sqm) and then onto the next rule depending on its area. I’ve used this to place different building types on a lot depending on it’s area but you could just as easily tie this into the woodland rule set above…

//the descriptive names can be changed and are more of a guide really change or add more areas for your needs
attr areatest =
	case geometry.area < 100 : "100orLess"
	case geometry.area < 200 && geometry.area > 100 : "100to200"
	case geometry.area < 300 && geometry.area > 200 : "200to300"
	case geometry.area < 400 && geometry.area > 300 : "300to400"
	case geometry.area < 500 && geometry.area > 400 : "400to500"
	case geometry.area < 600 && geometry.area > 500 : "500to600"
	case geometry.area < 700 && geometry.area > 600 : "600to700"
	case geometry.area < 800 && geometry.area > 700 : "700to800"
	case geometry.area < 900 && geometry.area > 800 : "800to900"
	case geometry.area < 1000 && geometry.area > 900 : "900to1000"
	case geometry.area > 1000 : "1000orMore"
	else : "0"

Lot-->
   res_areatest

//this directs the rule to the appropriate model depending on the area size
res_areatest-->
	case areatest == "100orless" : res_100orless
	case areatest == "100to200" : res_100to200
	case areatest == "200to300" : res_200to300
	case areatest == "400to500" : res_400to500
	case areatest == "500to600" : res_500to600
	case areatest == "600to700" : res_600to700
	case areatest == "700to800" : res_700to800
	case areatest == "800to900" : res_800to900
	case areatest == "900to1000" : res_900to1000
	case areatest == "1000orMore" : res_1000orMore
	else : stop.	

res_100orless-->
	extrude(5) report("1000", geometry.area())
//etc....

As usual does anyone have any thoughts/suggestions/corrections?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.