Esri Complete Street Rule Discussion-Feedback?

82914
223
12-11-2014 10:09 AM
DavidWasserman
Occasional Contributor III

Hi All,

My name is David Wasserman, the urban planner/programmer that wrote Complete_Street.cga that is featured in the Complete Street Example. I was hoping that if anyone had any comments on the rule or suggestions for changes/features/bug fixes I wanted to provide a forum for that on Geonet. So say what ever comes to your mind, but I would prefer constructive feedback. This could be a forum where everyone could provide input, discussion, and hopefully create a better rule. If you want to discuss transportation/parking/urban planning rules generally for CityEngine consider hitting this thread first.

I have attached some example renderings for those unfamiliar with the rule and its capabilities. In addition, there is now documentation for the rule available for download here. It is still pretty rough, so feedback is appreciated. In addition to the documentation, there is a new version of the rule posted about here, feedback would be appreciated.

In addition, this is also an ok forum if you are having problems with the rule. If you comment on here, I get buzzed. In the numbered section below I will recount a short summary of problems discussed in this thread.

Kind Regards,
David Wasserman

PS: If you  do anything with the rule or want to share a rendering you made (a nice one), feel free to share your images/experience.

Discovery 1: Webscene issues that were worked out pretty easily, small webscenes work typically better.

Discovery 2: Street rule is not compatible with CE 2013. Its Crosswalks Depend on 2014 UVSpace options, and there is not an ESRI.lib file for 2013. Rule is designed for and works best with the most recent version of CE (2014).
Discovery 3: For road segments to snap, you must make sure they are apart of the same layer. Merge layers if you have snapping problems.

Discovery 4: Short road segments are hard for the street rule to handle at times. A few work around with short segments include: Change crosswalks and stop types to none, making the CrosswalkBegin/End attributes a negative number, manipulating nodes to be longer, or deleting unnecessary nodes to create longer street segments (use simplify graph tool) (Thanks Steve).

Discovery 5: A discussion about curb extensions  and how to make them albeit an unorthodox way is both below and on this thread.

Discovery 6: Bridges have a minimum height requirement to generate (structure just does not make sense below a certain height). Also if you want Piers to appear regardless of Occlusion settings use On, Show All Piers. If it still does not work try: Making a new segment to test the rule one, restarting CE, or re-importing the road layer and starting again.

Discovery 7: When cropping or re-sizing your aerial for your CE project chances are you will need to georeference the image to your geography or another aerial. Georeferencing an aerial in ArcMAP will take on the ArcMAP scene projection but that is not enough. Be sure to use the "Project Raster" in the Toolbox and this will ensure proper scale and placement for your CE scene.

Discovery 8: Mapped Attributes: IF you map the streetWidth or sidewalk street parameters, and you want to adjust them after the fact you must change both the mapped object attribute AND the shape parameter. See responses below for details.

Discovery 9: Handles - Recent editions to the rule in 2017 have started to support handles for traffic lights and streetlights for more custom edits that were typically reserved for photoshop. If you have any suggestions for handles please add a comment. 

_________________________________________________________________________________________________________________

Notice: 1: There is a 2015 Version of the Complete Street rule. There was a bug in the street rule that did not make it work in 2015, and in this version of the rule the bug is fixed. It should work in 2014 as well as 2015 versions of CE.

David Wasserman, AICP
223 Replies
DavidWasserman
Occasional Contributor III

Hi Wendell, 

Is texturingOn here set to true?

TreeInsert(Location,Percentage1,Tree_Type1,Tree_Type2) -->
     case texturingOn:

I will try other things later, but it does look like there is a texturing rule being applied in the wrong order somewhere. 

David

David Wasserman, AICP
0 Kudos
WendellDimaculangan1
New Contributor III

Yes t's ON.

0 Kudos
DavidWasserman
Occasional Contributor III

Hi Wendell, 

Due to IT issues I can't access a license, but I think I found the issue regardless. 
The IslandInnerSettings rule is setting up a projection and projecting it before you call the MedianTreeSplit Rules at the start split. My guess is you want to do the texturing lower down in the shape hierarchy where the MedianTreeSplit rule is operating. Again, I can't get CE right now, but this seems to be where the flow the rule points. What happens when you remove the bolded code? Same could be said for other parts of the rule. 

IslandInnerSettings -->
case greenCenterIsland:
setupProjection(0, scope.xy, hardscapeTextureScale, hardscapeTextureScale)
projectUV(0)
texture(sidewalkTextures + hardscapeType + ".jpg")
Median_TreeSplit2
Median_TreeSplit

