[Thread Prev][Thread Next][Index]

[ferret_users] fine-resolution bathymetry for small regions



Hi Ferreters -

Here's a source of fine-resolution bathymetry, perhaps 10s of meters horizontally in some areas. In any case, it is probably the finest resolution available. Brief instructions below, then a Ferret script to read the files.

These are GMT-format netcdf files with the extension *.grd; Ferret will read and convert them using the attached script. However, the native way to read them is with a program called grdcontour (a whole set of grd* routines are available on the web). But if you want to use these files in Ferret, read on:

http://www.marine-geo.org/tools/maps_grids.php

Pull down the "Focus/Study Site" menu. If you are lucky your region will be listed specifically, otherwise pick "World".

Enter the coordinates of your region, Click "View Created Map" .

You will get a map, and set of links to download the data. The appearance of the map is an indication of the location of truly high- resolution data (perhaps 10s of meters horizontal, from side-scan sonar).

As far as I can tell, the most realistic choice is "masked" at the same resolution as the map. But experiment with the options and write back, please.
This will produce a file with a long numerical name (GMT format = *.grd)

Then bring this file into Ferret and rewrite using the attached script (with Ansley's help).

In Ferret:
yes? go grd_to_netcdf_convert.jnlb 1304975255453 ! the argument is an example of the filename

Billy K

------------------------
! read and convert grd format files to Ferret-usable netcdf
! read-write-read-write to fix problem of reversing latitudes:
! the 1-d array Z contains the 2-d grid listed in north-to-south order
! (despite the apparent south-to-north order of Y_RANGE):
! first ($dimx) values are W-E along the northern edge
! next ($dimx) values are 1 gridpoint south of the northern edge
! ...
! last ($dimx) values are along the southern edge

! arg1 = grd file name

use $1.grd
set var/bad=nan 'Z'

! define the lat/lon grid using the file variables
def sym dimx `dimension[i=1]`
def sym dimy `dimension[i=2]`
define axis/x=`x_range[i=1]`:`x_range[i=2]`/npoints=($dimx)/unit=lon xlon define axis/y=`y_range[i=1]`:`y_range[i=2]`/npoints=($dimy)/unit=lat ylat

! RESHAPE the input 1-d vector Z to a 2-d grid (but reversed south-to- north)
let zz = reshape('Z',x[gx=xlon]+y[gy=ylat])

save/file=$1_a.cdf zz     ! write an intermediate file

! read it back
can var zz
use/order=x-y $1_a.cdf             ! per Ansley, reverse the order
let bathy = zz[gx=xlon,gy=ylat]    ! regrid on correct lat/lon axis

save/file=$1.cdf bathy

sp rm $1_a.cdf              ! remove the intermediate file
--------------------------

Attachment: grd_to_netcdf_convert.jnlb
Description: Binary data



[Thread Prev][Thread Next][Index]
Contact Us
Dept of Commerce / NOAA / OAR / PMEL / Ferret

Privacy Policy | Disclaimer | Accessibility Statement