Extract Surface Features Command

D_ExplodeSurface_600ppi   Extract Surface Features

Command Licensing and Default Menu Location

  • The Extract Surface Features command is part of the RPS Modeling Toolbox
  • The command is located on the Modeling Toolbox menu ribbon
  • The command is located in the Surface / Volumes menu group

Command Description

Explodes and extracts surface features from a selected TIN surface model, creating any of the following surface elements depending on the type of surface and what it contains in terms of data elements

  • 3D lines and points (Any Surface)
  • 3D lines (Any Surface)
  • 3D surface boundary (Any Surface)
  • 3D breaklines (TBC Surfaces e.g. subgrade surfaces)
  • 3D drape lines (TBC Surfaces e.g. textured surfaces)

The explode process eliminates duplicate lines. The exploded surface can then be edited to remove erroneous data e.g. erroneous triangle sides or to be combined with other data to create a new surface model.

The command also provides the ability to extract triangle side linework that follow breaklines in the original surface model through use of a break angle definition. The break angle is the angle subtended between adjacent triangles along the common triangle side. A single break angle (sides greater than a specified break angle) or a break angle range (break angles that fall within a range of values defined by a Min / Max pair) can be used. This provides the ability to “reverse engineer” linework from an imported TIN model. The extracted linework elements can be optionally joined.

The command has been updated to fully support the Reference Surface function of TBC v5.60

Command Interface Description

The Extract Surface Features command dialog looks as follows

Select the surface model that you wish to explode

Place exploded objects on layer:
Select the layer onto which you want to place the exploded data (lines only or points and lines).


Note the select layer uses the new RPS Layer Control. If you need to create a new layer or layer group you can do that by clicking [New…] and completing the layer properties that you require.


If you need to create a New layer Group, you can click [New…] next to the Layer Group control.


If you need to create several new layers, tapping the Apply button will create the currently defined layer and allow a further layer to be defined. The last created layer will be returned to the command on exiting the Create New Layer dialog. Exit the dialog by clicking OK to accept the current entry and close, or by clicking Cancel to close without committing the current changes.

Select the target layer from the pull down list.

There are three main options for exploding the data from a surface

  1. Extracting all of the triangle sides and optionally points at all triangle vertices. When you extract points and lines, the lines will be defined using Point IDs and will be dependent objects on the point data. To change the elevation of a node in the surface or to move a node in the surface you will need to move the point and the connected lines will go with the point move.
  2. Creating a boundary around the source TIN model. This will currently only create a boundary around the outer edge of a surface model, it does not find internal boundaries or multiple boundaries for holes and islands.
  3. Extracting the internal breaklines and or drapelines from a TBC surface. For example a TBC Subgrade surface, created by applying Site Improvements to a surface will contain internal breaklines that follow the edges of the subgrade model. For example, a TBC surface that has been textured or that has had site improvements applied to it, will have drapelines in the surface that follow the edges of the texture or site improvement areas.
  4. Extracting lines from the TIN model that follow features that have a break angle across the feature. For example you import a TIN model in TTM or LandXML format from a third party source, and they do not provide you with any 3D linework, you can use this tool to extract feature lines that follow surface breaks defined by triangle sides. While not always a perfect solution, this tool in many cases will extract the linework needed (with some post extraction cleanup) that you need. For this type of work you can define a set of scripts that you can apply to any surface model that contain your predefined settings for different types of features.

When extracting surface boundaries, breaklines, drapelines or feature lines, the triangle sides extracted can be joined into continuous lines using the join lines controls.

Create triangle lines:
There are two options of how to extract the data.

  1. 3D Lines Only - this option creates 3D linestrings using the coordinate method. The linestrings are not dependent objects on any point data. Note that if you edit one line, the other lines that connect at the same node, will not be adjusted.
  2. 3D Points and Lines - this option creates linestrings using the Point ID method. The linestrings are dependent objects on the point data at their endpoints. To move the lines or change their end point elevations, move the point that is at the end point of the line you wish to change. Note that all lines that connect at the same point will be adjusted by a single point edit.

