Index
# Example 16 -- Grided bathymetry data, converted to image, then countoured
#
# Contributed 2001-May-14 by Peter S. Galbraith <GalbraithP@dfo-mpo.gc.ca>

`Set image colorscale gebco'
Set up colors for gebco charts of ocean/land altimetry.
{
    open "awk 'BEGIN { \
        for (i = 0; i < 256; i++) { \
            if (i <= 278) {R=0.820; G=0.604; B=0.361;}\
            if (i <= 232) {R=0.882; G=0.988; B=0.969;}\
            if (i <= 227) {R=0.749; G=0.949; B=0.925;}\
            if (i <= 223) {R=0.627; G=0.910; B=0.894;}\
            if (i <= 209) {R=0.514; G=0.871; B=0.871;}\
            if (i <= 185) {R=0.408; G=0.804; B=0.831;}\
            if (i <= 139) {R=0.310; G=0.733; B=0.788;}\
            if (i <=  93) {R=0.220; G=0.655; B=0.749;}\
            if (i <=  46) {R=0.133; G=0.573; B=0.710;}\
            if (i <=   0) {R=0.059; G=0.486; B=0.671;}\
            print(R, G, B); \
        } \
    }' |"
    read image colorscale rgb
    close
}

set trace on
set page landscape

# Set my own variable to emphasize the Gulf only?  Or the Ocean?
.gulf_emphasisGSL. = 1

# Map lat/lon corners
\xl = "73"
\xr = "50"
\yb = "43"
\yt = "53"

# Setup the map parameters
set x format "%.0lf$\circ$W"
set y format "%.0lf$\circ$N"
set x type map W
set y type map N
set x name ""
set y name ""
set y margin 3
set x margin 3
set tic size {rpn ..tic_size.. 2 /} # Make smaller tic sizes (by half)
set y size 14
if {rpn "/usr/local/bin/map-merc-scale-factor" file_exists}
    # Use my proj-based script to calc Mercator resizing if available
    \.factor. = system map-merc-scale-factor -a \yb -A \yt -o \xr -O \xl
    set x size {rpn ..ysize.. \.factor. *}
else
    # else use Gri (Less than 0.2% difference anyway)
    resize x for maps
end if
set x axis \xl \xr  -5 -1
# I want bigger tic marks at degree intervals, even if unlabelled
set font size 0
set y axis \yb \yt 1 {rpn 1 6 /} 
draw y axis 
# Reset to label every second one to draw the labelled axes.
set y axis \yb \yt 2 {rpn 1 6 /} 
set font to Helvetica
set font size 12
draw axes

# Get the x and y grid point locations from the pre-gridded `x y z' data file.
if {rpn "y.grid" file_exists !}
    system zcat topex-gsl.xyz.gz | awk '{print $2}' | uniq > y.grid
    system zcat topex-gsl.xyz.gz | awk '{print $1}' | sort | uniq > x.grid
end if
open x.grid
read grid x
close
open y.grid
read grid y
close

# Generate the grid matrix if not already done
if {rpn "topex-gsl.grid.gz" file_exists !}
    open topex-gsl.xyz.gz
    read columns x y z
    close
    
    set missing value 99999
    # `x y z' data file is regularly-spaced, pre-gridded, 
    # so use neighbour method
    convert columns to grid neighbor
    system rm -f topex-gsl.grid
    write grid to "topex-gsl.grid"
    system gzip --best topex-gsl.grid
else
    open topex-gsl.grid.gz
    read grid data
end if
show grid


if .gulf_emphasisGSL.
    Set image colorscale gebco
    set image range -500 50
    set x type linear
    set y type linear
    set x format "%.0f m"
    draw image palette left -600 right 100 increment 100 \
        box ..xmargin.. {rpn ..ymargin.. ..ysize.. + 2 + } \
        {rpn ..xmargin.. ..xsize.. +} {rpn ..ymargin.. ..ysize.. + 3 + }
else
    Set image colorscale gebco
    set image range -5000 500
    set x type linear
    set y type linear
    set x format "%.0f m"
    draw image palette left -6000 right 1000 increment 1000 \
        box ..xmargin.. {rpn ..ymargin.. ..ysize.. + 2 + } \
        {rpn ..xmargin.. ..xsize.. +} {rpn ..ymargin.. ..ysize.. + 3 + }
end if

# Convert our `x y z' data grid to an image following above specs
convert grid to image size 691 451
set clip postscript on          # Clip in case we go over the edge by a wee bit
draw image
# Draw selected depth contours on the data grid using a thin line
set line width .05
draw contour -50 unlabelled
draw contour -100 -500 -100 unlabelled
draw contour -1000 -3000 -1000 unlabelled

# Draw some fillable coastline data
set missing value -99
open gulfh_lewerIslands.lon_lat.gz
read columns x y
close
read colornames from RGB "/usr/lib/X11/rgb.txt"
set colour rgb 0.820 0.604 0.361
draw curve filled               # Draw filled-in continents in this colour.
set colour black
draw curve                      # Draw again in black, without filling-in.
draw axes frame

open "/data/atlas/gmt/gulff-rivers-all.lon_lat"
read columns x y
set colour rgb {rpn 204 255 /} {rpn 221 255 /} {rpn 225 255 /}
close
draw curve

open gulfh-level2.lon_lat.gz
read columns x y
close
draw curve filled               # Overlay lakes

open gulfh-level3.lon_lat
read columns x y
close
set colour rgb 0.820 0.604 0.361
draw curve filled               # Overlay islands in lakes.

set clip postscript off
set colour black
draw axes frame                 # Draw axes frame again to clean up

quit