A common question I expect, and it was the first thing I noticed after importing a shapefile of roadway centerlines, then clicking Graph > Align Graph to Terrain, using “Project All” as the Align Function, a 10m DEM as the Terrain Class and 1.0 as the offset. This resulted in portions of roadways being below grade. Given the complexity of the terrain data versus the number of nodes along the roadway centerlines, I shouldn't be surprised.
Why does this happen? Because with both street graphs and static shapes, CityEngine projects only the vertices to the terrain.
Let's analyze the issue.
Figure 1 above shows our example area inside Waubonsie State Park in Iowa. Figure 2 shows our roadway shapefile from the Iowa Department of Transportation and the way it was rendered as a graph in CityEngine. Note there are more vertices or "nodes" (the black dots) in areas where the geometry is articulated to display curvature. Straight segments have fewer nodes spaced further apart. When there aren't enough nodes to follow the terrain, the road will "bridge" low areas and be covered by higher terrain.
In Figure 3, once the vertices/nodes are lined up with the terrain, there are issues with cut and fill. The terrain may not be of sufficient resolution to show roadbeds, so some roadway may be below grade. Straight segments with nodes further apart have no fill underneath and will appear to "bridge" the terrain.
Figure 4 shows data resolution vs. roadway. We took our 10-meter terrain data -- not the greatest resolution for precise models -- and looked at individual pixel values. Next, we compared the shapefile centerline and the vertices in our roadway graph (indicated by the red dots) against the cells of our 10-meter terrain data. The roadway is covered when pixel values are higher.
How do we handle this? I'll have to get used to the new Edit Streets/Curves tool in CE 2017. I've never liked working with Bezier curves. Stay tuned.