In this section, all of the selections made will be extracted and placed on the layer defined earlier. If you wish to extract Boundary, Breaklines and Drape Lines on separate layers, only check one box at a time and select a different layer between process executions. The options to create boundary, breakline and drapeline objects cannot be carried out at the same time as filtering lines using break angles etc. and vice versa.

Create boundary checkbox:
If you check this checkbox, the command will create a 3D line that follows the outer boundary of the source surface model.

Create breaklines checkbox:
If you check this checkbox, the command will create 3D lines from the “internal breaklines” of a TBC surface model.

These are typically formed in 3D surfaces generated for corridor models or for subgrade adjusted surface models (using site improvements or takeoff work processes). You can see the breaklines in the surface model properties.

Create drapelines checkbox:
If you check this checkbox, the command will create 3D lines from the “internal drapelines” of a TBC surface model.

These are typically formed in 3D surfaces where you have applied site improvements or surface textures to a surface model in TBC. You can see the drapelines in the surface model properties.

Automatically join segments checkbox:
Check this box if you wish to join the line segments extracted by the boundary, breakline, drapeline or filter line procedures. The joining process uses a two stage joining routine.

Stage 1 joins extracted lines that touch at their end points when there are only two lines connecting at the location. If three or more lines touch at the same location, no join is attempted in the stage 1 joining process.

Stage 2 uses the Maximum deflection angle between segments to complete a secondary joining of lines. In this case, the joining does not consider how many line features touch at the same location, it simply tries to find the connection with the smallest deflection angle within the maximum allowable deflection to thread linear features through the extracted linework. This helps to create long continuous feature lines from the extracted data.

Maximum deflection angle between segments:
Adjust the slider or enter a value for the maximum deflection angle between segments to be used by the Stage 2 joining process. Typically an angle of 15 degrees or less will provide good results for long linear features that are chorded in a surface model (for e.g. Curb,Flow Lines, Walls etc.)

Filter lines by slope break:
You can also select to only create 3D lines along the interfaces between triangles that have a break angle between the faces e.g. a road pavement surface that has a 2% or ~1 degree cross slope meeting the flow line where the next triangle is the face of curb which has a 45 degree angle will have a break angle of ~46 degrees. There are two options here

  1. Create along lines where the break angle is greater than a specified value only
  2. Create along lines where the break angle falls between two specified values (a min and max value)

You can also define a set of scripted ranges that can be saved in an external .RPS file that can be reused in different projects.

Break angle option:
Select this option if you want to only create lines from the exploded surface where the lines form a crease between two triangles that have a slope difference of greater than a defined 'Break Angle" (see below).

This can be used for example to find breaklines from a TIN surface that follow changes of slope greater than the specified angle. This will find e.g. Flow Lines, Top Face of Curb, Surface Breaklines depending on the Break Angle that you define. It can take a bit of trial and error before you find the appropriate break angle depending on the source surface and what specifically you are trying to extract. You may also need to use different Break Angles and Target Layer selection combinations to extract different types of feature from the surface model. Curb and Gutter for example would often be at an angle of 40 degrees or higher. Retaining Walls could be a break angle of 80 degrees or higher.

Break Angle:
Enter the Break Angle above which you want to extract breakline data from the surface model. i.e. a value of 10 degrees will extract breaklines between triangles that have a change in slope across the breakline of greater than 10 degrees. Lines that have a less than 10 degree break angle (as will be found on large flat surfaces or gentle terrain) will not be extracted.

You will find that relatively small Break Angles of 1 or 2 degrees will separate out a lot of data in a surface model.

Break angle range:
Select this option if you want to create lines from the exploded surface where the lines form a crease between two triangles that have a break angle that falls within a specified minimum and maximum value. For example if you take the crown line that runs along the centerline of a road where the cross slope either side is -2%, you have a 4% break angle at the crown line triangle edges. 4% is approximately 2.2 degrees so using an angle range from say 2 degrees to 2.5 degrees would be the range to use to find the crown line. The range cuts off all triangle sides outside the range, allowing you to more accurately find the lines that you are looking for.

