Road on Terrain

Hi Erik -

I don’t have Heron on this machine but, from your picture, that creates the road outlines on the terrain. It doesn’t create a level road section that requires cuts and fills on the sides of the road - which is what the user is after, and something that I think Lands, and perhaps Jørgen’s script does.

Hi @wim

That is true. Because the source file does not contain closed polygons it will also be difficult to generate these projected on the terrain. First the road outlines should be converted to flat surfaces. Than still it will be difficult to generate a road suface wich is somehow flat. For cuts and fills more information is needed i fear. Bison has also some tools for this.

Bison has several interesting tools. Too bad it’s no longer maintained and won’t work on Rhino 8 when that’s run in the NETCore runtime.

do you mean “Lands Design”?
I have a trial version of this app, but I also don’t know how to use it to get horizontal roads on terrain. Please provide an example.
Thank you

That’s cool, but how to get planes from lines that are projected on topography?

Can you provide a version of Heron that has this component?

I decided to use the “Split” command to cut the geometry around the roads. But the relief that I cut changes its geometry. Why does this happen and how to get around it?

1 Like

Definitely try using Land Kit for this stuff (the Topo Kit module) to solve all of these problems. There are some fun tools for relative and absolute grading, patching in new grades, dealing with projected areas, trimming, etc.
#LandKit #TopoKit

Will the free version of this plugin be enough to solve this problem? Can you give an example?

No. It’s probably not enough for the free version to solve these particular problems. But if it can save you a bunch of time and change your workflow on this and other projects, maybe it’s worth it.

Perhaps. Maybe I will take a closer look at this application.
Thank you

The latest version. You can get it only via the package manager.

Hi @Erik_Beeren and @sambrari95 ,
Yes, the place to get Heron is currently through the Package Manager. Aside from MultiMoveToTopo, it also has MultiMeshPatch and GdalBuffer components that I’ve used in the attached definition.

Road on TerrainBW with inner (76.3 KB)
Road on TerrainBW2.3dm (4.7 MB)

As noted previously in this thread, there are a few ways to approach this question, but I’ve put together one that allows for inner boundaries of the road edges using Heron, @laurent_delrieu 's new Nautilus add-in, and Human (for visualization). Here are the general steps I used:

  1. Find the medial axis of the road boundaries to create road centerlines. This can be done with the Voronoi component using the approach found here.

  2. Get the road centerlines (pink) and project them to the topo mesh in order to determine the elevation for nearest road edge point. This should create a relatively flat cross slope for the road surface. Using Nautilus’s Smooth Network component is essential to simplify the medial axis line segments and help determine what is a centerline vs a branch/dead end.

  3. Elevate the road boundary to the projected centerlines.

  4. Project side slopes from elevated road boundaries and intersect the rays with the topo mesh to find the new top/bottom of slope points to be used to in the new topo Delaunay triangulation. This step uses GdalBuffer to find the direction of the side slope rays.

  5. Create a new topo from road edge points, road centerline points, top/bottom of side slope points and existing topo points.

  6. Split the resulting mesh into road, side slopes and surrounding topo.

A few notes:

  • the source mesh geometry is very far from origin and may need to be moved closer to origin for rendering.
  • if side slopes start to intersect each other due to road cutbacks or low slopes, this definition will fail.



Hi there
thank you for your help, I really want to try this script, but for some reason I have a problem with installing the application. The files are in the right folder and all are unlocked. is it possible to do without this plugin?

Hi @sambrari95 ,
I’m not sure what the issue is with your Nautilus install, but in theory, the two Nautilus components I’m using could be substituted.

I’m using PolylineDivide to get equally spaced points along the road edge curve, including points of discontinuity or segment end points which can be accomplished with OOTB components.

The SmoothNetworkOfLinesByDanielPiker component would be more difficult to replace. According to Laurent’s Nautilus release post, this component was built on top of one posted by Daniel Piker.
However the one posted by Daniel outputs simple line segments and not polylines of the line segments joined by branch. If you are familiar with C#, you could dig into Daniel’s code and find a way to output polylines.


script works only with polyline curve?

Yes. You can use the Curve To Polyline component to convert.

Decided to try this script in different situations. And for some reason it does not work. What could be the reason?

test.3dm (4.4 MB)
Road on TerrainBW with inner (67.9 KB)

The MultiMeshPatch component is particular about the order of the boundary curves. The outer boundary must be the first in the list supplied.
Road on TerrainBW2 with inner (76.9 KB)

Note, I added a C# component that orders the boundaries coming out of the GdalBuffer to ensure the outer boundary is first in the list. I also went with GdalBuffer instead of MultiMeshPatch for the top/bottom of slope boundary which can clean up intersecting slopes.



why does the contour have such a line? I thought it should repeat the contour of the road