Survex Programs¶
This section describes command-line use of Survex. Our aim is to make all
functionality available without needing to use the command line (though we
aren’t quite there currently - the main thing lacking is more complex use of
extend
). We also aim to give access from the command line to any
functionality which it is useful to be able to use from scripts, so that
users who do like to use the command line can take full advantage of it.
Standard Options¶
All Survex programs support to the following command line options:
--help
display option summary and exit
--version
output version information and exit
Tools which take a processed survey data file to read also provide a way to specify the prefix of a sub-survey to restrict reading to:
-s
,--survey=
SURVEYOnly load the sub-survey SURVEY.
Short and Long Options¶
Options have two forms: short (a dash followed by a single letter e.g. cavern
-q
) and long (two dashes followed by one or more words e.g. cavern
--quiet
). The long form is generally easier to remember, while the short
form is quicker to type. Options are often available in both forms, but more
obscure or potentially dangerous options may only have a long form.
Note
Command line options are case sensitive, so -B
and -b
are different (this didn’t used to be the case before Survex 0.90). Case
sensitivity doubles the number of available short options (and is also the
norm on UNIX-like platforms).
Filenames on the Command Line¶
Filenames with spaces can be processed (provided your operating system supports them - UNIX does, and so do modern versions of Microsoft Windows). You need to enclose the filename in quotes like so:
cavern "Spider Cave"
A file specified on the command line of any of the Survex suite of programs
will be looked for as specified. If it is not found, then the file is looked
for with the appropriate extension appended, so the command above will look
first for Spider Cave
, then for Spider Cave.svx
.
Command Reference¶
aven¶
SYNOPSIS¶
aven
[–survey=SURVEY] [–print] SURVEY_FILE
DESCRIPTION¶
Aven displays processed cave surveys in a window and allows you to manipulate the view.
If SURVEY_FILE
is an unprocessed survey data format which cavern
can process, then aven
will run cavern
on it, and if successful,
display the processed data. If there are any warnings and errors, it will
show a log window with the output with clickable links to open the affected
file at the problematic line.
SURVEY_FILE
can also be processed survey data - a Survex .3d
file, a
Compass .plt
file or a CMAP .sht
file. It can also be a Survex
.pos
file or a CMP .una
or .adj
file, but for these only
stations are shown, not any legs (for .pos
this is because the format
only records station positions). (All Survex programs which read .3d
files can also transparently handle these formats.)
On-Screen Indicators¶
There is an auto-resizing scale bar along the bottom of the screen which varies in length as you zoom in or out. You can left-button drag on this to zoom, and right click gives a menu to select units or hide the scale bar (to get it back go to the Control->Indicators menu from the menu bar).
In the lower right corner is a compass indicator showing which way is North. You can drag this to rotate the view; if while dragging you move the mouse outside the compass the view snaps to 45° positions: N/NE/E/SE/S/SW/W/NW. Right click gives menu to change the view to N/S/E/W, select units, or hide the compass (to get it back go to the Control->Indicators menu from the menu bar).
Just to the left of the compass is clino indicator showing the angle of tilt. You can drag this to tilt the view; if while dragging you move the mouse outside the clino the view snaps to 90° positions: plan/elevation/inverted plan. Right click gives menu to change the view to plan/elevation, select units, or hide the clino (to get it back go to the Control->Indicators menu from the menu bar).
In the upper right is a colour key showing the correspondence between colour and depth (by default - you can also colour by other criteria). Right click gives a menu to choose what to colour by, select units, or hide the colour key (to get it back go to the Control->Indicators menu from the menu bar).
Mouse Control¶
Using the mouse to move the cave will probably feel most natural. We suggest you try each of these out after reading this section to get a feel for how they work.
If you hold down the right button then the view is panned when you move the mouse - it effectively feels like you are dragging the cave around.
If you hold down the left button, then the view is rotated as you move left or
right, and zoomed as you move up and down. If you hold down Ctrl
while
dragging with the left mouse button, then moving up and down instead tilts the
view. Tilt goes 180 degrees from plan view through elevation view to a view
from directly below (upside down plan) - aven deliberately doesn’t allow going
beyond horizontal into an inverted view.
If your mouse has a middle button then holding it down and moving the mouse up and down tilts the cave. Moving the mouse left and right has no effect.
And if you have a scrollwheel, this can be used to zoom in/out.
By default the mouse moves the cave, but if you press Ctrl-R
, then the
mouse will move the viewpoint instead (i.e. everything will go in the opposite
direction). Apparently this feels more natural to some people.
Keyboard Control¶
As with mouse controls, a little experimentation should give a better understanding of how these work.
All keyboard shortcuts have a corresponding menu items which should show the keyboard shortcut - this provides a way within the application to see the keyboard shortcut for a particular action.
Delete
is useful if you get lost! It resets the scale, position, and
rotation speed, so that the cave returns to the centre of the screen. There
are also keyboard controls to use
P
and L
select Plan and eLevation respectively. Changing between plan
to elevation is animated to help you see where you are and how things relate.
This animation is automatically disabled on slow machines to avoid user
frustration. You can force skipping the animation by pressing the key again
during it, so a double press will always take you there quickly.
Space
toggles on and off automatic rotation about a vertical axis through
the current centre point (which is moved by panning the view or by selecting
a station or survey). R
toggles the direction of auto-rotation. The speed
of auto-rotation can be controlled by Z
and X
.
Crosses and/or labels can be displayed at survey stations. Ctrl-X
toggles
crosses and Ctrl-N
station names. Ctrl-L
toggles the display of survey
legs and Ctrl-F
of surface survey legs.
Ctrl-G
toggles display of an auto-sizing grid.
Ctrl-B
toggles display of a bounding box.
O
toggles display of non-overlapping/all names. For a large survey turning
on overlapping names will make update rather slow.
Holding down Shift
accelerates all the following movement keys:
The cursor keys pan the survey view (like dragging with the right mouse button).
Ctrl
plus cursor keys rotate and tilt (like the mouse left button with
Ctrl
held down). C
/V
do the same as Ctrl
plus cursor
left/right, while Apostrophe '
, and Slash /
do the same as Ctrl
plus cursor up/down.
[
and ]
zoom out and in respectively.
OPTIONS¶
-p
,--print
Load the specified file, open the print dialog to allow printing, then exit.
-s
,--survey=
SURVEYOnly load the sub-survey SURVEY.
--help
display short help and exit
--version
output version information and exit
cavern¶
SYNOPSIS¶
cavern
[OPTIONS] SURVEY_DATA_FILE…
DESCRIPTION¶
cavern
is the Survex data processing engine.
cavern
is a command line tool, but if you’re not a fan of working from the
command line you can open unprocessed survey data files with aven
and it
will run cavern
for you, and if successful, display the processed data. If
there are any warnings and errors, aven
will show a log window with the
output with clickable links to open the affected file at the problematic line.
If multiple survey data files are listed on the command line, they are processed in order from left to right. Settings are reset to their defaults before processing each file.
Each SURVEY_DATA_FILE must be unprocessed survey data in a format
which Survex supports, either native format (.svx
) or Compass format
(.mak
, .dat
or .clp
), or Walls format (.wpj
or .srv
).
Support for Compass .clp
was added in Survex 1.4.6; support for
Walls was added in Survex 1.4.9.
OPTIONS¶
-o
,--output=
OUTPUTSets location for output files.
-q
,--quiet
Only show a brief summary (
--quiet --quiet
or-qq
will display warnings and errors only).-s
,--no-auxiliary-files
do not create .err file.
-w
,--warnings-are-errors
turn warnings into errors.
--log
Send screen output to a .log file.
-v
,--3d-version=
3D_VERSIONSpecify the 3d file format version to output. By default the latest version is written, but you can override this to produce a 3d file which can be read by software which doesn’t understand the latest 3d file format version. Note that any information which the specified format version didn’t support will be omitted.
--help
display short help and exit
--version
output version information and exit
OUTPUT¶
If there were no errors during processing, cavern produces two
output files, with the extensions .3d
and .err
(unless
--no-auxiliary-files
is specified in which case only the .3d
file is produced).
These two files are always created with their respective extensions. By default they are created in the current directory, with the same base filename as the first SURVEY_DATA_FILE listed on the command line.
E.g. if you process the data file entrance.svx
with the command
cavern entrance
or cavern entrance.svx
then the files entrance.3d
and entrance.err
will be created.
You can change the directory and/or base filename using the --output
command line option. If you specify a directory then output files will
go there instead of the current directory, but still use the basename
of the first SURVEY_DATA_FILE. If you specify a filename which is not a
directory (note that it doesn’t need to actually exist as a file) then the
directory this file is in is used, and also the basename of the filename
is used instead of the basename of the first SURVEY_DATA_FILE.
Details of the output files:
.3d
This is a binary file format containing the adjusted survey data and associated meta data.
.err
This is a text file which contains statistics about each traverse in the survey which is part of a loop. It includes various statistics for each traverse:
- Original length
This is the measured length of the traverse (for a “normal” or “diving” survey this is the sum of the tape readings after applying calibration corrections).
- Number of legs
The number of survey legs in the traverse
- Moved
How much one end of the traverse moved by relative to the other after loop closure
- Moved per leg
Moved / Number of legs
- Percentage error
(Moved / Original length) as a percentage. This seems to be a popular measure of how good or bad a misclosure is, but it’s a problematic one because a longer traverse will naturally tend to have a lower percentage error so you can’t just compare values between traverses. We recommend using the E, H and V values instead.
- Error (E)
This isn’t labelled in the .err file but is the value on a line by itself. In
aven
it’s the value used by Colour by Error. It is Moved divided by the standard deviation for the traverse based on the standard errors specified for the instruments. This tells us how plausible it is that the misclosure is just due to random errors. It is a number of standard deviations, so the 68-95-99.7 rule applies - e.g. approximately 99.7% of traverses should have a value of 3.0 or less (assuming the specified instrument standard deviations are realistic).- Horizontal Error (H)
This is like E but only considers the horizontal component. In
aven
it’s the value used by Colour by Horizontal Error. You can identify suspect traverses by looking at E and then compare H and V to see what sort of blunder might explain the misclosure. For example, if H is small but V is large it could be a clino reading or plumb with an incorrect sign, or a tape blunder on a plumbed leg; if H is large but V is small it could be a compass blunder, or a tape blunder of a nearly-flat leg.- Vertical Error (V)
This is like E but only considers the vertical component. In
aven
it’s the value used by Colour by Vertical Error.
This information is now also present in the
.3d
file so you can view the survey coloured by these errors, but the.err
file can still be useful as you can sort it usingsorterr
to get a ranked list of the sections of survey with the worst misclosure errors.
Cavern also reports a range of statistics at the end of a successful run:
The highest and lowest stations and the height difference between them
The East-West and North-South ranges, and the Northernmost, Southernmost, Easternmost, and Westernmost stations.
The total length of the survey (before and after adjustment). This total excludes survey legs flagged as
SURFACE
,DUPLICATE
, orSPLAY
.The number of stations and legs. Note that a
*equate
is counted as a leg in this statistic.The number of each size of node in the network (where size is number of connections to a station) i.e. a one node is the end of a dead-end traverse, a two-node is a typical station in the middle of a traverse, a three-node is a T-junction etc.
How long the processing took and how much CPU time was used.
If you successfully processed your data by loading it into aven
then you
can see this log output by using File->Show Log
(also available as an icon
in the toolbar).
Error Messages¶
There are many different error messages that you can get when processing data. Along with the error message, a location is reported. For an error like “file not found” this only reports the filename, but usually it will give the filename and line number of the offending line, and in many cases also an offset or span within the line.
The format of the location data follows that used by the GCC compiler so if your text editor can parse errors from GCC then you should be able to set it to allow you to jump to the file and line of each error.
One common cause of errors and warnings are typing mistakes. Another is your survey data not being all attached to fixed points (which is a warning since Survex 1.4.10, but was an error prior to this; in this situation, Survex will list at least one station in each piece of survey data which is not connected).
We try to make error and warning messages self-explanatory, but welcome feedback on cases where you get a message which seems unclear.
Generally you want to look at the first reported error first as there can be a cascade effect where one error triggers another. Cavern will stop after more than 50 errors. This usually indicates something like the incorrect data order being specified and deluging the user with error messages in such cases usually makes the actual problem less clear.
diffpos¶
SYNOPSIS¶
diffpos
FILE1 FILE2 [THRESHOLD]
DESCRIPTION¶
Diffpos reports stations which are in one file but not the other, and also stations which have moved by more than a specified threshold distance in X, Y, or Z. THRESHOLD is a distance in metres and defaults to 0.01m if not specified.
Note that the input files can be any format the “img” library can read (and
can be different formats), so it works with Survex .3d
and .pos
files,
Compass .plt
and .plf
files, CMAP .sht
, .adj
and .una
files.
OPTIONS¶
--help
display short help and exit
--version
output version information and exit
dump3d¶
SYNOPSIS¶
dump3d
[–survey=SURVEY] [–rewind] [–show-dates] [–legs] INPUT_FILE
DESCRIPTION¶
Dump out the entries in a processed survey data file - useful for debugging, and also provides a textual format which is fairly easy to parse if you want to write a simple script to pull out information from such files.
Don’t be mislead by the “3d” in this tool’s name - it can be used to dump a
file in any format the “img” library can read, so it works with Survex .3d
and .pos
files, Compass .plt
and .plf
files, CMAP .sht
,
.adj
and .una
files.
If you’re parsing the output in a script, you may want to use option -legs
so you get a LEG
item for each leg with from and to coordinates instead of
each traverse being a MOVE
item followed by a series of LINE
items.
The --show-dates
option uses .
as the separator between date components
by default (e.g. 2024.12.01
), but (since Survex 1.4.13) you can specify a
different separator. If this separator is .
then -
is used between two
dates which form a range, otherwise a space is used. For convenience, -D
is provided as a short-cut for --show-dates=-
which outputs dates in the
ISO date format.
(The --rewind
option is only provided to allow debugging and testing the
img_rewind()
function.)
OPTIONS¶
-s
,--survey=
SURVEYonly load the sub-survey with this prefix
-r
,--rewind
rewind file and read it a second time
-d
,--show-dates[=SEPARATOR]
show survey date information (if present)
-D
equivalent to –show-dates=-
-l
,--legs
convert MOVE and LINE into LEG
--help
display short help and exit
--version
output version information and exit
extend¶
SYNOPSIS¶
extend
[–survey=SURVEY] [–specfile=ESPEC_FILE] [–show-breaks] INPUT_FILE [OUTPUT_3D_FILE]
DESCRIPTION¶
INPUT_FILE
can be a Survex .3d
file, a Compass .plt
file or a
CMAP .sht
file (all Survex programs which read .3d
files can also
transparently handle these formats).
If no --specfile
option (or short option -p
) is given, extend starts
with the highest station marked as an entrance which has at least one
underground survey leg attached to it. If there are no such stations, the
highest deadend station in the survey (or the highest station if there are no
deadends) is used. Extend puts the first station on the left, then folds each
leg out individually to the right, breaking loops arbitrarily (usually at
junctions).
If the output filename is not specified, extend bases the output filename on
the input filename, but replacing the extension with _extend.3d
. For
example, extend deep_pit.3d
produces an extended elevation called
deep_pit_extend.3d
.
The --survey=
SURVEY option (short option -s
) restricts processing to
the survey SURVEY including any sub-surveys.
If you pass --show-breaks
(short option -b
) then a leg flagged as
“surface survey” will be added between each point at which a loop has been
broken - this can be very useful for visualising the result in aven.
This approach suffices for simple caves or sections of cave, but for more complicated situations human intervention is required. More complex sections of cave can be handled with a specfile giving directions to switch the direction of extension between left and right, to explicitly specify the start station, or to break the extension at particular stations or legs.
The specfile is in a format similar to cavern’s data format:
; This is a comment
; start the elevation at station entrance.a
*start entrance.a ;this is a comment after a command
; start extending leftwards from station half-way-down.5
*eleft half-way-down.5
; change direction of extension at further-down.8
*eswap further-down.8
; extend right from further-down.junction, but only for
; the leg joining it to very-deep.1, other legs continuing
; as before
*eright further-down.junction very-deep.1
; break the survey at station side-loop.4
*break side-loop.4
; break survey at station side-loop.junction but only
; for leg going to complex-loop.2
*break side-loop.junction complex-loop.2
This approach requires some trial and error, but gives useful results for many caves. The most complex systems would benefit from an interactive interface to select and view the breaks and switches of direction.
sorterr¶
SYNOPSIS¶
sorterr
[OPTIONS] ERR_FILE [HOW_MANY]
DESCRIPTION¶
sorterr
re-sorts a .err file by the specified criterion (or by the error ratio
by default). Output is sent to stdout, or if --replace
(short option
-r
) is specified the input file is replaced with the sorted version. By
default all entries in the file are included - if a second parameter is given
then only the top HOW_MANY
entries after sorting are returned.
OPTIONS¶
-h
,--horizontal
sort by horizontal error factor
-v
,--vertical
sort by vertical error factor
-p
,--percentage
sort by percentage error
-l
,--per-leg
sort by error per leg
-r
,--replace
replace .err file with re-sorted version
--help
display short help and exit
--version
output version information and exit
survexport¶
SYNOPSIS¶
survexport
[OPTIONS] INPUT_FILE [OUTPUT_FILE]
DESCRIPTION¶
The input formats supports are all those supported by Survex’s “img” library - Survex .3d, Survex .pos, Compass PLT and CMAP XYZ files.
Currently the output formats supported are CSV, DXF, EPS (Encapsulated PostScript), GPX, HPGL for plotters, JSON, KML, Survex POS files, and SVG.
Also survexport can produce Compass .plt files, which were primarily intended for importing into Carto; the principal author of Carto has sadly died and it seems Carto is no longer actively developed, but we’ve left this support in place in case it is useful - the generated files can be used with Compass itself for example, though they are rather crudely structured.
POS Format¶
The POS format is a Survex-specific format containing a list of stations with
coordinates (ordered x,y,z [East, North, Up]) and complete names. In old
versions of Survex it was produced by the (now removed) 3dtopos
tool.
Since Survex 1.2.19 it can be generated by survexport
or by aven
’s
export feature.
The header line is translated to the user’s language, but always starts with
(
and ends with )
.
While not a requirement of the format, in .pos
files created by Survex
the stations are sorted by name such that numbers occur in the correct order
(so 2
before 10
). Numbers with a prefix and/or suffix are sorted by
the prefix as a string, then the number part as above, then by the suffix as
a string, so you’d get:
040.sv8
040.sv8a
040.sv8b
040.sv8c
040.sv9
040.sv10
040.sv11
40_entrance_tag
40b_entrance_tag
DXF Format¶
DXF export separates Splays, Surface legs, Surface points, survey legs, and survey stations onto separate layers. Splays will export dotted, and surface legs dashed. This is not currently configurable.
OPTIONS¶
-s
,--survey=
SURVEYonly load the sub-survey with this prefix
--scale=
SCALEscale (
50
,0.02
,1:50
and2:100
all mean 1:50)--bearing=
BEARINGbearing (
90
,90d
,100g
all mean 90°)--tilt=
TILTtilt (
45
,45d
,50g
,100%
all mean 45°)--plan
plan view (equivalent to
--tilt=-90
)--elevation
elevation view (equivalent to
--tilt=0
)--legs
underground survey legs
--surface-legs
surface survey legs
--splays
splay legs
--crosses
station markers
--station-names
station labels
--entrances
entrances
--fixes
fixed points
--exports
exported stations
--cross-sections
cross-sections
--walls
walls
--passages
passages
--origin-in-centre
origin in centre
--full-coordinates
full coordinates
--clamp-to-ground
clamp to ground
--defaults
include items exported by default
-g
,--grid
,--grid=
GRIDgenerate grid with spacing
GRID
metres (default100
)-t
,--text-height=
TEXT_HEIGHTstation labels text height (default
0.6
)-m
,--marker-size=
MARKER_SIZEstation marker size (default
0.8
)--csv
produce CSV output
--dxf
produce DXF output
--eps
produce EPS output
--gpx
produce GPX output
--hpgl
produce HPGL output
--json
produce JSON output
--kml
produce KML output
--plt
produce Compass PLT output for Carto
--pos
produce Survex POS output
--svg
produce SVG output
--help
display short help and exit
--version
output version information and exit