else:
setupProjection(0, scope.xy, hardscapeTextureScale, hardscapeTextureScale)
projectUV(0)
texture(sidewalkTextures + hardscapeType + ".jpg")

PS: Based on the screen shots I see UV overlap flickering. You might want to make sure you only call a median split rule once. 

David

David Wasserman, AICP
0 Kudos
WendellDimaculangan1
New Contributor III

Hi David,

This happend when I removed the bolded code.

Regards,

Wendell

0 Kudos
DavidWasserman
Occasional Contributor III

I might have expected the pavement to become white, but not there to be nothing. MedianTreeSplit rules are still present correct? If you just remove texture() does that also make the whole element blank? 
I will have take a look at this later. I can't access CE (server manager issues). 

David Wasserman, AICP
0 Kudos
WendellDimaculangan1
New Contributor III

Hi David,

Removing the Texture only does it thanks the original tree textures showed up. But the Object.Top mesh dissappears. So What I did is to put the IslandInnerSettings to Object.Bottom an created a new code named Top with the projected texture and call it as the Object.Top. Problem solved.

IslandInner -->
extrude(islandHeight - 0.015)
comp(f){object.top: Top
| object.side: NIL
| object.bottom: IslandInnerSettings}
setupProjection(0, scope.xy, hardscapeTextureScale, hardscapeTextureScale)
projectUV(0)
texture(sidewalkTextures + hardscapeType + ".jpg")

Top-->
setupProjection(0, scope.xy, hardscapeTextureScale, hardscapeTextureScale)
projectUV(0)
texture(grassTextures + grassType + ".jpg")

IslandInnerSettings -->
case greenCenterIsland:
setupProjection(0, scope.xy, hardscapeTextureScale, hardscapeTextureScale)
projectUV(0)
Median_TreeSplit2
Median_TreeSplit

else:
setupProjection(0, scope.xy, hardscapeTextureScale, hardscapeTextureScale)
projectUV(0)
texture(sidewalkTextures + hardscapeType + ".jpg")

Now how can I split the TOP so that only the part under the trees will have the grass texture and the rest with pavers?

Thank you very much!!!

Regards,

Wendell

 

0 Kudos
DavidWasserman
Occasional Contributor III

Hi Wendell, 

To test this I really think I need CE.. Can you send me the link to the project that gave you the assets folder for this? I did not see it in CS 2015. 
Generally, the structure of the original parking rule favored jus texturing the central islands green. Also teh fact that the streetCutsEnd can vary the design makes this a little more complicated. The end game is you would want to remove all texturing that is done before you split the trees. 
The structure should look like:
1. Split Shapes into the pattern [Pavement]:[Tree Greenspace]:[Pavement]

2. Texture Pavement spaces with appropriate texturing rules. 

3.  Texture the planting and insert trees through different rules. 
split(u,unitSpace,0){{~Median_Tree_Spacing/2: Pavement
|1:Tree_Setup("Median", Median_Tree_1_Percentage , Median_Tree_1_Type, Median_Tree_2_Type) GrassRule
|~Median_Tree_Spacing/2: Pavement}*}
Again, I want to test this, but I would like the assets for reference. 

David

David Wasserman, AICP
0 Kudos
WendellDimaculangan1
New Contributor III

Hi David,

Thank you I'll try this later. It's from this link https://www.arcgis.com/home/item.html?id=18baa6129da342a388f7c1b6bae69df3  I think I saved as another project from the archive and named it as Complete street project before  .

I might just use the center island as green as the project will be viewed as a whole. It's a huge masterplan redevelopment.

Thanks for all the help.

Regards,

Wendell

DavidWasserman
Occasional Contributor III

Right! I remember that one now. I can check this out later. With the UC so close I am a little slammed, so I might be able to help more after next week. It seems you are at a stopping point for now though. Using it as a green island as a whole is not that unrealistic honestly. If you want an easy hack, you can reduce the height of the grass, and then add pavement textures on top too (that way the settings of the other island settings don't interfere). 
In anycase, I can take a look at this next week. geoffrt do you have any interest in updating the parking rule to accommodate this use case in the future? I feel like we are doing only a partial solution. 

David Wasserman, AICP
by Anonymous User
Not applicable

@Holisticbynature I'll scope out some time early August to update the code. Agreed on the Partial Solution. The initial parking lot rule was developed in about 10 hours or less and can be fully enhanced with a couple of days development time. Just need to scope out the necessary additions and whiteboard the best schema/framework to develop within.

The key will be to re-use any/all assets and texture maps from the Complete Streets rule.

@wendelld you did a great job taking at a stab at tree "Asset" insertion. Cheers! 

If either of you are at the EsriUC we can discuss further at the 3D Island or over a beer.