Terrace

Pro: survey and point clouds

This chapter covers the Terrace Pro tools on the Pro Survey tab: Philippine geoid heights, site calibration, field-to-finish linework, stakeout files for data collectors, and point clouds from LiDAR or drone surveys. You'll be able to turn GNSS heights into elevations, fit GNSS work to a local grid, draw linework from field codes, send stakeout points to the field, and make a clean ground surface from a point cloud.

The Pro Survey tab

These tools need Terrace Pro; without it, each button has a lock and opens the Terrace Pro window.

The Pro Survey tab: Terrace Pro; the Survey group with Survey Pro, Geoid Heights, Site Calibration, Field to Finish and Stakeout File; the Point Clouds group with Point Clouds, Import Cloud, Ground Filter, Classify, Breaklines and Surface from Cloud.
The Pro Survey tab.
ButtonCommand (aliases)What it does
Survey ProSURVEYPRO (SPRO)Opens the Survey Pro window: Geoid, Calibration, Field-to-Finish and Stakeout pages
Geoid HeightsGEOID (GEOIDHEIGHT, GH)Geoid height at a point; converts point heights
Site CalibrationCALIBRATE (SITECAL, LOCALIZE)Fits the local grid to GNSS control points and moves GNSS points into it
Field to FinishFIELDTOFINISH (FTF, LINEWORK)Draws linework from point codes and keeps it as surface breaklines
Stakeout FileSTAKEOUTFILE (STAKEFILE, SOF)Writes points, or an alignment's stakeout points, for a data collector
Point CloudsCLOUDS (POINTCLOUDS, PCWINDOW)Opens the Point Clouds window
Import CloudCLOUDIMPORT (PCIMPORT)Reads a LAS or LAZ file into a point cloud of the project
Ground FilterCLOUDGROUND (PCGROUND, GROUNDFILTER)Finds the ground points
ClassifyCLOUDCLASSIFY (PCCLASSIFY)Sorts the other points into vegetation, buildings and noise
BreaklinesCLOUDBREAKLINES (PCBREAKLINES, PCBL)Traces tops and toes of slopes and edges of pavement
Surface from CloudCLOUDSURFACE (PCSURFACE)Makes a TIN surface from the ground and the breaklines

Five more point cloud commands have no button: CLOUDLIST, CLOUDDISPLAY, CLOUDRESET and CLOUDEXPORT, CLOUDDELETE (see Point clouds on the command line). Every tool that changes the project is one undo step.

The Survey Pro window

The four survey tools share one window, with a page each: Geoid, Calibration, Field-to-Finish and Stakeout. Click Survey Pro (or type SURVEYPRO); it opens on the Geoid page, and you switch pages with the buttons at its top right. Close closes it. The window sits over the plan, so you see the results drawn behind it.

The ribbon's other four Survey buttons run the same tools as commands, at the command line. Both ways do the same work and save the same data in the project; use whichever you like. Each section below shows the window page first, then the command.

Geoid heights

GNSS receivers give ellipsoidal heights (h): heights above the WGS 84 ellipsoid, a smooth mathematical shape. Plans need orthometric heights (H): heights above mean sea level, which follows the geoid, the level surface of the Earth's gravity. The difference is the geoid height N, and H = h − N. In the Philippines N is tens of metres — about 43 m in Manila and 45 m at Teresa, Rizal — so it can't be ignored.

Terrace Pro carries the EGM2008 geoid model for the whole country (4°N to 22°N, 116°E to 128°E), on its 2.5-minute grid. Its source and accuracy are given on the Geoid page itself:

  • It's the US National Geospatial-Intelligence Agency's grid, as PROJ distributes it, and public domain. Terrace interpolates it bilinearly, as PROJ does.
  • EGM2008 matches levelled benchmarks to about 10 cm where gravity data are dense. In the Philippines it differs from NAMRIA's benchmarks by a few decimetres, with a regional tilt — fine for mapping. For engineering levels, tie the job to local benchmarks with a site calibration: its vertical plane takes up the geoid's local offset and tilt.

