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.
- Garmin GPS
- KVH gyro-compansated fluxgate compass
- B&G wind sensor
- AIRMAR Dopplar speed through water sensor
- B&G fathometer
Sensors combined using Noland NMEA multiplexer.
All serial data is fed to B&B serial to ethernet converter.
Data ProcessingThe 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:
- Converting the raw bathymetric data from the dinghy into position (x,y), depth (z), and time (t) strings.
- 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.)
- Converting and cleaning the ship-side data similarly to steps 1 and 2. (Call this data set the clean-unfiltered-tidal set.)
- Apply low pass filters on clean-unfiltered-tidal set to arrive at a relative-tidal set.
- 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.)
- Interpolate this adjusted-xyz over the area of the survey.
- Plot the interpolated data set, and apply any contextual graphics
SoftwareSteps 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.
1. From Raw Bathymetry Log to xyzt fileThe bathymetric datalogger on dinghy merely captures then NMEA strings fed to it by the GPS/fishfinder combined instrument. The data looks like this:
Each unique preface, e.g.
$INRMC, specifies a data source. The fields are
delimited by commas. The last field is check-sum for the
The perl script for this data does two things:
- extracts the time and position
- 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.PLscript 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