Hydrographic Surveying

                           using s/v Mother of Perl

 
 
 
  Home
  Boat
  Photos
  Hydrography
  Journal
  SiteMap

Ben Smith spends his summer months as captain of the hydrographic boats for the Center of Coastal Mapping / Joint Hydrographic Center at the University of New Hampshire. Being a sailor, charts, currents, and tides (as well weather), are of particular interest. Now, with his exposure to how all this data is collected, processed, and plotted, Ben felt the urge to try his own hand at it using Mother of Perl.

The software which CCOM/JHC uses for gathering and processing the data costs tens of thousands of dollars (US), and the equipment (multibeam sonar, position and attitude sensors) costs hundreds of thousands of dollars. Hydrography of this sort was way beyond the financial reach of Ben and Mother of Perl.

Ben's goal was not to produce IHO (International Hydrographic Organization) compliant surveys. The goals were to learn more about hydrography by aquiring and processing data that might be useful to Mother of Perl and similar cruising boats. To that end, Ben has been developing a combination of inexpensive hardware and freely available software along with Perl scripts to simplify and automate the process. He has created a dinghy based bathymetric (depth) survey system, and used Mother of Perl as a platform for collecting relative tidal information.

The Dinghy-Based Survey System

The survey system consists of a Humminbird WAAS-GPS/Fishfinder feeding data to a Persistor-based ASCII data logger. The sensors are mounted on a frame made from PVC-pipe sections that screw together and are lashed to the gunwals of the dinghy. The whole system is powered by a sealed lead-acid battery. The battery and datalogger are enclosed in a waterprooff Pelican case on which is mounted the console for the fishfinder.

The dinghy is a 12-foot RIB with an articulated extension to the tiller which facilitates operating the equipment at the same time as controlling the dinghy.

The datalogger records the NMEA data from the GPS/fishfinder on a memory card which is later read by the laptop computer onboard Mother of Perl

The Shipside (s/v Mother of Perl) Hardware

Because Mother of Perl already has the basic electronics for ocean navigation, the only necessary additional requirement is a method to gather and record the data from her instruments.

Sensors

Sensors combined using Noland NMEA multiplexer.

All serial data is fed to B&B serial to ethernet converter.

All data logged on a hacked Buffalo Linkstation running IP timestamping and datalogging program written in Perl. (For hacking information, see:  this document and this discussion group.)

Data Processing

The equipment (data sensors, sonar, GPS, loggers, etc.) generate the raw data which is in text (ASCII) format and consists of timestamps and NMEA strings. The data processing consists of:
  1. Converting the raw bathymetric data from the dinghy into position (x,y), depth (z), and time (t) strings.
  2. Cleaning the xyzt data of extraneous points that either lie outside of the survey area or time, or are of unlikely depths. (Call this data set the clean-xyzt set.) 
  3. Converting and cleaning the ship-side data similarly to steps 1 and 2. (Call this data set the clean-unfiltered-tidal set.)
  4. Apply low pass filters on clean-unfiltered-tidal set to arrive at a relative-tidal set.
  5. Adjust the clean-xyzt set with the relative-tidal set to arrive at an adjusted-xyz set. (At this point, we no longer need to keep track of t, time. It was used to tie the raw bathymetry to tide.)
  6. Interpolate this adjusted-xyz over the area of the survey.
  7. Plot the interpolated data set, and apply any contextual graphics
(If this were a more rigorous survey, we would also make adjustments for the variation of speed of sound which can be determined by dipping a velocimeter or CTD down through the depths periodically during the survey. This equipment is more expensive than all of Mother of Perl's sensors combined.)

Software

Steps 1 thru 5 are accomplished using Perl scripts and libraries that Ben Smith has developed. At CCOM, these steps are accomplished using Hypack (or sonar specific software) and Caris HIPS & SIPS.
Steps 6 and 7 are done with another of Ben's Perl scripts driving the program elements of GMT, a freely available set of mapping tools developed by Walter H. F. Smith of NOAA and Paul Wessel of the University of Hawaii.

The Steps

1. From Raw Bathymetry Log to xyzt file

The bathymetric datalogger on dinghy merely captures then NMEA strings fed to it by the GPS/fishfinder combined instrument. The data looks like this:
$INRMC,121210,A,1300.5900,N,06114.6367,W,0.0,0.0,280106,14.3,W*54
$INDPT,12.1,0.0*75
$INGLL,1300.5900,N,06114.6367,W,121211,A*20
$INVTG,0.0,T,14.3,M,0.0,N,0.0,K*68
$INMTW,26.5,C*15
$INDPT,12.0,0.0*74
$INRMC,121212,A,1300.5900,N,06114.6367,W,0.0,0.0,280106,14.3,W*56
$INDPT,12.1,0.0*75
$INGGA,121213,1300.5900,N,06114.6367,W,1,09,0.9,1.9,M,,,,*11
$INZDA,121213,28,01,2006,-04,00*7C
$INMTW,26.3,C*13
$INDPT,12.1,0.0*75
$INRMC,121214,A,1300.5900,N,06114.6367,W,0.0,0.0,280106,14.3,W*50
$INDPT,12.0,0.0*74
$INGLL,1300.5900,N,06114.6367,W,121215,A*24
$INVTG,0.0,T,14.3,M,0.0,N,0.0,K*68
$INMTW,26.3,C*13
$INDPT,12.0,0.0*74
$INRMC,121216,A,1300.5900,N,06114.6367,W,0.0,0.0,280106,14.3,W*52
$INDPT,12.0,0.0*74
$INGGA,121217,1300.5900,N,06114.6367,W,1,09,0.9,2.1,M,,,,*1E
$INZDA,121217,28,01,2006,-04,00*78

Each unique preface, e.g. $INRMC, specifies a data source. The fields are delimited by commas. The last field is check-sum for the record/string.

The perl script for this data does two things:

  1. extracts the time and position
  2. interpolates the time and position to estimate when and where the depth sounding occured

The scripts relies on the NMEAfields perl module, which Ben has developed over the last five years. This module has not yet been published on CPAN site, but is available, in its current state of development from Ben Smith.

The result of running the nmea2html.PL script on the raw data looks like this:
-61.243945 13.009833 12.10 1138450330
-61.243945 13.009833 12.00 1138450331
-61.243945 13.009833 12.10 1138450332
-61.243945 13.009833 12.10 1138450333
-61.243945 13.009833 12.00 1138450334
-61.243945 13.009833 12.00 1138450335

(to be continued)