Terrace places points on the globe through the project's coordinate system, so set it first (Coordinate systems; e.g. PRS92 zone 3, EPSG 3123, as in the sample project, or UTM 51N).

On the Geoid page

  1. Open Survey Pro. The Geoid page explains the model, then has the tools.
  2. To read the geoid height anywhere, type a Latitude and Longitude in decimal degrees (they start at Manila, 14.5995 and 120.9842) and click Geoid Height.
  3. To change the elevations of all the project's points, click All Points to Orthometric (h − N) or All Points to Ellipsoidal (H + N).
The Survey Pro window's Geoid page: four paragraphs on the EGM2008 geoid, its source, accuracy and the heights h, H and N; latitude 14.5600 and longitude 121.2120 with the Geoid Height button; the All Points to Orthometric (h − N) and All Points to Ellipsoidal (H + N) buttons; a line saying the project's coordinate system is EPSG 3123; and the answer N = 45.182 m at 14.5600°N, 121.2120°E (EGM2008): orthometric H = GNSS h − 45.182.
The Geoid page with the sample project open. At Teresa, Rizal, the geoid is 45.18 m above the ellipsoid.

The conversion buttons change every point that has an elevation. Points that are locked, or outside the grid, are left alone. The change is one undo step (Geoid Heights).

Watch out Converting twice takes the geoid off twice. Convert once, right after you import GNSS points — or use the command, which lets you pick which points.

With the GEOID command

  1. Type GEOID (GH) or click Pro Survey ▸ Geoid Heights. It asks Point for its geoid height or [Convert heights/Info].
  2. Click points in the plan: each one gets its geoid height in the log. Press Enter to finish.
  3. Or type C (Convert heights), choose Orthometric (the default; h − N) or Ellipsoidal (H + N), and type the point numbers, like 11-13,20 (Enter for all).
  4. Or type I (Info) to print what the geoid is, its source and its accuracy.
The command line after GEOID and a click on the sample road: At E 523004.522, N 1610316.934: the geoid is 45.199 m above the WGS 84 ellipsoid (EGM2008). Orthometric height H = GNSS height h − 45.199.
GEOID at a point on the Teresa Bypass Road.

A conversion says how many points changed, shows the first one as an example (its N, and its height before and after), and lists the points skipped and why (no elevation, locked, outside the grid). Without a coordinate system, GEOID stops and asks you to set one.

The log after GEOID's Info option: the source paragraph (NGA's EGM2008 grid as PROJ distributes it, public domain, interpolated bilinearly), the accuracy paragraph and the heights paragraph, then the prompt Point for its geoid height or [Convert heights/Info] again.
GEOID's Info in the log.

Site calibration

A site calibration (also called a localization) fits your GNSS measurements to the job's local grid and benchmarks. You measure, with GNSS, a few control points whose local coordinates and elevations you know. Terrace finds the transformation that carries the measured coordinates onto the local ones, shows how well each point fits, and moves other GNSS points into the local grid with it.

Both sets of points must be in the project as points: the local ones (e.g. points 1–3, typed or imported from the control list) and the GNSS ones (e.g. 11–13, imported from the receiver). A pair is one local point and the GNSS point measured on it.

The models

  • Horizontal fit: Rigid (rotation and shift: 3 parameters), Helmert (rotation, one scale and shift: a 2D similarity, 4 parameters; the default) or Affine (two scales and a skew too: 6 parameters, needs three or more points). They are fitted by least squares (Ghilani, Adjustment Computations, ch. 18).
  • Vertical fit: None (heights as converted), Shift (one constant) or Plane (a shift and a tilt north and east, needs three or more points; the default).
  • GNSS heights: take off the geoid (on by default): the measured heights are ellipsoidal, and EGM2008's N is taken off before the vertical fit, so the fit only has to take up the geoid's local error.

