Return to Ferret FAQ


Setting a missing value


Question:

How can I set a missing value over land ?

Explanation:

Consider the following problem: You have a global data set with values over ocean and over land but currently you're only interested in quantities over the ocean. Replacing all land values with a correct missing value is necessary if you want to use ferret transformations such as @ave.

Solution:

! Use a topography dataset (for example etopo120) to define
! a ocean mask. This mask must be first interpolated onto the
! correct grid i.e.

! topography data set
set data etopo120

! file containing my_var
set data my_file

! set an explicit region for example
define region/x=100W:30E/y=10S:90N NA
set region/@NA

! define a grid
DEFINE GRID/LIKE=my_var/T=my_var my_grid

! define an ocean mask
LET ocean = if rose[d=etopo120,g=my_grid] le 0 then 1
! Note: in this IF construct the "ELSE" clause is omitted. This tells Ferret that those values which would satisfy the ELSE condition are undefined (i.e. are missing in ocean).

! define a new variable that has a missing values over land
define variable/title="var_ocean" var_ocean = ocean * my_var[g=my_grid]

! make a two dimensional plot of the values over the ocean only
shade var_ocean

! since there is now a correct missing value over land you can make a plot
! showing the averaged over the ocean only. i.e.
plot var_ocean[x=@ave]


Contributed by Christof Appenzeller of Universitat Bern
Last modified: Nov 6,1996