4.10. The Final Step: Reprocessing the Bathymetry and Sidescan

After all this discussion, let us take a moment to review what we've done. We first set out to identify what MB-System™ format identified our sonar data. With that in hand, we went on to quickly survey our data to get a good idea for the types of problems we were likely to see. We analyzed the data with the most accurate sound speed profiles available, making adjustments as necessary to produce the best profile for each portion of the data set. We then carefully analyzed selected portions of the data to determine the roll and pitch biases of the sonar. We reviewed the navigation data and may have smoothed it or even decided that a second source of navigation data must be applied altogether. Finally we began the task of flagging bad data, pitching outliers and excessively noisy data. First this was done using automated tools, and then, more laboriously, using interactive tools. We also might have applied filters and grazing angle functions to the side scan data to bring out features in the data set.

All of this has been preparatory work for the final step of applying these changes to the sonar data. This final step is completed using the application mbprocess.

Note

It is quite common to have used mbprocess within the processing of the earlier steps. For example, you may have measured and applied a SSP to the data used to calculate the roll bias. Or you may have run mbprocess to see the effects of your sidescan filters such that you could apply them iteratively to produce quality pictures. mbprocess allows changes to the parameter file at any time, and subsequent executions will incorporate those changes. In this way, mbprocess can be executed iteratively such that you can see the effects with each applied change and reprocess new changes at a later date.

As we have gone along, using various tools, they have automatically created or edited the parameter files (ending in ".par") to identify what options are to be applied to the sonar data. mbprocess uses these parameters to complete the final step of applying the sound speed profiles, biases, flagged bathymetry, smoothed navigation, and a host of other options.

In addition to the tools thus far described, there are a host of other processing options that can applied to a sonar data set via mbprocess. Many of these have thus far, not been mentioned, but are extremely useful to the processing of sonar data. These include corrects for constant errors in heading, offsets from the ship's navigation source to the sonar array (if not already taken into account), correction of the ship's draft and many others. Application of these corrections require editing of the parameter file. This man be done manually, or with mbset.

4.10.1. Mbset

mbset is a tool for creating or modifying MB-System™ parameter files. Typically the "-P" flag to mbset is simply followed by a series "PARAMETERNAME:value" separated by a comma, which are written to the parameter files of the associated data.

As an example, assume you find out that in middle of a survey, the primary GPS receiver providing position information to the sonar fails, and a backup is place online. Everything seems OK, until you realize that the new GPS antenna is mounted on the aft end of the ship, while the former was mounted on the pilot house, and no professional survey numbers are available to correct for this difference in position. Some months after the cruise, you receive an email from the ship's Science Officer that they have had the new GPS position professionally surveyed and the offsets from the previous position are 80 meters aft, and 2.5 meters to STBD. We could apply these values to the sonar data using mbset to specify these offsets in the appropriate parameter files.

mbset -F-1 -I DATALISTOFAFFECTFILES -PSONAROFFSETX:2.5 \
-PSONAROFFSETY:-80

The preceding line would write the correction values into the parameter files for those bathymetry files specified in the data list and the corrections would be applied with mbprocess.

Now that we have seen how to edit the parameter files, we can take a more in-depth look at types of things in the parameter files.

4.10.2. The Parameter File

Any post processing you would like to do to a multibeam data file is specified in its associated parameter file, and a handful of ancillary data files which accompany it. As we have seen, the parameter file will be automatically generated for you by the MB-System™ tools as it is required. So, for example, when you edit bathymetry data in mbedit, on exiting you will see that a parameter file has been generated with the same basename as the original data file, and a .par suffix. In this case you will also see a .esf file which contains a list of the bathymetry edit flags from your work in mbedit. Similarly, the application mbset allows one to set specific processing parameters within the parameter file, and will generate a parameter file if one does not already exist.

The parameter file is simply a text file containing a host of options for the post processing of the sonar data. Its general form is of commented out headings followed by parameter and value pairs. Each section designates a kind of processing and usually has a "Mode" parameter associated with it that turns the recalculation of that section "ON" or "OFF". Each parameter is quite well described in the mbprocess man page which is reproduced at the end of this section.

Caution

New processing options are being added to the parameter file all the time, often before they are fully documented in the man page or this document. It is well worth while to survey the parameter files generated by any of the automated processing tools to see what might be currently available. In the mean time, we'll do our best to keep the documentation up to date.

