grd2cpt - Make linear or histogram-equalized color palette table from grid
grd2cpt grid [ -A[+]transparency ] [ -Ccpt ] [ -D[i|o] ] [ -Enlevels ] [ -F[R|r|h|c ] [ -Gzlo/zhi ] [ -I ] [ -Lminlimit/maxlimit ] [ -M ] [ -N ] [ -Q[i|o] ] [ -Rregion ] [ -Szstart/zstop/zinc ] [ -T-|+|_|= ] [ -V[level] ] [ -W ] [ -Z ]
Note: No space is allowed between the option flag and the associated arguments.
grd2cpt reads one or more grid files and writes a color palette (CPT) file to standard output. The CPT file is based on an existing master CPT file of your choice, and the mapping from data value to colors is through the data’s cumulative distribution function (CDF), so that the colors are histogram equalized. Thus if the grid(s) and the resulting CPT file are used in grdimage with a linear projection, the colors will be uniformly distributed in area on the plot. Let z be the data values in the grid. Define CDF(Z) = (# of z < Z) / (# of z in grid). (NaNs are ignored). These z-values are then normalized to the master CPT file and colors are sampled at the desired intervals.
The color palette includes three additional colors beyond the range of z-values. These are the background color (B) assigned to values lower than the lowest z-value, the foreground color (F) assigned to values higher than the highest z-value, and the NaN color (N) painted wherever values are undefined. For color tables beyond the standard GMT offerings, visit cpt-city: http://soliton.vm.bytemark.co.uk/pub/cpt-city/.
If the master CPT file includes B, F, and N entries, these will be copied into the new master file. If not, the parameters COLOR_BACKGROUND, COLOR_FOREGROUND, and COLOR_NAN from the gmt.conf file or the command line will be used. This default behavior can be overruled using the options -D, -M or -N.
The color model (RGB, HSV or CMYK) of the palette created by makecpt will be the same as specified in the header of the master CPT file. When there is no COLOR_MODEL entry in the master CPT file, the COLOR_MODEL specified in the gmt.conf file or on the command line will be used.
By default GMT writes out grid as single precision floats in a COARDS-complaint netCDF file format. However, GMT is able to produce grid files in many other commonly used grid file formats and also facilitates so called “packing” of grids, writing out floating point data as 1- or 2-byte integers. To specify the precision, scale and offset, the user should add the suffix =id[/scale/offset[/nan]], where id is a two-letter identifier of the grid type and precision, and scale and offset are optional scale factor and offset to be applied to all grid values, and nan is the value used to indicate missing data. In case the two characters id is not provided, as in =/scale than a id=nf is assumed. When reading grids, the format is generally automatically recognized. If not, the same suffix can be added to input grid file names. See grdconvert and Section Grid file format specifications of the GMT Technical Reference and Cookbook for more information.
When reading a netCDF file that contains multiple grids, GMT will read, by default, the first 2-dimensional grid that can find in that file. To coax GMT into reading another multi-dimensional variable in the grid file, append ?varname to the file name, where varname is the name of the variable. Note that you may need to escape the special meaning of ? in your shell program by putting a backslash in front of it, or by placing the filename and suffix between quotes or double quotes. The ?varname suffix can also be used for output grids to specify a variable name different from the default: “z”. See grdconvert and Sections Modifiers for COARDS-compliant netCDF files and Grid file format specifications of the GMT Technical Reference and Cookbook for more information, particularly on how to read splices of 3-, 4-, or 5-dimensional grids.
Sometimes you don’t want to make a CPT file (yet) but would find it helpful to know that 90% of your data lie between z1 and z2, something you cannot learn from grdinfo. So you can do this to see some points on the CDF(Z) curve (use -V option to see more):
gmt grd2cpt mydata.nc -V > /dev/null
To make a CPT file with entries from 0 to 200 in steps of 20, and ignore data below zero in computing CDF(Z), and use the built-in master cpt file relief, run
gmt grd2cpt mydata.nc -Crelief -L0/10000 -S0/200/20 > mydata.cpt