GeoTools is a general-purpose productivity tool for users of all types of geographic data. In the Civil Tools section, there are many tools for Civil engineering design and analysis. This article is an attempt to put together a workflow for users wanting to work with survey data and create finished data representing the terrain cross-section & chainages . In this post, I write primarily about generic civil design tasks but in a following post, we will also discuss how roadway design techniques can be accomplished.
In this article, let us look at the complete workflow of solutions for a typical road design task from start to end.
Step 1: First, we start with the DTM elevation points of the area which must be available as 3d points. These must first be checked for duplicate points, wrong Z values etc. using several GeoTools commands as shown below. This is a very important step because any error in data will always give wrong results or failed processing.
GT_DELDUP (GeoTools -> Drawing Cleanup -> Delete Duplicate Objects):
Remove any duplicate points in the DTM data using the above tool. Put a small non-zero Delete Tolerance value like 0.01 because it is not required to have points which are so close to each other. Such data spoils the quality of the TIN DTM and results in triangles which are unnecessarily skewed.
As part of good drawing management, it is required that you put all data in their respective layers. Therefore, put the DTM points in their own layer. If that is not possible, you can have them in different layers and they can be presented for processing as the active selection set of multi-layer points.
Step 2: The next step in data checking is to make sure the Z values of the points are in the expected range of the area to be designed.
GT_FINDZRNG: GeoTools -> Selection -> Find objects in selected Z range:
This step is important to ensure that the points are in the expected elevation range. For example, if your elevation values must be between 800.0 and 1100.0, run the GT_FINDZRNG command to make sure. If you find any data which is not in range, it must be deleted or corrected at this stage.
Step 3: Create the TIN (Triangulated Irregular network)
GT_TRIANGULATE: GeoTools -> Civil Tools -> Create TIN (Delauney triangulation) & Voronoi polygons
This is a combo command that also allows you to create Voronoi polygons also. Choose the TIN option and set the TIN data type as 3dfaces (Create triangles using 3dfaces.One important parameter here is the max length for TIN triangles. Set this at such a distance that unnecessarily long triangle sides are not created. For example, if you have the data covering irregular shaped areas, make sure that the triangulation does not happen outside the project area. This can be easily handled in most cases by limiting the length of TIN triangles to draw.
Step 4: Once the TIN is drawn, you need to design your roadway horizontal alignment across the terrain. You can do this as a 2d curve first using any of your existing methods or procedures. The result must be a 2d polyline or spline that we can use for further calculations. This is a step you do outside GeoTools (as of now – we don’t have a horizontal road design tool).
Step 5: The horizontal curve must now be draped on the existing terrain to get the elevations along the route. We use the GT_DRAPEPOLY command for that but before you so that, we must check if the elevation sampling interval is correct.
For example, if your horizontal alignment has arc segments (or polyline arcs), you must first convert them into fully linear segments with the vertices close enough to yield a good design accuracy.
For this purpose, we suggest the following tools as applicable to your data condition:
GT_PLARC2PL: Convert Arc Polylines to linear segment polyline
If you have used arced polylines for your horizontal alignments, use this tool to replace arc segments in polylines with approximated linear segments, based on angle, chord distance or chord perpendicular.
GT_SPL2PL: Convert Splines to polylines:
If you have used splines, fitted or splined polylines for your horizontal curves, use this tool to replace it with a normal 2d polyline whose vertex distance is close enough to be suitable for your design accuracy.
GT_DENSIFY: Polyline Tools -> Optimization/Cleanup -> Densify Vertices:
If the resulting (or existing) vertex distance in your horizontal alignment polyline is too little, then you can use the GT_DENSIFY tool above to add more vertices as necessary, precisely controlled the spacing between the vertices.
Once you are satisfied with your horizontal alignment 2D polyline, you must convert it into a 3d polyline using the GT_CH2D3D command.
GT_CH2D3D: GeoTools-> Polyline-> Change 2d->3d->2d-> 2D-to-3D
This step is important because you cannot generate a 3d profile using a 2d polyline.
Once you have the 3d polyline, it is now time to drape it on the terrain surface. When you do this, the vertices in the horizontal alignment acquire the elevations from the existing terrain.
GT_DRAPEPOLY: Build -> Drape a 3D polyline across a set of intersecting lines
The GT_DRAPEPOLY command works by checking a selection of source objects (the horizontal alignment in our case) against a selection of target objects (the terrain TIN 3DFACEs), and this results in a 3d polyline that follows the geometry of the existing terrain.
The next step is to create a cross-sectional profile from the draped polyline. This is done using the GT_CROSSSECT command. This is a special version of the GT_PROFILE command for volume calculation and roadway design, that creates cross-sectional profiles. In this case, the parameters are preset such that the vertical exaggeration factor is set to 1.0 and the profile interval is also set appropriately.
GT_CROSSSECT: GeoTools -> Civil Tools -> Multiple Cross Section Tools
This command also allows multiple lines to be cross-sectioned to cover a closed area of interest, but in this case, we will chose the option that requires us to select only 1 polyline for profile / volume calculation.
Once you have the cross-section profile, you now see the profile of the road on the existing terrain. At this point, you have to design the vertical curves now. GeoTools provides a command called GT_DRAVCURVES which draws the alignment as per the parabola formula method.
In this method, you specify the input [entry] slope and output [exit] slope and the The GT_DRAWVCURVES command is found at the following location:
GT_DRAWVCURVES: Civil Tools -> Road Design -> Draw vertical curves
Draw vertical road alignment curves by the symmetric parabolic method.
The GT_DRAWVCURVES command has the following sequence of inputs to be provided.
Pick [left] start point of vertical curve: <do so>
Enter or pick horizontal projected length of vertical curve to design <500.0000>:
Horizontal length of vertical curve: 500.0000
Enter or pick curve interpolation interval <10.0000>:
Enter grade (in percentage) at entry of curve <2.0000>:
Entry slope [percentage]: 2.0000
Entry slope [degrees]: 1.1458
Enter grade (in percentage) at exit of curve <2.0000>: -4
Exit slope [percentage]: -4.0000
Exit slope [degrees]: -2.2906
Creating cross-sections profile (GT_PROFILE) and chainage annotations (GT_CHAINAGE) commands
GT_PROFILE: GeoTools -> Civil Tools -> Draw cross-sectional profile from 3D Polyline
From survey data, it is pretty easy to create a 3d polyline that represents a terrain section. GeoTools provides tools to create 3D cross-sectional profile generation and chainage annotation. Using the GT_PROFILE command, you can profile a 3d polyline and create cross-sectional view accurately with fully parametrized control.
From the above dialog box, it is clear that almost every aspect of the cross-sectional profile can be controlled using this command.
Another common output required from the 3d polyline representing the terrain is the chainage information. The chainage is a continuous linear count of the distance traversed along the path. This is achieved using the GT_CHAINAGE command.
GT_CHAINAGE: GeoTools -> Civil Tools -> Annotate chainages along a route
This command allows chainage annotation to be performed using a flexible parametrized dialog box that allows full control over the parameters.
With these few set of commands, we believe that we have covered some of the common workflows in processing of survey data. We would like to hear from you if you need anything more that we need to cover.
Tips for faster data processing
GeoTools is a Lisp application and it is normal that handling large data-sets consume lot of system resources and takes time. It is therefore recommended to split large data-sets into smaller sets and process smaller parts individually where possible. This is especially true for commands like GT_TRIANGULATE, GT_DELDUP and sometimes even GT_DRAPEPOLY.
The GT_TRIANGULATE command produces acceptable results in many configurations of data but can produce unpredictable or erroneous results in data which is very skewed or irregular in shape.
The GT_CREATECONTOUR command produces rough contours which are suitable for quick checks. It is not the best contour engine and may need further improvement using other GeoTools commands. If the GeoTools contour results are not suitable, you are advised to use any alternative tools that may be available for contour generation.
Follow us on Twitter: https://www.twitter.com/rakesh_rao