Use the slider control to specify the minimum and maximum values for the break angle range. You can use the slider bars or the numerical entry fields to enter the values, whichever you prefer. Once one of the sliders is selected you can move the slider left or right using the arrow keys on the keyboard, the step increment is 5 degrees.

Preview filtered lines:
If you wish to preview the break angle filters that you are going to apply, click the Preview filtered lines button to highlight the lines that will be extracted using the filters as they are currently defined.

Example Angle Ranges:
Min 0 degrees / Max 0.5 degrees - lines that fall between many triangle pairs (no real value)
Min 0.5 degrees / Max 5 degrees - lines that follow crown lines of roads
Min 20 degrees / Max 60 degrees - lines that follow flow lines or top face of curb
Min 60 degrees / Max 90 degrees - lines that follow top and bottom of retaining walls

Here is a table of typical slope definitions and their degree equivalents

Defined filters:
If you wish to create a range of predefined filters you can define a number of filters and store them in an external .RPS file. The file can be stored anywhere on your computer so that it can be easily retrieved. If you store it in the project folder, it will automatically be selected when you run the command.

Browse button:
Clicking the Browse button will allow you to locate the file anywhere on your computer.

Project data button:
Clicking the Project data button will browse directly to the current TBC project folder on your computer.

Defined filters table:
Within the defined filters table, you can see the contents of the selected .RPS file once one has been defined and selected within the project. In the table, the first line is the “Current” filter, if this is highlighted, then the settings that you make within the dialog area for Layer / Layer Group, Join Segments definition and Filter lines by slope “Break angle range” are then defined in that line of the table.

If you select a previously defined filter from the list displayed, this will change the settings within the command dialog to the values displayed in the highlighted line of the table.

When you have defined a Current filter that you want to save, you can click the save image icon. The command will pop up a dialog that allows you to define a name for the new filter, the filter will then be added to the list and the Current filter cleared ready for a new definition.


Editing a filters name:
To edit the name of a filter, click on the filter line in the table and click the Edit Icon image . The table then becomes editable, click in the name field and change the name to the new name that you require.

Changing a filter’s settings:
To change a filters settings, select the filter in the list, then change the properties for the filter using the appropriate controls in the command dialog for Layer, Break Angle Range and Join and then click the Save icon to store the changes made.

Deleting a filter:
To delete a filter select the filter in the list and then click the Delete icon image .

Saving an updated RPS file:
When you click the save button, the updated RPS file is created automatically.

Each filter has its own Name, target layer, lower and upper angle of the break angle range and a join angle that controls the stage 2 joining process defined earlier in the document.

When you wish to run a specific filter, select the filter in the list and click preview filtered line to see the results of the filter. If you need to make adjustments, you can change the Layer using the Layer selector, you can edit the lower / upper angle using the break angle controls and you can check the Automatically join segments checkbox and define the maximum deflection angle between segments and then preview again before committing. If you wish to save the updates to the filter you can click the save button. This will update the .RPS file in use.

If you wish to run several filters, select each one in turn and click Apply, let it run and then select the next filter and repeat the process.

We recommend that you create different layers for the results of each filter, each layer should have a different color so that after the processing is complete, you can readily see the results of each filter by isolating each layer to review / clean up the results.

When you start a new project, if the layers that you have defined in your .RPS filter file do not exist, then they will be created when you run the command and load an .RPS file

Executes the command with current settings and then prepares the command for a follow on process.

Executes the command and closes on completion

Closes the command without further execution.

Video Demonstration

The following video shows how to utilize the Extract Surface Features command

Use Case Videos

Here is a use case example - in this case we show both Filter by Alignment and the Extract Surface Features command - these give me some extra thoughts on how we can make this even better as well.

Feedback and Enhancement Requests

If you would like to provide feedback on the use of the Extract Surface Features command or to request enhancements or improvements to the command please click “Reply” below