Attribute Table
Note
Coming in Spatial Integration version 3.
The channel calculator, channel filters, line levelling and splitting lines into transects require the Professional edition, as does gridding. In the Community edition their menu items are disabled; channels and lines they produced with the Professional edition can still be viewed and edited.
The Attribute Table shows the values held in a LineDB survey and lets you correct and process them. To load or import a survey, see LineDB.
Open the table by double clicking a LineDB layer, or by right clicking the layer and choosing Attribute Table.... Each layer is one survey with its own table, and several tables can be open at once.
The toolbars
The toolbar at the top of the window holds Save, Save As..., Revert, Undo and Redo, a count of unsaved changes, and at the right the Process this survey menu:
| Menu item | Opens |
|---|---|
| Create grid... | Gridding for a channel of this survey (Professional edition) |
| Channel > Calculate... | The Channel Calculator, to create or recalculate a channel from an expression (Professional edition) |
| Channel > Filters... | Channel filters (Professional edition) |
| Channel > Level lines... | Levelling (Professional edition) |
| Channel > Sort... | Sorting |
| Projection > Transform coordinates... | Coordinate transformation |
| Line > Split on line channel... | Splitting by a channel |
| Line > Split into transects... | Splitting into transects (Professional edition) |
The toolbar above the values holds Columns, Sort, Coordinate Frame, Channel Calculator and Profiles. Hover over a button to see what it does.
Choosing a line
The survey's lines are listed down the left. Click a line name to show its values in the table.
While the layer is visible, the line the table is showing is highlighted in the scene in cyan, drawn over everything else. Close the table or hide the layer to remove the highlight.
Select several lines by holding Ctrl and clicking to add one at a time, or Shift to take a whole run. You can also drag a box down the list. Selecting lines does not change which line the table is showing.
Active lines
The checkbox beside each line name says whether the line is active. An inactive line stays in the file, complete; it is set aside, not deleted. It is not drawn, not counted, and not included when an attribute's range is measured for a colour ramp.
Clicking the checkbox of a line that is part of a selection changes every line in the selection.
The Select menu above the list makes every line active (All) or inactive (None), or swaps every line's state (Invert). Each is a single step to undo.
By direction... on the same menu selects lines by the way they run. A line's direction is its compass bearing, clockwise from north, from its first located fiducial to its last.
- Enter a Minimum bearing and Maximum bearing in degrees. A minimum above the maximum is a range that crosses north, such as 350 to 10.
- Choose whether the lines in the range are selected and the rest deselected, or the other way round. The selection is replaced either way.
- Tick Include the opposite direction to also take lines running 180 degrees the other way: 80 to 100 then takes lines flown both east and west.
Lines with no direction (empty lines, point sets, lines with no located fiducials) are outside every range. The result is a selection, so ticking the checkbox of one selected line then switches the whole set on or off.
The Group menu keeps a set of active lines for later. Save... writes the active state of every line to a .ldb_active file, by default beside the LineDB file. Load... reads one back as a single step to undo. Lines are matched by name, so a file also works with another copy of the survey: names the survey does not have are ignored, and lines the file does not name are left as they are.
Changes to active lines show in the scene straight away, but like every other change in the table they are not written to the file until you save.
Note
Edited values work the other way round: the table shows them immediately, but the scene keeps drawing what the file holds until you save.
Deleting lines
Right click a line to open its menu. The menu acts on every selected line; right clicking a line that is not selected makes it the selection.
- Activate and Deactivate tick or untick the selected lines, as a single step to undo.
- Delete... removes the selected lines, and every value they hold, from the survey, after you confirm.
A deletion is written to the LineDB file straight away, after any unsaved changes are saved. Undo (Ctrl+Z in the scene) puts the lines back, with every value they held, at the end of the list. Lines too large to keep in memory are deleted without undo, and the message log says so.
Editing values
Click a cell to highlight it. Start typing, press Enter or F2, or double click to edit it.
| Key | Effect |
|---|---|
Enter |
Accept the value and move down |
Tab |
Accept and move right; Shift+Tab moves left |
Esc |
Abandon what you have typed |
Delete |
Clear the cell, which sets it to no-data |
A cleared cell has no value at all, which is not the same as zero. A cell that shows null holds no reading.
Some cells cannot be edited:
- The Line column is the line's name, not a value stored at each fiducial.
- A cell shown as
—is past the point where that attribute ends on this line. Not every attribute runs the full length of every line.
Two edits are refused:
- Text longer than the attribute's stored width. Text is stored at a fixed width per attribute.
- Clearing a whole-number attribute that has no no-data value. Such an attribute cannot record "no reading", and storing a zero would invent a measurement.
Edited cells stay highlighted, so you can find your changes again.
Array attributes
An attribute that holds several values per fiducial, such as an EM decay or a spectrum, is shown as a small line graph in each cell. The values are spread evenly across the cell, and each cell is scaled to its own lowest and highest value, so the graph shows the shape of that fiducial's readings rather than their size. Hover over a cell to read the value nearest the pointer and the cell's range.
A cell with no readings shows null. Array cells cannot be edited and the attribute cannot be sorted by, but the column can be hidden, moved, deleted and given new properties like any other.
The attribute's properties also choose which part of the array the graph shows: the First element, counted from 0, and the number of Elements shown. Use them to leave out early gates that swamp the rest, or to look at one part of a spectrum. This setting is stored in the LineDB file with the name and units, so every project that opens the survey shows the same graph.
Profiles
The Profiles button opens the Profiles window, which graphs channels of the line the table is showing. Dragging across a profile marks a span of fiducials, and the same rows are shaded in the table. You can also mark a span in the table by dragging down the # column, or by clicking a cell and holding Shift while clicking another. Esc clears it.
Choosing columns
All attributes are shown when you first open a survey.
Right click a column header to hide that attribute, or to insert a hidden one at that position. The Columns button opens the full list, where you can show and hide attributes and move them left or right.
To act on several attributes at once, select their headers first: click a header to select it, Ctrl+click to add or remove one, and Shift+click to select every header between the last one clicked and this one. Clicking the only selected header again clears the selection. Right clicking a selected header then hides or deletes all of them together.
The column layout is saved with the project. It is a display preference and does not change the LineDB file.
Attribute properties
Double click a column header, or right click it and choose Properties..., to change the attribute itself:
| Property | What it changes |
|---|---|
| Name | What the attribute is called. It must be unique within the survey. |
| Units | The units the values are measured in. |
| Decimals | How many decimals the table shows. Values are always stored at full precision. Not available for whole-number or text attributes. |
| Width | The column width, in characters. |
Unlike the column layout, these are stored in the LineDB file, so every program that reads it sees them. They are held with your other unsaved changes: the table shows them straight away, Undo takes them back, and they reach the file when you press Save. When a renamed attribute is saved, the table layout and any symbology or label using it follow the new name.
Deleting an attribute
Right click a column header and choose Delete... to remove that attribute, and its values on every line, from the survey, after you confirm. Select several headers first to delete them together.
Unlike hiding a column, this changes the LineDB file, and it is written straight away. Unsaved changes are saved first, so an edit still waiting in the table is not lost. Undo (Ctrl+Z in the scene) puts the attribute back with every value it held. An attribute too large to keep in memory is deleted without undo, and the message log says so.
An attribute the current coordinate frame reads positions from cannot be deleted; change the frame first. If the survey stores other, unused frames that read from a deleted attribute, those frames are removed with it. The confirmation lists them, and undo puts them back too.
Sorting lines
Sort reorders the fiducials of lines by up to three attributes. The first attribute decides the order and each later one only breaks ties left by the one before. Each can run ascending or descending. Right clicking a column header and choosing Sort by this attribute... opens the same dialog with that attribute chosen first.
Choose which lines to sort:
| Choice | Lines sorted |
|---|---|
| The line shown | Only the line the table is showing. |
| Active lines | The lines ticked in the list, including changes not yet saved. |
| All lines | Every line of the survey, inactive ones included. |
The same choice appears in the filter, split and Save As dialogs.
Each line is sorted on its own, and every attribute of a fiducial moves with it. Missing values always sort last. Fiducials the attributes cannot tell apart keep their original order. A line whose attributes hold different numbers of fiducials is left unsorted and named in the message log.
Warning
A sort is written to the LineDB file straight away and cannot be undone. Unsaved changes are saved first.
Filtering a channel
Note
Requires the Professional edition.
Choose Channel > Filters... on the Process this survey menu, or right click a channel's column header and choose Filter.... Each line is filtered on its own, in the order it was recorded. The result goes to a new channel or over an existing one; writing over a channel asks first, and undo puts it back.
No-data values stay no-data: the filters neither read through them nor invent readings where there were none.
| Filter | What it does |
|---|---|
| Despike (non-linear) | Finds spikes and replaces them, leaving everything else exactly as it was. |
| Range (reject out of range) | Sets to no-data, or clamps, every sample outside a minimum and maximum. |
| Rolling median | Each sample becomes the median of the window around it. |
| Rolling mean | Each sample becomes the mean of the window around it. |
| Low pass (Gaussian) | Smooths away features shorter than the cutoff wavelength, in fiducials along the line. |
| High pass (Gaussian) | Keeps only features shorter than the cutoff wavelength. |
The line shown in the table is previewed as you change the settings: the input in grey, the result in blue, and every sample the filter would change in red. Show a line with a known problem and adjust the settings until only the problem is marked.
Despike
The despike filter does the job of a non-linear filter. A spike is a deviation that is both narrow, no wider than Max spike width, and large compared with the local noise.
- Spikes are looked for in a difference of the data, which cancels smooth signal, so a real anomaly survives however sharp its crest. The 4th difference rejects smooth signal most strongly. Amplitude is a plain outlier test on the values: it also catches spikes at the very ends of a line, but flags sharp real anomalies too.
- Threshold is how far outside the local noise a sample must be, in standard deviations. Lower removes more.
- Tolerance is a floor, in the channel's units, below which nothing is a spike. Leave it at 0 for purely statistical detection, or set it to the data's resolution if flat or stepped data is over-flagged.
- A spike is replaced by no-data, by a straight line across the gap, by the median of the surrounding good samples, or by a cubic fitted through them.
Dropouts
Despiking only finds narrow features, so it leaves an instrument dropout (a run of fiducials where a magnetometer read 0, say) as data. Remove dropouts first with the range filter: it rejects every sample below the Minimum, above the Maximum, or both, however long the run. A rejected sample becomes no-data or is clamped to the limit it crossed. Grow also rejects that many fiducials each side of a rejected run, to catch the ramp in and out of a dropout. Then despike the result.
Tip
Filter into a new channel: the original stays untouched beside the result, and the table and profiles can show both. The suggested name adds the filter to the input's name, such as mag_ds for a despiked mag.
Levelling lines
Note
Requires the Professional edition.
Choose Channel > Level lines... on the Process this survey menu, or right click a channel's column header and choose Level lines.... Levelling removes a constant shift from each line of a channel.
Lines surveyed one after another rarely sit at quite the same level: a heading error, a change of sensor height or of instrument leaves each line a little high or low, and a grid of the channel shows stripes along the lines. Levelling finds the shift that brings each line back to the level of the survey.
No tie lines are needed. Each line is compared with its neighbours on either side along their common length. Geology changes along a line and averages out, while a level error is the same all the way along, so the neighbouring lines play the part tie lines would. Neighbours are found by where the lines lie, not by their order, so lines that bend, converge or are unevenly spaced are handled the same way. A smooth regional trend across the lines is recognised and left in the data.
| Setting | What it does |
|---|---|
| Direction tolerance | Lines further than this from the survey's main direction are treated as tie or cross lines. They are copied unchanged, with a shift of 0, and are not used as neighbours. |
| Spacing | The nominal distance between lines. Automatic measures it from the data. |
| Min overlap | Two lines must share at least this many samples to be compared. |
| Max block width | The widest run of adjacent lines, in lines, that may share one level error. A run up to this wide is removed whatever its edges look like. A wider run is removed only where its edges are sharp steps (a change of instrument or of day); otherwise it is treated as regional and kept. Smaller keeps more regional detail; larger removes broader, softer blocks. |
| Search radius | Advanced: how far a neighbouring line's sample may be from the expected position, as a fraction of the spacing. |
| Decimation | Advanced: only every n-th sample of a line is compared; 0 chooses the step from the spacing. |
| Smooth along | Advanced: low pass each line with this cutoff wavelength, in line spacings, before comparing it with its neighbours. A level shift passes through untouched; spikes and sharp anomalies do not. The default, 0, is no smoothing. |
Preview runs the levelling without writing anything and charts the result: a bar per line, in cross-line order, for the shift that would be removed, the solved offset as points, and the regional kept as a line. Hover over a bar for the line's name. Lines left out, and why, are listed beneath. OK or Apply then writes the previewed values straight away.
Read the chart before writing. Level errors look like single lines off their neighbours, an alternation from line to line, or a run of lines stepping up at one edge and down at the other. A smooth hump or hollow spanning several lines is more likely geology running along the lines; if the shifts follow it, lower Max block width until they do not. A survey already levelled by its contractor should preview small, scattered shifts and little else.
The levelled values go to a new channel named after the input with _lev added, and the shift for each line to another with _shift added. Writing over existing channels asks first, and undo puts both back in one step.
Tip
Despike and remove dropouts first, so spikes do not throw the comparison between lines. Grid the shift channel to see what was removed: it should look like stripes with no geology in it, and the grid of the levelled channel should show no stripes.
Note
The survey needs a projected coordinate frame, so distances between lines are in metres. The outer two or three lines on each edge of the survey are levelled less reliably. A survey flown in two directions in equal measure has no main direction; level each set separately by choosing its lines.
Splitting lines by a channel
Choose Line > Split on line channel... on the Process this survey menu to break lines into the lines named by one of their channels. This is how scattered data imported as a single point set becomes proper lines: each fiducial moves to the line its Line channel value names. A channel called Line is chosen for you when there is one.
| Source line | New lines are named |
|---|---|
| A point set | Value, e.g. 1020 |
| A line | Original.Value, e.g. L10.1020 |
Fiducials with no value in the channel go to a line named after the source line (Original.none for a line), so no data is lost. A line whose channel holds the same value throughout is left as it is. If a name is already taken, _2, _3 and so on is added, and the message log says so.
A value may return after another, as in A A B B A. Choose what happens:
| Choice | A A B B A gives |
|---|---|
| Append to the same line | A (3 fiducials), B |
| Create a new line for each run | A.1, B, A.2 |
Choose which lines to split as for sorting; when the survey has only one line, all lines is chosen for you. The new lines keep the source's line type and active state, and every attribute of a fiducial moves with it. A line whose attributes hold different numbers of fiducials is left unsplit and named in the message log.
Warning
A split is written to the LineDB file straight away and cannot be undone. Unsaved changes are saved first.
Splitting lines into transects
Note
Requires the Professional edition.
A surveyor sometimes records several traverses under one line name: running a transect, turning, and coming back along the next one without stopping the recording. Choose Line > Split into transects... on the Process this survey menu to cut each such line into one line per transect, with the data recorded while turning kept as joins between them.
Transects are found from the positions in the current coordinate frame:
| Setting | What it does |
|---|---|
| Turn window | The distance the heading is measured over, either side of a point. Make it longer than the wander within a transect, and no longer than the turn at its end. |
| Turn angle | A point is turning when the heading behind it and ahead of it differ by more than this. A transect that changes direction by less stays one transect. |
| Minimum length | A straight run shorter than this is part of a join, not a transect. |
| Gap | A step longer than this between fiducials is a break in the recording. Nothing joins across it. |
The settings are suggested from the line shown in the table when the dialog opens, and Suggest from shown line suggests them again. A walked grid turns in a few tens of metres and a flown survey in a kilometre, so settings that suit one are wrong for the other. The preview draws the shown line as it would be cut, transects in colour and joins thick and grey; adjust the settings until it looks right before splitting.
Transects are numbered from First transect in steps of Transect step, across every line split in the order the table lists them. Joins are numbered from First join in steps of Join step; it starts at 100000 to keep them apart from the transects. A transect keeps the source line's type and active state. A join gets the Join line type and is inactive, so it is not drawn or gridded until you tick it. Data recorded before the first transect or after the last is a join too, so no data is lost. If a number is already taken by a line outside the split, _2, _3 and so on is added, and the message log says so.
Choose which lines to split as for sorting. Every line chosen is renumbered, including one that turns out to be a single transect. A line with no transect in it is left as it is and named in the message log, as is a line whose attributes hold different numbers of fiducials.
Warning
A split is written to the LineDB file straight away and cannot be undone. Unsaved changes are saved first.
Coordinate frame
A survey's points are positioned by a coordinate frame: the X, Y and Z attributes the positions are read from, and the CRS those numbers are in. The columns of the current frame are tinted and marked X, Y and Z in the table header.
The Coordinate Frame button opens a window to change the frame:
| Setting | Meaning |
|---|---|
| Frame | The frames the survey already has. Choosing one fills in its attributes and CRS. |
| X, Y | The attributes holding the horizontal position. They must be different. |
| Z | The attribute holding the height, or none. With no Z every point is placed at the height set when the survey was loaded. |
| CRS | What the X and Y numbers are expressed in. |
A frame is identified by its X and Y attributes: choosing the pair of an existing frame selects that frame, and a new pair creates a new frame. The window says what Apply will change before you press it. Afterwards the survey is redrawn in the new frame.
Warning
A frame change is written to the LineDB file straight away and cannot be undone. Unsaved changes in the table are kept and still need saving.
Note
Changing the CRS only states what the numbers already mean; it never converts them. If a survey stores both projected and geographic coordinates, choose the frame over the other pair of attributes to use them. To convert the numbers themselves, transform the coordinates.
Transforming coordinates
Choose Projection > Transform coordinates... on the Process this survey menu to convert the coordinates of every line from one CRS to another, for example from WGS 84 longitude and latitude to a UTM zone.
| Setting | Meaning |
|---|---|
| From X, Y | The attributes holding the position to convert. They start as the current frame's. |
| From Z | A height to convert with the position, or none. With a height the transform is 3D, so ellipsoidal and vertical heights are converted where possible. |
| From CRS | The CRS of the attributes read. It starts as the survey's CRS. |
| To | Create new channels, named for you from the attributes read and the code of the new CRS, or Update existing channels to write over attributes the survey has. |
| To CRS | The CRS to convert into. |
| Make these the survey's coordinate frame | Position the survey from the attributes written, in the new CRS. The survey stays where it was drawn; only the numbers it is stored in change. |
The preview shows the first position of the line shown in the table before and after conversion, so you can check the CRSs. Use the current frame sets the attributes and CRS read back to the survey's own.
Writing over attributes asks first. If an attribute written over is one the current frame reads, the frame moves to the new CRS with it, since it would otherwise state the wrong CRS. A position that cannot be converted is written as no-data, and the message log says how many there were.
Note
The conversion is written to the LineDB file straight away, and unsaved changes are saved first. Undo (Ctrl+Z in the scene) puts the attributes and the coordinate frame back as they were.
Undoing
Undo (Ctrl+Z) takes back the last change made in the table, and Redo (Ctrl+Y or Ctrl+Shift+Z) puts it back. Hover over the buttons to see what they will undo or redo. One action is one step: switching fifty selected lines off with a single click is one undo.
This history belongs to the table and lasts for the session. It is separate from SI's main undo, so while the table has the keyboard focus, Ctrl+Z undoes table edits only. Changes that are written to the file straight away (deleting lines or attributes, filtering, levelling and transforming coordinates) are on SI's main undo instead.
Note
Saving or reverting ends the table's history. Once values are in the file, or thrown away, edit the cell again instead.
Saving
Nothing you edit in the table is written to the LineDB file until you press Save. The button is greyed out when there is nothing to save, and the toolbar shows how many changes are unsaved.
Revert throws every unsaved change away, values and active lines alike, and returns the survey to what the file holds.
Save As... writes the survey, with its unsaved changes, to a new LineDB file. Choose whether to write the line shown, the active lines or all lines. You carry on working in the new file, and the original is left as it was.
Unsaved changes belong to the layer, not the window, so closing the table does not lose them: the layer stays marked as changed, and reopening the table shows every edit still highlighted. If you close the project with unsaved changes, you are asked whether to save them.
A save is all or nothing. If anything prevents it, such as a read-only file, nothing is written, your changes are kept, and the reason is given in the message log.