There is truly an extraordinary number of processing tools that may be specified in the parameter file and applied with subsequent use of mbprocess. While documented in the man pages for mbprocess and mbset, there are many fantastic, time saving details that are little known. A few in particular that are worth pointing out:

  • EXPLICIT:

    When this flag is set (which is the default), mbprocess parses the parameter file and makes assumptions regarding what sections require processing based on the parameter values and ancillary data files specified. For example, if a roll bias is to be applied, mbprocess will automatically also turn on the ray-tracing processing mode such that the new incident angles are appropriately applied to the bathymetry.

  • Navigation Merging:

    The collection of parameters that may be specified in this section are some of the most helpful and powerful tools in MB-System™.

    One may specify, smoothed or altogether new navigation files to be merged with the bathymetry. If you think your navigation source has been incorrectly surveyed with respect to your sonar or vessel reference, you can apply vessel-referenced fore/aft and athwartships offsets. Perhaps you find that the time standard provided for your sonar has an offset from GMT. The Navigation section allows you to set a time offset to be applied. Similarly, if you fear your heading reference has an offset, you can specify that as well, and all the necessary lever arm translations will be applied appropriately.

  • Bathymetry Editing:

    This section allows one to apply new sound speed profiles to the data file. When the default EXPLICIT parameter is set (as described above) simply specifying a new sound speed profile in this section will turn on ray tracing such that new bathymetry values are calculated appropriately.

  • Metadata Insertion:

    This section allows one to add comments to processed data files including the vessel, institution, cruise ID and principal investigator among others.

  • Processing Kludges:

    This section enables us to make special provisions for particularly finicky sonar data.

It is good to remember that while the MB-System™ tools will manage and edit your parameter files for you, one can edit them by hand. The syntax is straight forward and the allowable options are specified in the man pages.