With too few points, Terrace falls back to a simpler model and says so: one point gives a shift only; two points can't make an affine fit or a plane. Points almost on one line fall back too.

On the Calibration page

  1. Open Survey Pro and click Calibration.
  2. Check GNSS points' system (EPSG): the coordinate system the GNSS points' coordinates are in. It starts at the project's system; type 4326 if the GNSS points hold latitude and longitude.
  3. Choose the Horizontal fit and Vertical fit, and whether to take off the geoid.
  4. Under Add a pair (point numbers), type the Local point and the GNSS point and click Add Pair. Repeat for each control point. Each pair is listed with both coordinates and a Remove pair button. (Adding a pair for a local point that already has one replaces it.)
  5. Click Solve. The report appears under the buttons.
  6. Type the GNSS points to move in the box beside Solve (e.g. 20 or 1001-1020) and click Move into Local Grid.
The Calibration page: GNSS points' system 32651 with GNSS heights: take off the geoid on; Helmert and Plane chosen; pairs 1, 2 and 3 with their local and GNSS coordinates and Remove pair buttons; empty Local point and GNSS point fields with Add Pair; Solve, 20 typed in the points box, Move into Local Grid; the report: Site calibration, measured system EPSG 32651, heights ellipsoidal less the EGM2008 geoid height, horizontal similarity / 2D Helmert, scale 1.00000000 (0.0 ppm), rotation −0.572958°, the A matrix, the centroids, vertical inclined plane with shift −0.2500, and the residual table for points 1 to 3; at the bottom 1 point moved into the local grid.
A small test survey in UTM 51N: three pairs, solved, and GNSS point 20 moved into the local grid.

Reading the report

  • Horizontal: the model used, the scale (and its difference from 1 in ppm), the rotation, the 2×2 matrix A, and the centroids of the measured and local points.
  • Vertical: the shift and the plane's slope north and east, in ppm.
  • The residual table: for each pair, dE, dN, the horizontal residual, dZ, and whether it was used horizontally (H) and vertically (V). A residual is local minus transformed measured.
  • The RMS and largest residuals, then notes in plain words.

The notes call out horizontal residuals over 0.03 and vertical residuals over 0.05 (project units) and say which point to check; a scale far from 1 (wrong system, feet vs metres, or a mismatched pair); a plane that tilts more than the geoid usually does; and a fit with no spare points, whose residuals are zero and prove nothing. When everything fits, the last line reads All residuals are within the tolerances. (The test survey above was made exactly, so its residuals are 0.000; real control shows millimetres to centimetres.)

Moving points reads each one's easting, northing and elevation as GNSS values (h) and replaces them with local ones. Locked points are left as they are. The calibration is saved with the project, so you can move more GNSS points into the grid later.

With the CALIBRATE command

CALIBRATE (SITECAL, LOCALIZE) shows a menu, Calibration (3 pairs) [Add/Remove/Model/SYstem/SOlve/REport/APply/Clear], and comes back to it after each choice. Enter picks SOlve when there are two pairs or more, Add before that.

OptionWhat it asks and does
A AddPoint number with the local (known) coordinates, then Point number of the GNSS (measured) point there.
R RemoveThe pair's name (the local point's number).
M ModelHorizontal fit [Rigid/Helmert/Affine], Vertical fit [None/Shift/Plane], then whether the measured heights are ellipsoidal and the geoid comes off [Yes/No].
SY SystemThe GNSS points' EPSG code (4326 = WGS 84 latitude/longitude). Terrace refuses codes it doesn't know.
SO SolveFits the calibration and prints the report in the log.
RE ReportPrints the report again.
AP ApplyThe GNSS points to move into the local grid (numbers like 1001-1020; you must type them). Ends the command.
C ClearRemoves all pairs and results.

Field-to-finish linework

Field-to-finish draws the survey's lines — edges of pavement, centrelines, curbs, tops and toes of slopes, ditches, fences, buildings — from the codes the field crew typed on each point. You don't connect the dots by hand, and the lines follow the points: move a point or change its code and the line is redrawn. Lines that are breaklines can go straight into a surface.

