National Oceanic and
Atmospheric Administration
United States Department of Commerce

Contouring to Outline a Mask

Contouring to Outline a Mask


I want to contour a mask consistingof 0's and 1's but it doesn't match the grid cells.


The command "CONTOUR/OVER mask" (fig a) uses a standard iso-line algorithmto draw contour lines, which leads to a smooth path between grid points.In this case we want to see the outline of the grid cells that make upthe mask (fig b).



A straightforward contour of a mask grid of 0's and 1's does not produce a nice representation of the mask because the contour lines do not "squareup" at the boundaries between grid cells.


You will need the script mask_outline.jnl which is part of the Ferret distribution. It regrids the mask to a new grid which, when contoured, produces squared off boundaries.


 yes? use etopo60
 yes? set region/x=90w:20e/y=15s:55n
 yes? shade rose

 yes? let ocean_mask = IF rose LT 0 THEN 1 ELSE 0 
 yes? GO mask_outline ocean_mask
 yes? ovmo ! think "overlay mask outline"

! If the final line segments at the north and east of the plot are missing

 yes? cancel region
 yes? ovmo

! Use "yes? SHOW ALIAS ovmo" to see or modify the contour command

The technique used is to define a modified mask grid as follows: ('+' to indicate the corners of the boundaries between grid cells) Say the original grid of 0's and 1's looks like this:

 0 1 1

 + + + +

 0 0 1

We define a new mask which contains clusters of 4 points a small distance,EPSILON, from one another immediately surrounding the cell corners. (the original values are in parentheses):

 (0) (1) (1)

 0 0 1 1 1 1

 + + + +

 0 0 0 0 1 1

 (0) (0) (1)

When the value 0.5 is contoured on this mask, the contour lines will pass within EPSILON of the true corners.