The List of Elements: What do cave surveyors need?
    This Preliminary Analysis discussion examines existing, proprietry data representation schemes and uses similarities in those schemes to derive initial requirements for representing cave survey data in XML. The discussion extrapolates from those requirements to establish a proposed list of XML tags for the purpose of marking up cave survey data. This " data element proposal " was presented to the cave survey software development community on December 18, 2000 for comment.

What's in a Cave Survey? Only what you need.

The simplest way to answer that is to look at what has been done historically. If you care to do your own homework, you can browse this collection of survey data file formats.

.SRV - sample survey data from David MacKenzie's Walls
.DAT - sample survey data from Larry Fish's Compass
.SUR - sample survey data from Garry Petrie's Winkarst
.SVX - Olly Betts' complete Survex data description from the Survex documentation
.CDI - sample data in CDI format from Taco van Ieperen's OnStation ( generated by Paul De Bie's Survey Converter )

If you want to cut to the chase, below you'll find a matrix list (generalized, in no particular order, and probably not all inclusive) that incorporates most of the attributes that appear in the survey data formats linked above. Some attributes are common to all of the formats while others are unique to one or two.

The matrix is a useful tool that helps discover preliminary requirements for the XML-based solution. I.e. the generalized data elements listed below are "needed" by the cave surveying community and should therefore be addressed by the XML data file. Combined with other requirements, derived from discussion or other sources, this lays out a clearer development path for cave survey data in XML.

By comparing multiple data formats, side by side in the matrix below, it becomes readily evident which types of data are most critical to cave surveyors. Said another way, the more often a data element appears in the matrix, the more important that data will be in an XML representation of cave survey data. An XML implementation that hopes to meet the needs of the international cave surveying community should leverage the assessment inferred by the matrix below. (The author recognizes the fact that this analysis is incomplete and lacks inputs from such cave surveying communities as might exist in France, Germany, or other countries of the world.)

It is not necessary to immediately meet all the "needs" identified below but an evolving XML representation of survey data should consider facilitating as many of the elements listed as necessary. The value of "necessary" in this context is yet to be derived. But it's a safe bet that the more often an element appears, the more important it will be to the XML format. Less frequently appearing data types may be addressed in later revisions of the XML standard.

Whenever possible the original "tag" was replicated from the example data file and placed in its respective column. Otherwise, an X is used to denote that the type of data indicated may occur within the respective survey data file. To move the matrix to its next logical step a seventh column has been added to contain "suggestions" for the element name as it may ulimately appear in the XML file format. Feed back on elements is highly encouraged and appropriate. XML can be very accomodating of different points of view, even across languages.

Comparative analysis of data elements common to some of the most actively developed cave survey programs in use today:
Generalized Data Description Compass OnStation Survex Walls WinKarst Proposed
XML
Element
Cave Name X   In Comments X X <CaveName>
Survey Name or Label SURVEY NAME: Surveyname= from/to default: alphanumeric plus `_' X #SURVEY NAME: <SurveyName>
Survey Date SURVEY DATE: SurveyDate= Date: X #SURVEY DATE: <SurveyDate>
Survey Comment COMMENT: SurveyDescription= X X #SURVEY COMMENT <SurveyComment>
Survey Team SURVEY TEAM: Person1= Surveyors: X #SURVEY TEAM: <SurveyTeam>
Magnetic Declination DECLINATION: Declination= *calibrate declination   #DECLINATION: <Declination>
Compass Corrections CORRECTIONS: FrontCompassCorrection=
BackCompassCorrection=
*calibrate compass     <Correction>     <Compass>
Clinometer Corrections CORRECTIONS: FrontClinoCorrection=
BackClinoCorrection=
*calibrate clino         <Clinometer>
Tape Corrections CORRECTIONS: TapeCorrection= *calibrate tape         <Tape> </Correction>
Map Datum (e.g. WGS84)         #DATUM <Datum>
Measurement Standard (e.g. English vs. Metric)   LengthUnits= (m) #U Meters #METRIC
#ENGLISH
FT
<Units>
Geographic Location X   *fix   #CAVE LOCATION <GeoLocation>
Station Labels FROM, TO
Alphanumeric
Shot= From, To
Numeric
Alphanumeric STATION
FROM, TO
Alphanumeric
<Shot>
   <From> </From>
   <To> </To>
</Shot>
Station Comment COMMENTS ShotComment= X X COMMENT <ShotComment>
Range Between Consecutive Stations LENGTH T length
Dist
D LENGTH
FT
<Length>
Forward Azimuth BEARING A bearing X AZIMUTH
DEG
<ForwardAzimuth>
Reverse Azimuth AZM2 X       <ReverseAzimuth>
Forward Inclination INC I gradient X VERTICAL
DEG
<ForwardInclination>
Reverse Inclination INC2 X       <ReverseInclination>
Ceiling Distance UP U X   UP
FT
<Up>
Floor Distance X D X   DOWN
FT
<Down>
Right Wall Distance X R X   RIGHT
FT
<Right>
Left Wall Distance X L X   LEFT
FT
<Left>
Survey Length       X    
Survey Depth       X    
From Depth     fromdepth     <FromDepth>
To Depth     align="center"     <ToDepth>
Proprietary Data. Processing Instructions. Reserved Words
(e.g. flags, data entry order, survey seperators, etc.)
FORMAT:
DDDDUDLRLADN
LPX
FileVersion=
Program=
Begin=
Foldername=
Dataorder=
FrontCompass=
BackCompass=
FrontCompassStandardError= BackCompassStandardError= FrontClino=
BackClino=
FrontClinoStandardError=
BackClinoStandardError=
Tape=
TapeStandardError=
DepthGauge=
DepthCorrection=
DepthStandardError=
Duty1=
NAN
End=
ProprietaryStart=
Scheme1=
ProprietaryEnd=
*begin
*end
*equate
*calibrate
*fix
UP, DOWN
Order=VDA P
#CONTROL POINT
#ALIASES
#PROPERTY
#FILE DATE
#FILE AUTHOR
#INCLUDE
other useful data elements

<DataFileVersion>