How points are coded

Terrace reads the first word of each point's description as its code. A point makes lines when:

  • its code matches a line code in the Field-to-Finish table (wildcards * and ?; EP* takes EP1, EP2… as separate lines), or
  • a description key with a Figure matches it (that key's layer and breakline setting are used).

Points are taken in point-number order. All points with the same code join into one line, until a line code letter after the code says otherwise:

Letter (default)ExampleMeaning
B beginEP1 BStarts a new line with this point
E endEP1 EEnds the line at this point
C closeBLDG CEnds the line and closes it back to its first point
A arcCURB AAn arc starts here and passes through the next two points of the line
SC / ECBANK SC … BANK ECStart and end a smooth curve through the points between

The built-in line codes are common Philippine and US topographic codes:

CodeWhatLayerBreakline
EP*Edge of pavementV-TOPO-PAVEyes
CL*Road centrelineV-TOPO-PAVEyes
SH*Edge of shoulderV-TOPO-PAVEyes
CURB*Curb (top back)V-TOPO-CURByes
GUT*Gutter flow lineV-TOPO-CURByes
TOP*Top of slopeV-TOPO-SLOPyes
TOE*Toe of slopeV-TOPO-SLOPyes
DIT*Ditch / canal bottomV-TOPO-DTCHyes
BANK*Riverbank / creek bankV-TOPO-WATRyes
FENCE*FenceV-TOPO-FENCno
WALL*WallV-TOPO-WALLno
BLDG*Building outlineV-TOPO-BLDGno
PL*Property lineV-PROP-LINEno

On the Field-to-Finish page

  1. Open Survey Pro and click Field-to-Finish.
  2. If your crew uses other letters, change the Line code letters: begin, end, close, arc, curve start, curve end.
  3. Change the code table if needed. To add a code, type it in New code, set its Layer (V-TOPO-FIGR at first) and Breakline, and click Add Code; adding a code that's already there replaces it. Remove beside a code deletes it.
  4. Click Build Linework. The status beside it says how many lines there are, kept up to date.
  5. To put the breaklines in a surface, choose it under Breaklines into surface and click Keep Breaklines.
The Field-to-Finish page: line code letters B, E, C, A, SC and EC; the code table showing EP*, CL*, SH*, CURB* and GUT* with descriptions, layers, breakline and Remove buttons; New code, layer V-TOPO-FIGR, Breakline on and Add Code; Build Linework, Turn Off and 3 lines, kept up to date; Breaklines into surface EG with Keep Breaklines; and the notes 3 lines from 10 coded points; 3 can be surface breaklines, and EG keeps the linework's breaklines; they follow the points.
Linework built from the test survey's codes, and kept as breaklines of the EG surface.
The plan of the test survey: points 101 to 107 coded EP1 B, EP1, EP1, EP1 E and 102 to 106 coded EP2 B, EP2, EP2 E joined by two white edge-of-pavement lines, and points 109 to 111 coded CL B, CL, CL joined by a centreline, with the alignment CL-1 drawn over them.
The lines in the plan: two edges of pavement (EP1, EP2) and a centreline (CL).

The notes under the page tell you what to fix: codes with only one point (no line), arcs that ended before their third point (drawn straight), smooth curves never ended, and breakline codes on points without elevations (drawn, but not used in surfaces).

The lines are named after their code, like EP1-1, and drawn on their codes' layers. In each surface you keep them in, they're breaklines named FTF …; the surface is rebuilt whenever the linework changes. Turn Off removes the linework and takes its breaklines out of the surfaces again.

With the FIELDTOFINISH command

  1. Type FIELDTOFINISH (FTF) or click Pro Survey ▸ Field to Finish. The linework is built at once and the notes go to the log. (If no point has a line code, it says how to add some.)
  2. If the project has surfaces, it asks Surface to keep the breaklines in or [None/Off]. Click or type a surface to keep the breaklines in it, press Enter (None) to leave surfaces alone, or O to turn the linework off.

The command uses the line code table and letters from the Field-to-Finish page; it doesn't change them.

Stakeout files

To set out a design, the field crew needs the points in their data collector. Stakeout File writes survey points, or stakeout points along an alignment, in the collector's own format.

File kindExtensionNotes
CSV point file (P,N,E,Z,D).csvPoint, northing, easting, elevation, description. Reads into almost anything.
Carlson SurvCE RW5 (stored points).rw5For an alignment with a design profile, the profile is also written as a SurvCE .pro file beside it.
Leica GSI-16.gsi16-digit words.
Leica GSI-8.gsi8-digit words: only for small coordinates; Terrace says so when they don't fit.
Sokkia SDR33.sdr
LandXML 1.2 (points and alignments).xmlFor an alignment, the alignment itself and its profiles go in too.

For an alignment, Terrace makes points every interval and at the geometry points (BOA, PC, PT, EOA…), at each offset (− left, + right of the centreline). They're numbered from 1001. The description says the side, the offset and the station, like L5.00 0+020.00 or CL BOA 0+000.00. Centreline points get their elevation from the alignment's design profile; offset points have none. (For the station, offset and elevation table on screen or in a PDF, use the Free stakeout report.)

On the Stakeout page

  1. Open Survey Pro and click Stakeout.
  2. Choose Stake out: Points or Alignment.
  3. For points, type their numbers (like 1-20,25), or leave the box blank for all. For an alignment, choose it, and type the Interval (20 at first) and the Offsets (−5, 0, 5 at first).
  4. Choose the File kind, click Write File…, and choose where to save it.
The Stakeout page: Stake out Alignment; alignment CL-1; interval 20 and offsets −5, 0, 5; file kind CSV point file (P,N,E,Z,D); Write File…; and the note Wrote 36 stakeout points to stake.csv.
Stakeout points every 20 m along CL-1, at 5 m left, the centreline and 5 m right.

The start of that CSV file:

1001,2048.5000,1000.0000,,L5.00 BOA 0+000.00
1002,2043.5000,1000.0000,50.5000,CL BOA 0+000.00
1003,2038.5000,1000.0000,,R5.00 BOA 0+000.00
1004,2048.5000,1020.0000,,L5.00 0+020.00
1005,2043.5000,1020.0000,50.7000,CL 0+020.00

With the STAKEOUTFILE command

  1. Type STAKEOUTFILE (SOF) or click Pro Survey ▸ Stakeout File. Answer Stake out [Alignment/Points] (Alignment when the project has one).
  2. For an alignment: pick it, then Interval (0 = geometry points only) and Offsets (− left, + right), like -5,0,5. For points: Points (numbers like 1-20,25), Enter for all.
  3. Choose the File kind [CSV/RW5/GSI-16/GSI-8/SDR/LandXML] and type the file's path.

The command remembers the interval, offsets and file kind for next time.

The log at the end of STAKEOUTFILE: File kind [CSV/RW5/GSI-16/GSI-8/SDR/LandXML] CSV: R5; File to write (.rw5): stake.rw5; Wrote 30 stakeout points to stake.rw5 (RW5); Wrote the profile CL-1 FG for SurvCE to stake.pro; bring the alignment in as LandXML (SurvCE reads it; its RD5 road file isn't a published format).
An RW5 file for SurvCE, every 25 m, with the design profile as a .pro file.

Note Carlson's RD5 road file isn't a published format, so Terrace doesn't write it. For a road in SurvCE, send the alignment as LandXML and the profile as the .pro file.

Point clouds

Terrace Free can already make a surface from a LAS or LAZ file whose ground points are classified (see Point clouds (LAS and LAZ)). Many clouds aren't: a drone survey or a raw LiDAR file comes with every point "unclassified". Terrace Pro keeps the cloud in the project and works on it, in four steps:

  1. Ground: find the bare-ground points.
  2. Classify: sort the rest into vegetation, buildings and noise, by height above the ground.
  3. Breaklines: trace tops and toes of slopes and edges of pavement.
  4. Surface: a TIN from the ground with the breaklines, ready for contours, profiles and volumes.

Classes are the standard ASPRS LAS codes: 1 unclassified, 2 ground, 3/4/5 low/medium/high vegetation, 6 building, 7 low point (noise), 9 water, 11 road surface, 17 bridge deck, 18 high noise. The points are drawn in the plan coloured by class, on layers named PRO-CLOUD-GROUND, PRO-CLOUD-HIGH-VEG and so on; at most 20,000 points per cloud are drawn, picked evenly, so the plan stays quick. The cloud itself is saved inside the .terrace file.

The default lengths below are in metres; in a US-feet project they're scaled to feet.

The Point Clouds window

  1. Click Pro Survey ▸ Point Clouds (or type CLOUDS). In a project with no cloud yet, the window offers Import LAS/LAZ….
  2. Click it and choose a .las or .laz file. Every point is read.
The Point Clouds window in a project without clouds: a line on what the window does, There are no point clouds in this project yet, the Import LAS/LAZ… button, and Close.
The Point Clouds window before a cloud is imported.

With a cloud in the project, the top of the window has:

  • Cloud: which cloud the steps work on, if there are several.
  • Import…: another cloud. Export LAS…: writes the cloud with its classes as a LAS file, for other programs.
  • On the row below: Hide Points / Show Points: hides the points in the plan (the cloud stays). Reset Classes: back to the classes in the file. Delete: removes the cloud and its breaklines (surfaces made from it stay).
  • How many points it has, and how many are in each class.

Under them are the four step tabs: Ground, Classify, Breaklines and Surface. Each step's settings are saved with the project, and what the step found is written in plain words at the bottom of the window.

The example here is a small test scene of 8,300 points, 50 m by 40 m: a road on an embankment with side slopes, a few trees and a building on rolling ground.

Step 1: find the ground

Choose one of two well-known filters on the Ground tab and click Find the Ground. Ground points get class 2.

Cloth simulation (CSF), the default, turns the cloud upside down and drops a virtual cloth onto it; the cloth settles on the underside of the ground, and points near it are ground (Zhang W. et al., 2016). It does well on embankments and cuts.

  • Cloth resolution: the spacing of the cloth's particles (0.5 m). Finer follows the ground more closely.
  • Terrain: Steep slopes, Relief (the default) or Flat: how stiff the cloth is. A stiffer cloth doesn't sag into gaps between buildings and trees.
  • Ground within this of the cloth: points at most this far from the settled cloth are ground (0.5 m).
The Point Clouds window on the Ground tab after Find the Ground: cloud scene with 8300 points, 1 Unclassified 492 and 2 Ground 7808; Cloth simulation (CSF) chosen; cloth resolution 0.5 m, terrain Relief, ground within 0.5 m of the cloth, low noise 1 m; the result: the cloth with particles every 0.50, rigidness 2, points within 0.50 are ground, 7808 of 8300 points (94.1 %) are ground (class 2).
Cloth simulation on the test scene: 94.1 % of the points are ground.

Progressive morphological filter (PMF) takes the lowest point in each cell as a first ground model, then opens it with windows that grow; points that stand above it by more than a threshold are objects (Zhang K. et al., 2003). The defaults are PDAL's.

  • Cell size (1 m).
  • Widest object to remove: the largest window (33 m). Objects wider than this — a large building — stay as ground.
  • Terrain slope (rise/run) (1): how fast the ground may rise; it raises the threshold with the window size.
  • Initial height threshold (0.15 m) and Largest height threshold (2.5 m).
The Ground tab with Progressive morphological filter (PMF) chosen: cell size 1 m, widest object to remove 33 m, terrain slope 1, initial height threshold 0.15 m, largest height threshold 2.5 m, low noise 1 m, and Find the Ground; under it the import summary: scene, 8300 points, 1 Unclassified 8300 (100.0 %), read 8300 of 8300 points from scene, LAS 1.2.
The PMF settings, right after the import.

Both filters share Low noise: points below others by (1 m; 0 turns it off): points that lie this far below their neighbours, like reflections, become low noise (class 7) before the filter runs, so they don't drag the ground down.

Step 2: classify the rest

The Classify tab sorts the points that aren't ground by their height above it (a TIN of the ground points), their intensity, and — for buildings — whether they lie on flat or evenly sloping patches, like roofs. Run the ground filter first.

The rules run in order; the first rule that fits a point sets its class. Each rule has a switch, a height range above the ground (From, To; blank = no limit), an intensity range, and the class it gives:

RuleHeight above groundClass
Low noisebelow −0.5 m7 Low point (noise)
High noiseabove 50 m18 High noise
Buildings (flat or pitched roofs)2 to 50 m, on a plane within 0.15 m6 Building
Low vegetation−0.5 to 0.5 m3 Low vegetation
Medium vegetation0.5 to 2 m4 Medium vegetation
High vegetation2 to 50 m5 High vegetation
Road surface (dark ground) — offany; intensity 0 to 4011 Road surface

Change the numbers or the switches, then click Classify Points. The rules are saved with the project. Default Rules puts the table above back.

The Classify tab: the seven rules with their switches, height ranges, intensity ranges 0 to 65535 (0 to 40 for road surface, which is off) and classes; Default Rules and Classify Points; the result: heights measured from a TIN of the 7808 ground points, 192 points became buildings, 300 high vegetation, none noise or low or medium vegetation, 492 points changed class; the counts at the top now read 2 Ground 7808, 5 High vegetation 300, 6 Building 192.
The rules and what they did: 300 tree points and 192 building points.

Step 3: breaklines

Breaklines keep a surface's triangles from cutting across sharp changes in the ground. On the Breaklines tab, Terrace traces them on a grid made from the ground points:

  • Tops and toes of slopes (on): the edges of ground steeper than the limit. The line follows the strongest bend of the ground at each slope's edge.
  • Edges of pavement (off at first): the edges of smooth, level ground whose intensity is in a range (pavement reads darker than grass and soil).
SettingDefaultMeaning
Grid cell0.5 mThe grid the lines are traced on
Slopes are steeper than20 %Steeper ground is slope; flatter is level
Smallest slope area20 m²Smaller slopes are ignored
Shortest line5 mShorter lines are dropped
Simplify within0.1 mLines are simplified within this distance
Pavement intensity from / up to0 / 40Intensity range of pavement
Pavement roughness at most0.05 mHow far pavement may stray from a plane

Click Find Breaklines. The result says what was found and, for pavement, what intensities the ground has (10 % below…, half below…), which helps you set the range for your scanner.

The Breaklines tab with Tops and toes of slopes and Edges of pavement on, and the settings grid cell 0.5 m, slopes steeper than 20 %, smallest slope area 20 m², shortest line 5 m, simplify within 0.1 m, pavement intensity 0 to 40, roughness at most 0.05 m; the result: 2 slope areas, 2 top of slope and 2 toe of slope lines; 1 paved area, 2 edge of pavement lines, with the ground's intensities 10 % below 25, half below 86, 90 % below 101; 6 breaklines.
Six breaklines on the test scene: the embankment's tops and toes and the edges of the road.

The lines are drawn on PRO-CLOUD-TOP (red), PRO-CLOUD-TOE (cyan) and PRO-CLOUD-EOP (yellow). Running the step again replaces the cloud's lines.

Step 4: the surface

On the Surface tab:

  • Surface name: blank gives the cloud's name and "ground", like scene ground.
  • Thin to one point per cell of (1 m; 0 = all points) and Point kept per cell: Average (the default) or Lowest.
  • Use the breaklines (on): the cloud's breaklines become the surface's breaklines.
  • Longest edge along the outside (10 m; 0 keeps all): long thin triangles around the edge are removed, so the surface doesn't bridge gaps in the ground.

Click Make Surface. It uses the ground, water and road surface classes (2, 9 and 11). Thinned points that lie right beside a breakline are left out, so the triangles follow the line.

The Surface tab: surface name blank, thin to one point per cell of 1 m, point kept per cell Average, Use the breaklines on, longest edge along the outside 10 m, Make Surface; the result: 7808 points of classes 2, 9, 11 thinned to one per 1.00 cell (mean): 1952 points; 6 breaklines enforced as triangle edges, 299 thinned points right beside them left out; triangles along the outside with edges over 10.00 removed; scene ground: 1720 points, 3404 triangles.
The surface scene ground: 1,720 points and 3,404 triangles.

The result is an ordinary surface in the Project browser: contours, volumes, profiles and corridors work on it (see Surfaces).

The plan of the test scene: the cloud's points in orange (ground), green (a tree) and red (a building); the surface's contours; the top-of-slope lines in red, the toe-of-slope lines in cyan and the edges of pavement in yellow running along the road embankment.
The scene in the plan: points by class, the new surface's contours, and the breaklines.

Point clouds on the command line

Each step is also a command. With one cloud in the project, the commands use it; with several, they ask for the cloud's name first. Settings they don't ask for come from the window's tabs.

CommandWhat it asks
CLOUDIMPORT (PCIMPORT)Point cloud file (.las, .laz), then Keep every n-th point (1 = all). The window's import keeps all points.
CLOUDGROUND (PCGROUND, GROUNDFILTER)Ground filter [Cloth/Morphological]. Cloth: Terrain [Steep/Relief/Flat]. Morphological: Widest object to remove, then Height above the ground model still taken as ground (the initial threshold).
CLOUDCLASSIFY (PCCLASSIFY)Nothing: runs the project's rules.
CLOUDBREAKLINES (PCBREAKLINES, PCBL)Find [Slopes/Pavement/Both], then Slopes are steeper than (%) and/or Pavement intensity up to.
CLOUDSURFACE (PCSURFACE)Surface name (the cloud's name and "ground").
CLOUDLIST (PCLIST)Nothing: lists the classes and what was done to the cloud.
CLOUDDISPLAY (PCDISPLAY)Points [Show/Hide].
CLOUDRESET (PCRESET)Nothing: the classes as in the file again.
CLOUDEXPORT (PCEXPORT)LAS file to write; the classes are written as they are now.
CLOUDDELETE (PCDELETE)Nothing: removes the cloud and its breaklines; surfaces made from it stay.
The log after CLOUDLIST: Read 8300 of 8300 points from scene, LAS 1.2; Ground filter (cloth simulation): 7808 of 8300 points (94.1 %) are ground (class 2); Classified by the rules: 492 points changed class; Breaklines: 6 found.
The end of CLOUDLIST: the cloud's history.

How Terrace checks these tools

  • Geoid: heights from Terrace's grid agree with PROJ's EGM2008 within 1 mm at over 400 places across the Philippines, directly and through UTM 51N and PRS92 zones.
  • Site calibration: rigid, Helmert, affine and the vertical plane are checked against an independent least-squares solution (numpy, on Ghilani's observation equations) with noisy test control.
  • Field-to-finish: linework is checked against Terrace's own figure builder and by hand for begin, end, close, arcs and curves.
  • Stakeout files: CSV, RW5 and GSI files are read back with Terrace's own point and raw-data readers.
  • Ground filters: on PDAL's Autzen test cloud (110,000 points), the PMF agrees with an independent implementation on over 99.99 % of points, and the cloth simulation with the CSF library on over 98.5 %. A synthetic scene with known ground, trees, a building, an embankment and a road checks the classes and the tops, toes and pavement edges.

Known limits: EGM2008 is a global model, so tie levels to local benchmarks with a site calibration; Carlson's RD5 road file isn't written; offset stakeout points carry no elevation.