SeaWiFS-Derived Bathymetry Data

You can get a raster version of the SeaWiFS bathymetry data in raw PGM format here.

https://oceancolor.gsfc.nasa.gov/SeaWiFS/bathymetry/SeaWiFS_median_depth.35N.35S.180W.180E.pgm.bz2

The file has been compressed with bzip2.

The 8-bit values in the PGM file have been produced as described in the following email message that I sent out at the time we were producing the data set.

> Subject: Finding shallow water with SeaWiFS
> Date: Tue, 15 Oct 2002 17:41:47 -0400
> From: Norman Kuring <norman@seawifs.gsfc.nasa.gov>
>
> Some notes on the new SeaWiFS depth binning scheme:
>
> The software I have written takes a SeaWiFS level-2
> depth file (Rick Stumpf's latest algorithm and Bryan
> Franz's implementation in MSl12) as input.  Computed
> depths are stored as floating point meters in these
> files.  Special values of -1 and -2 indicate spectrally-
> determined land, and clouds or other masks, respectively.
> (I believe that one of the other currently used masks
> is stray_light.  This will have the effect of eliminating
> data within a pixel or two of land.)
>
> I eliminate the edgemost 200 pixels from each LAC scan
> as a means of avoiding swath-edge artifacts.
>
> -1   becomes   1  (land)
> -2   becomes 255  (cloud or other masking condition)
> <0.2 becomes   2
> >100 becomes 254
>
> I scale the rest of the depths logarithmically from
> floating point to 8-bit unsigned integer as follows.
>
> pixval = (254-2)*log(depth/0.2)/log(100/0.2) + 2 + 0.5
>
> Each pixel value is assigned to a 0.01 degree by 0.01 degree
> bin of a Plate Carree projection of the Earth between 35 North
> and 35 South (252,000,000 bins in all).
>
> After having accumulated these log-scaled depths in these bins,
> I run another program to generate an image of the data.
> This program ignores cloud or otherwise masked pixels
> unless there are no other pixels in a given bin.  I can
> currently produce an image showing the mean, median, or mode
> pixel value.
>
>   .
>   .
>   .

So, using the above information, you could write a small program to print out a table of latitude, longitude, and depth. A sample program written in Perl follows.


my $depth_file = 'SeaWiFS_median_depth.35N.35S.180W.180E.pgm';

open F,$depth_file or die "Could not open $depth_file ($!)";

<F>;    # skip header line
my($wid,$hgt) = split ' ',scalar <F>;
<F>;    # skip another header line

$wid == 36000 or die "Unexpected width in depth file\n";
$hgt ==  7000 or die "Unexpected height in depth file\n";

my $inc = 360/$wid;

my $log500 = log(100/0.2);

for($lat = 35 - $inc/2; $lat > -35; $lat -= $inc){
  for($lon = -180 + $inc/2; $lon < 180; $lon += $inc){

    read(F,$pixel,1) == 1 or die "Error reading $depth_file ($!)";
    $pixel = unpack "C",$pixel;

    printf "%7.3f %8.3f ",$lat,$lon;

    if($pixel == 0){
      print "no data\n";
    }
    elsif($pixel == 1){
      print "land\n";
    }
    elsif($pixel == 255){
      print "cloud or other masking condition\n";
    }
    else{
      $depth = 0.2*exp($log500*($pixel - 2)/252);
      printf "%6.2f\n",$depth;  # depth in meters
    }
  }
}

You will also find a colored version of the PGM raster in PPM format here

https://oceancolor.gsfc.nasa.gov/SeaWiFS/bathymetry/SeaWiFS_median_depth.35N.35S.180W.180E.ppm.bz2

or in PNG format here

https://oceancolor.gsfc.nasa.gov/SeaWiFS/bathymetry/SeaWiFS_median_depth.35N.35S.180W.180E.color.png

The color look-up table used to convert the PGM image to the PPM image lives here.

https://oceancolor.gsfc.nasa.gov/SeaWiFS/bathymetry/depth_color_lut.txt

Additional websites describing some of the work we have done in collaboration with others are here.

Norman Kuring 10 March 2005