The project started off in 1999 to write a program to produce assist cavers in drawing
beautiful cave maps. Not
something which produces 3D and allows virtual reality flights, but one that is
more like a drawing package with features where the wall outlines could
automatically update when the survey data is corrected for closures, implement
a fine level of wall shape using fractals, add shading or texturing to the
surrounds of walls and many wonderful things. Wouldn't you like a package which
has styles where you can have a modern looking map using your own countries
mapping standards yet change it easily to print out one using US based cave
symbols or BCRA ones? What about one in the style of an early 20th century
European map but using the latest symbols?
Alas I become side-tracked as I realised that what I would eventually need for
such a project was a powerfull and extensible data format.
Writing the data as an XML document appeared to be one way to go and
CaveScript XML was created.
Cave Mapping using LaTeX
A preliminary "proof-of-concept" program was written in late 1999
to test out some
algorithms on automatic wall adjustments for my cave mapping program. The
program was a perl script which read in a simple text based cave map format and
output a LaTeX format file which was then converted to Postscript. The perl
program linked the wall detail with the Survex survey data which could be
adjusted and the program re-run to regenerate the LaTeX/Postscript output.
This program is not included as it is a bunch of Perl scripts which require
LaTeX as an intermediary to the Postscript output.
Postscript printouts "before" and "after" show cave walls
nicely follow the survey legs as loops are closed or survey shots corrected.
You can have a look at the
results here with these PDF files; a
before map and an
Here is the Survex survey data
that the map is based on and the
wall data file.
Note that this data format is now superceded by the XML based data format.
However LaTeX was designed for text processing and
the requirement for LaTeX to be able to read and interpret cave data
places constraints on the data format.
Ensuring portability and extensibility is difficult.
That's why the data format for CaveScript will be in an XML format.
An advanced cave mapping application that does use TeX can be found at
XML DTD to XML Schema
Martin Laverty re-casts the XML DTDs into Schemas. As Martin says
in the Glossary on his website:
"XML Schema - an XML successor to the DTD for describing the structure
and content of XML files. The allowable content can be defined in much
more detail so as to increase confidence in the validity of data."
Martin has also created an XSLT (eXtensible Stylesheet Language for
Transformations). This will enable appplications to
transform documents from one XML vocabulary (such as CaveScript) to
another. This could be a plain text, non XML output such as Survex files,
Walls file etc.