MBPROCESS PARAMETER FILE COMMANDS
       The mbprocess commands found in parameter files are:

        GENERAL PARAMETERS:
          EXPLICIT
               causes mbprocess to set modes implicitly
               - e.g. the SVPFILE command will also set
                 raytracing on even if the RAYTRACE command
                 is not given [explicit mode commands required]
          FORMAT constant
               sets format id [no default]
          INFILE filename
               sets input file path [no default]
          OUTFILE filename
               sets output file path [no default]

        NAVIGATION MERGING:
          NAVMODE boolean
               sets navigation merging [0]
                 0: navigation merge off
                 1: navigation merge on
          NAVFILE filename
               sets navigation file path [no default]
          NAVFORMAT constant
               sets navigation file format [9]
          NAVHEADING boolean
               sets heading to be merged from navigation file
               - note: heading merged from navigation before
                 heading correction applied
                 0: heading not changed
                 1: heading merged from navigation file
          NAVSPEED boolean
               sets speed to be merged from navigation file
                 0: speed not changed
                 1: speed merged from navigation file
          NAVDRAFT boolean
               sets draft to be merged from navigation file
               - note: draft merged from navigation before
                 draft correction applied
                 0: draft not changed
                 1: draft merged from navigation file
          NAVINTERP boolean
               sets navigation interpolation algorithm [0]
                 0: linear interpolation (recommended)
                 1: spline interpolation

        ADJUSTED NAVIGATION MERGING:
          NAVADJMODE boolean
              sets navigation merging from mbnavadjust [0]
               - longitude and latitude only
                 0: adjusted navigation merge off
                 1: adjusted navigation merge on
          NAVADJFILE filename
               sets adjusted navigation file path
               - this file supersedes navigation file for
                 lon and lat only
               - uses mbnavadjust output
          NAVADJINTERP boolean
               sets adjusted navigation interpolation algorithm [0]
                 0: linear interpolation (recommended)
                 1: spline interpolation

        DATA CUTTING:
          DATACUTCLEAR
               removes all existing data cutting commands
          DATACUT kind mode min max
               adds new data cutting command, where:
                 kind = 0 : cut applied to bathymetry data
                 kind = 1 : cut applied to amplitude data
                 kind = 2 : cut applied to sidescan data
                 mode = 0 : min and max indicate start and end
                            beam/pixel numbers between which data
                            are flagged or zeroed
                 mode = 1 : min and max indicate start and end
                            acrosstrack distance (m) between which
                            data are flagged or zeroed
          BATHCUTNUMBER min max
               adds new bathymetry data cutting command where
               min and max are the start and end beam numbers
               between which data are flagged (note that
               flagging bathymetry also flags amplitude data)
          BATHCUTDISTANCE min max
               adds new bathymetry data cutting command where
               min and max are the start and end acrosstrack
               distance (m) between which data are flagged
               (note that flagging bathymetry also flags
               amplitude data)
          BATHCUTSPEED min max
               adds new bathymetry data cutting command where
               all beams are flagged for pings with a ship
               or vehicle speed less than min or greater than
               max (note that flagging bathymetry also flags
               amplitude data)
          AMPCUTNUMBER min max
               adds new amplitude data cutting command where
               min and max are the start and end beam numbers
     between which amplitude data are zeroed (note
               that zeroing amplitude data has no impact on
               bathymetry data)
          AMPCUTDISTANCE min max
               adds new amplitude data cutting command where
               min and max are the start and end acrosstrack
               distance (m) between which amplitude data are
               zeroed (note that zeroing amplitude data has
               no impact on bathymetry data)
          AMPCUTSPEED min max
               adds new amplitude data cutting command where
               all amplitude values are zeroed for pings with
               a ship or vehicle speed less than min or greater
               than max (note that zeroing amplitude data has
               no impact on bathymetry data)
          SSCUTNUMBER min max
               adds new sidescan data cutting command where
               min and max are the start and end pixel numbers
               between which sidescan data are zeroed  (note
               that zeroing sidescan data has no impact on
               bathymetry data)
          SSCUTDISTANCE min max
               adds new sidescan data cutting command where
               min and max are the start and end acrosstrack
               distance (m) between which sidescan data are
               zeroed  (note that zeroing sidescan data has
               no impact on bathymetry data)
          SSCUTSPEED min max
               adds new sidescan data cutting command where
               all sidescan values are zeroed for pings with
               a ship or vehicle speed less than min or greater
               than max (note that zeroing sidescan data has
               no impact on bathymetry data)

        BATHYMETRY EDITING:
          EDITSAVEMODE boolean
               turns on reading edit save file (from mbedit) [0]
          EDITSAVEFILE filename
               sets edit save file path (from mbedit) [none]

        BATHYMETRY RECALCULATION:
          SVPMODE mode
               sets usage of a water sound speed model (sound
               velocity profile, or SVP) [0]
                0: bathymetry recalculation by raytracing off
                1: bathymetry recalculation by raytracing on
                2: translate depths from corrected to uncorrected
                   or vice versa depending on SOUNDSPEEDREF
                   command
          SVPFILE filename
               sets SVP file path [no default]
          SSVMODE boolean
               sets surface sound velocity (SSV) mode [0]
                0: use SSV from file
                1: offset SSV from file (set by SSV command)
                2: use constant SSV (set by SSV command)
          SSV constant/offset
               sets SSV value or offset (m/s) [1500.0]
          ANGLEMODE mode
               sets handling of beam angles during
               raytracing [0]
                0: angles not changed before raytracing
                1: angles adjusted using Snell's Law for
                   the difference between the surface sound
                   velocity (SSV) and the sound speed at
                   the sonar depth in the SVP.
                2: angles adjusted using Snell's Law and
                   the sonar array geometry for the
                   difference between the surface sound
                   velocity (SSV) and the sound speed at
                   the sonar depth in the SVP.
          TTMULTIPLY multiplier
               sets value multiplied by travel times [1.0]
          SOUNDSPEEDREF boolean
               determines the handling of the sound
               speed reference for bathymetry [1]
               - note: if raytracing is turned off then
                 this command implies correcting or
                 uncorrecting using the SVP specified
                 with the SVPFILE command
                0: produce "uncorrected" bathymetry
                   referenced to a uniform 1500 m/s
                   water sound speed model.
                1: produce "corrected" bathymetry
                   referenced to a realistic water
                   sound speed model.

        STATIC BEAM BATHYMETRY OFFSETS:
          STATICMODE mode
               sets offsetting of bathymetry by
               per-beam statics [0]
                 0: static correction off
                 1: static correction on
          STATICFILE filename
               sets static per-beam file path [no default]
               - static files are two-column ASCII tables
                 with the beam # in column 1 and
                 the depth offset in m in column 2

        DRAFT CORRECTION:
          DRAFTMODE mode
               sets draft correction [0]
               - note: draft merged from navigation before
                 draft correction applied
                 0: no draft correction
                 1: draft correction by offset
                 2: draft correction by multiply
                 3: draft correction by offset and multiply
                 4: draft set to constant
          DRAFT constant
               sets draft value (m) [0.0]
          DRAFTOFFSET offset
               sets value added to draft (m) [0.0]
          DRAFTMULTIPLY multiplier
               sets value multiplied by draft [1.0]

        HEAVE CORRECTION:
          HEAVEMODE mode
               sets heave correction [0]
               - note: heave correction by offset and/or
                 multiplication is added to any lever
                 heave correction, and then either used in
                 bathymetry recalculation or added to
                 existing bathymetry
                 0: no heave correction
                 1: heave correction by offset
                 2: heave correction by multiply
                 3: heave correction by offset and multiply
          HEAVEOFFSET offset
               sets value added to heave (m)
          HEAVEMULTIPLY multiplier
               sets value multiplied by heave

        LEVER CORRECTION:
          LEVERMODE mode
               sets heave correction by lever calculation [0]
               - note: lever heave correction is added to
                 any heave correction by offset and/or
                 multiplication, and then either used in
                 bathymetry recalculation or added to
                 existing bathymetry
                 0: no lever calculation
                 1: heave correction by lever calculation
          VRUOFFSETX constant
              sets athwartships offset of attitude sensor (m)
               - note: positive to starboard
          VRUOFFSETY constant
               sets fore-aft offset of attitude sensor (m)
               - note: positive forward
          VRUOFFSETZ constant
               sets vertical offset of attitude sensor (m)
               - note: positive down
          SONAROFFSETX constant
               sets athwartships offset of sonar receive array (m)
               - note: positive to starboard
          SONAROFFSETY constant
               sets fore-aft offset of sonar receive array (m)
               - note: positive forward
          SONAROFFSETZ constant
               sets vertical offset of sonar receive array (m)
               - note: positive down

        ROLL CORRECTION:
          ROLLBIASMODE mode
               sets roll correction [0]
                 0: no roll correction
                 1: roll correction by single roll bias
                 2: roll correction by separate port and
                    starboard roll bias
          ROLLBIAS offset
               sets roll bias (degrees)
          ROLLBIASPORT offset
               sets port roll bias (degrees)
          ROLLBIASSTBD offset
               sets starboard roll bias (degrees)

        PITCH CORRECTION:
          PITCHBIASMODE mode
               sets pitch correction [0]
                 0: no pitch correction
                 1: pitch correction by pitch bias
          PITCHBIAS offset
               sets pitch bias (degrees)

        HEADING CORRECTION:
          HEADINGMODE mode
               sets heading correction [no heading correction]
               - note: heading merged from navigation before
                 heading correction applied
                 0: no heading correction
                 1: heading correction using course
                    made good
               2: heading correction by offset
                 3: heading correction using course
                    made good and offset
          HEADINGOFFSET offset
               sets value added to heading (degrees)

        TIDE CORRECTION:
          TIDEMODE mode
               sets tide correction [0]
               - note: tide added to bathymetry after
                 all other calculations and corrections
                 0: tide correction off
                 1: tide correction on
          TIDEFILE filename
               sets tide file path
          TIDEFORMAT constant
               sets tide file format [1]
               - tide files can be in one of four ASCII
                 table formats
                 1: format is >time_d tide<
                 2: format is >yr mon day hour min sec tide<
                 3: format is >yr jday hour min sec tide<
                 4: format is >yr jday daymin sec tide<
               - time_d = decimal seconds since 1/1/1970
               - daymin = decimal minutes start of day

        AMPLITUDE CORRECTION:
          AMPCORRMODE  boolean
               sets correction of amplitude for
               amplitude vs grazing angle function
                 0: amplitude correction off
                 1: amplitude correction on
          AMPCORRFILE filename
               sets amplitude correction file path      [no default]
          AMPCORRTYPE mode
               sets sidescan correction type [0]
                 0: correction by subtraction (dB scale)
                 1: correction by division (linear scale)
          AMPCORRSYMMETRY boolean
               forces correction function to be symmetric [1]
          AMPCORRANGLE constant
               sets amplitude correction reference angle      (deg) [30.0]

        SIDESCAN CORRECTION:
          SSCORRMODE  boolean
               sets correction of sidescan for
               amplitude vs grazing angle function
                 0: sidescan correction off
                 1: sidescan correction on
          SSCORRFILE filename
               sets sidescan correction file path      [no default]
          SSCORRTYPE mode
               sets sidescan correction type [0]
                 0: correction by subtraction (dB scale)
                 1: correction by division (linear scale)
          SSCORRSYMMETRY boolean
               forces correction function to be symmetric [1]
          SSCORRANGLE constant
               sets sidescan correction reference angle      (deg) [30.0]

        SIDESCAN RECALCULATION:
          SSRECALCMODE  boolean
               sets recalculation of sidescan for
               Simrad multibeam data
                 0: sidescan recalculation off
                 1: sidescan recalculation on
          SSPIXELSIZE constant
               sets recalculated sidescan pixel size (m) [0.0]
               - a zero value causes the pixel size to
                 be recalculated for every data record
          SSSWATHWIDTH  constant
               sets sidescan swath width (degrees) [0.0]
               - a zero value causes the swath width
                 to be recalculated for every data record
          SSINTERPOLATE  constant
               sets sidescan interpolation distance
               (number of pixels)

        METADATA INSERTION:
          METAVESSEL string
               sets mbinfo metadata string for vessel
          METAINSTITUTION string
               sets mbinfo metadata string for vessel
               operator institution or company
          METAPLATFORM string
               sets mbinfo metadata string for sonar
               platform (ship or vehicle)
          METASONAR string
               sets mbinfo metadata string for sonar
               model name
          METASONARVERSION string
               sets mbinfo metadata string for sonar
               version (usually software version)
          METACRUISEID string
               sets mbinfo metadata string for institutional
               cruise id
          METACRUISENAME string
               sets mbinfo metadata string for descriptive
               cruise name
          METAPI string
               sets mbinfo metadata string for principal
               investigator
          METAPIINSTITUTION string
               sets mbinfo metadata string for principal
               investigator
          METACLIENT string
               sets mbinfo metadata string for data owner
               (usually PI institution)
          METASVCORRECTED boolean
               sets mbinfo metadata boolean for sound
               velocity corrected depths
          METATIDECORRECTED boolean
               sets mbinfo metadata boolean for tide
               corrected bathymetry
          METABATHEDITMANUAL boolean
               sets mbinfo metadata boolean for manually
               edited bathymetry
          METABATHEDITAUTO boolean
               sets mbinfo metadata boolean for automatically
               edited bathymetry
          METAROLLBIAS constant
               sets mbinfo metadata constant for roll bias
               (degrees + to starboard)
          METAPITCHBIAS constant
               sets mbinfo metadata constant for pitch bias
               (degrees + forward)
          METAHEADINGBIAS constant
               sets mbinfo metadata constant for heading bias
          METADRAFT constant
               sets mbinfo metadata constant for vessel draft (m)

        PROCESSING KLUDGES:
          KLUGE001 boolean
               enables correction of travel times in Hydrosweep DS2
               data from the R/V Maurice Ewing in 2001 and 2002.
          KLUGE002 boolean
               processing kludge 002 (not yet defined)
               - occasional odd processing problems will
                 occur that are specific to a particular
                 survey or sonar version
               - mbprocess will allow one-time fixes to
                 be defined as "kludges" that can be turned
                 on through the parameter files.
          KLUGE003 boolean
               processing kludge 003 (not yet defined)
          KLUGE004 boolean
               processing kludge 004 (not yet defined)
          KLUGE005 boolean
               processing kludge 005 (not yet defined)


