Spud thoughts

Olly Betts olly@survex.com
Sat, 07 Oct 2000 15:57:21 +0100


Sorry about the slow reply - I've been very busy at work recently, but
that's done now.

Philip Underwood writes:
>I would propose a data structure similar to the following(using STL)...
>Note that this is aimed at being able to use survex files with a minimum of 
>fettling.

I think it's premature to think about data structures.  We need to decide
what needs to be represented before we decide how to represent it -
otherwise we risk reinventing the survex 1.0 data structures and then
struggling to bolt on new requirements as we think of them.

So here are survex 1's ideas of what survey data consists of:

* A survey leg is representable as a vector in cartesian coordinates with a
  symmetric covariance matrix.

* Fixed points are representable in cartesian coordinates with no error
  (fixed points with an error are internally represented as an exact fixed
  point and a zero length leg with the error on).  Alternatively the user
  views a fixed point as representable by set of cartesian coordiantes and a
  covariance matrix (which may be zero).

* Every survey station must be a fixed point or connected to a fixed point
  by survey legs.

* Nested survey structure (named *begin/*end blocks).

* Two or more station names can be marked as refering to the same point.

* Each reading has units and also a linear calibration (zero error and
  scaling factor).  Additionally a magnetic declination correction is
  applied to compass readings.

Here are some potential changes and additions for Spud, in no particular
order (some of these could require a very different internal structure):

* Seperate connectivity horizontally and vertically - allowing for altimeter
  readings, manometers, radiolocations with no depth determination, etc.

* Triangulations - compass and clino measurements from a station to two or
  more other stations (no length measurement).  

* Surveys where the vertical angular difference is measured at a survey
  stations instead of an angle from magnetic north.  E.g. a theodolite
  traverse, or a foresight/backsight compass survey near ferous mineral
  deposits.

* Labelled levels of the survey prefix hierarchy - e.g. area, system, cave,
  survey book.

* Attributes (comments, flags, dates, etc) attached to stations, legs,
  surveys, etc.  Note that it's common for an attribute to apply to many
  stations or legs (common example is an instrument calibration).  Perhaps
  also allow totally arbitrary data - e.g. scanned photos, scientific
  measurements, etc.

* Instrument and person naming so you can examine calibrations, etc by who
  did them, or which instrument they were done with.

* Concept of relocatable stations - many survey stations are inherently
  ephemeral and trying to link another survey to one is clearly a mistake
  (or the station wasn't ephemeral in which case its status is wrong).

* Cross sections (either simple measurements horizontally and vetically, or
  a polygon, or even a scanned profile) attachable to legs (possibly part
  way along) or an pair of legs sharing a common station (note: just
  attaching to the station loses the direction).

* Polygonal meshes for terrain or scanned chambers.

Any other possibilities?  It would be interesting to look at what other cave
surveying software does.

Cheers,
Olly