Organization is key to speeding the reprocessing of sonar data. With your data in an archive as described in earlier chapters, one can utilize the data lists and mbset to apply changes to the parameter files in bulk. However it is instructive to make a metadata map of the files involved to make sure you do not miss any detail along the way.

"What do you mean by "metadata map"?, you say. Make a list of all the data files, and identify for each, all the appropriate corrections that you have identified along the way. For example, identify which SSP's are to be applied to which portions of the survey, what roll bias values are to be applied (typically to all of the data), and what navigation corrections should be applied and where. You may have organized your data into subdirectories already, and you may decide to reorganize your data at this point based on the corrections you need to apply.

With the map in hand, you can then ensure that the parameter files for each data file are correct and make appropriate changes by hand or in bulk using data lists and mbset.

4.10.3. Mbprocess

To apply the settings in the parameter file and the other ancillary files (navigation, flagged bathymetry, etc.) we call mbprocess.

Calling mbprocess is quite simple, the following is usually sufficient.

mbprocess -Idatalist -F-1

The line above will apply the changes specified in the respective parameter files to the data files listed in the "datalist". Unless specified explicitly with the "-O" flag, mbprocess automatically creates names for the processed data files by appending a "p" to the basename of each file. Hence 00020504133000.mb183 becomes 00020504133000p.mb183. mbprocess keeps tabs, in the parameter file, of the name and modification time of the processed data file, the parameter file, and the ancillary data files and only reprocessed data if changes have been made. One can force reprocessing of the data, however, with the "-P" flag to mbprocess. Typically mbprocess will include comments from the original data file as well as embed the meta-data items specified in the parameter file, into the processed sonar data. The "-N" flag prevents this.

It is helpful to remember that changes can be made piece-meal, in any order, and indeed iteratively, to the parameter file. mbprocess can be called after each change to see the effects, or only after all the changes have been made.

That's it. The rest is up to you. If you have taken good notes during the survey, and are methodical in your methods for post processing the data, it can be relatively straight forward. If you are post processing data that is several years old, is poorly documented, and is from a cruise in which you did not participate, it can be quite a challenge. In either case, MB-System™ will be an invaluable aid.

Best of Luck!