Next: 1.1.6 Overview of GMT Up: 1.1 What is new Previous: 1.1.4 Overview of GMT Contents Index

## 1.1.5 Overview of GMT 4.1 [Jan-7, 2006]

Most changes in GMT 4.1 are improvements ``under the hood''. The most significant of these are

1. Addition of ability to both read and write netCDF files that are COARDS compliant. This means that GMT, for the first time, is able to read netCDF files created by applications other than itself, and that other applications capable of reading COARDS-compliant netCDF grids can directly import data from GMT. We have added the new parameter GRID_FORMAT to the GMT defaults with ``nf'' as default. Users who, against our recommendation, prefer to maintain the old non-COARDS compliant format as their default grid format can instead select ``cf''. Support for extracting 2-D slices from 3-D netCDF grids has also been added.
2. An overhaul of how the pslib library encodes PostScript images, resulting in vastly smaller files when certain conditions are met, and general shrinking overall by enabling RLE or LZW compression. We have also added hooks for setting three new PostScript parameters via gmtdefaults settings: PS_LINE_CAP, PS_LINE_JOIN, and PS_MITER_LIMIT. See gmtdefaults for details.
3. Improved alignment of strings ending in ``1'' in the PostScript output.
4. Adjustments to how native GMT grid headers are read and written in order to be fully 64-bit safe. GMT now runs in full 64-bit mode on platforms that supports it (e.g., Mac OS X G5).
5. Making GMT tread-safe by replacing strtok with our own GMT_strtok function.
6. Implemented full inverse Winkel map projection based on a new algorithm by Ipbuker, 2002, Cartography & Geographical Information Science, 29, 37-42.
7. Extended the options that is used to specify grid spacing (usually -I xinc/yinc) to allow for specifying nx/ny instead (by appending +). Also, append ! to adjust the range so it fits exactly the given increment [by default the range is kept fixed and sloppy increments are adjusted accordingly]. Append ekin for increments in meter, km, miles or nautical miles, respectively. These increments are converted to degrees longitude (at the middle latitude) and degrees latitude.
8. The polar projection -Jp now takes an optional suffix r that reverses the radial coordinates (useful when is elevation as used by sky plots.)
9. The misc supplement has two new items: ps2raster uses ghostscript to fascilitate the rasterization of PostScript files, while nc2xy allows extraction of data columns from COARDS-compliant netCDF files.
10. The mgd77 supplement has two new items: mgd77convert translates between different MGD77 formats (including a new netCDF-based format), while mgd77manage assists in the management of trackline data sets.
11. We now have improved PDF layout and navigation (thanks to Misha Tchernychev).
12. The HTML versions of all manual pages are now generated with groff, and has active links for GMT Default parameters as they are references in the documentation.

Many programs or options have received minor updates and new features, such as

-b
  : Ability to specify byte-swapping for native binary input and output tables by using upper case SD. This is useful if you have binary tables created on a little-endian machine (e.g., Linux PC) and need to read them on a big-endian machine (e.g., most RISC-chip machines from Sun, HP, Apple).
filter1d.c
  : Allow NaNs in all but the ``independent data'' column.
grdcontour.c
  : Label option +ap[ud] for always having labels be readable up or down hills.
gmtconvert.c
  : New -N option suppresses output records when all fields are NaNs.
gmtmath.c
  : Added TN function for evaluating Chebyshev polynomials; new constant Tn was added to easily select normalized T (gives coordinates from -1 to + 1 suitable for evaluating Legendre and Chebyshev polynomials). Finally, we added CORRCOEFF for calculation of correlation coefficients, and -I to reverse the output by printing the last row first.
grd2cpt.c
  : New option -D sets the back- and foreground colors to the colors at the limits of the cpt file.
grd2xyz.c
  : Added -E for ESRI interchange ASCII grid dump.
grdfilter.c
  : Geographic boundary conditions are now in effect if -D4 is selected.
grdgradient.c
  : Added option -E for Lambertian or Peuckeer illumination.
grdmath.c
  : Allow -bi to be used with input files for commands PDIST, LDIST, and INSIDE. When spherical calculations are selected we now use the ELLIPSOID setting to determine if distance calculations should be along geodesics or great circles. Also added TN function for evaluating Chebyshev polynomials; new constants Xn and Yn was added to easily select normalized X and Y. Finally, we added CORRCOEFF for calculation of correlation coefficients.
grdraster.c
  : Optionally select a data set by giving a text pattern instead of data ID number. This makes it easier to specify a certain data set (i.e., ``ETOPO2'') than having to remember its arbitrary numerical ID. Also, native grids with GMT headers can also be placed in the database by appending H nbytes to the corresponding grdraster.info entry, where nbytes is the size of the header that should be skipped (use 892 for GMT headers).
makecpt.c
  : New option -D sets the back- and foreground colors to the colors at the limits of the cpt file.
mapproject.c
  : -L now outputs both the minimum distance and the coordinates of the nearest point on the line.
pscoast.c
  : Added -Z for 3-D map z-level (as in psbasemap and others).
pshistogram.c
  : New option -T col lets user select any column to be used, starting with 0 (first). The old -2 option is retired (but remains accessible for backwards compatibility).
psimage.c
  : Now support inclusion of EPS images.
pslegend.c
  : Added layout option B for inserting color bars via psscale.
psscale.c
  : Now supports an optional ;label at end of each line in cpt files. If present this label will replace the default annotations when option -L is used.
psxyz.c
  : Added -Q to disable sorting of points based on distance.
sample1d.c
  : Allow NaNs in all but the ``independent data'' column.
xyz2grd.c
  : Added -E for ESRI interchange ASCII grid digest.

Inevitably, when new features are added, new bugs come along with them. Below is a list of problems that we have identified and corrected in the current release:

install_gmt
  : No longer test netcdf installation since that can fail even when install was successful [e.g., under Mac OS X Tiger].
gmt.h
  : `GMT_swab4` used `unsigned long` instead of `unsigned int` which could cause 64-bit problems.
gmt_time_system.h
  : Fixed MJD offsets by subtracting 10 days.
gmt_calclock.c
  : time to hr,min,sec was vulnerable to round-off when optimized. Also, hh:mm data (without trailing :ss) would loose the minutes (hh:mm:ss was OK).
gmt_grdio.c
  : Bug in scale/offset for grdblend's row-by-row i/o.
gmt_init.c
  : Would eat number with leading plus sign without checking if it actually was a +gmtdefaults file instruction; thus gmtmath could not see numbers such as +13.5. Command line argument -BASEMAP_FRAME_RGB=color was not passed through to tick-, grid- and annotation-properties. `GMT_end` now frees memory used for hashing. Did not use custom ellipsoid to set DEG2M parameter so we got large errors for planets with significantly different radii.
gmt_io.c
  : Bug in reading yyyy[/]jjj data fixed. `GMT_lines_init` had trouble if 2000 segments had no data at all. It also allocated 2000 points for each segment but never deallocated the unused portions, thus running up memory fast. `GMT_write_segmentheader` wrote nothing if input was binary and output is ASCII. Fixed a few memory leaks.
gmt_map.c
  : Azimuth to angle calculation for linear projections now properly handle different scales in x and y. The calculation was also vulnerable to bad wrap-around, giving strange directions for vectors in psxy. Geodesic distance calculation could get wrong quadrant.
gmt_plot.c
  : 360° polar basemaps could lack outline. Direction for map roses were inaccurate. Circle and - boundaries did not allocate enough memory for arrays. Would plot both -180 and +180 annotations for periodic maps.
gmt_shore.c
  : Must explicitly close polygons since inside/outside test in other programs expects it.
gmt_support.c
  : Trouble extracting subregions of grid with east = 0. Cartesian LDIST failed when mininum distance was requested (only done via grdmath). Color names got truncated to 16 characters. Improved workings of `GMT_sample_cpt` in support of makecpt. Fixed more memory leaks. Bad LF/CR removal for coastline.conf dir.
filter1d.c
  : -Ff with even number of coefficients sometimes skip a coefficient.
gmtconvert.c
  : Missed first multisegment output header if input file was ASCII.
gmtmath.c
  : No longer have to say -Ca if there is only one input column. Did not understand date T clock as command line data.
gmtselect.c
  : If -M is on and a portion of a segment is skipped, we must reissue the multisegment header when segment resumes. Now handles both Cartesian and spherical polygons correctly.
grd2xyz.c
  : Sloppy -R resulted in bad x,y values and sometimes allocation error.
grdfilter.c
  : Convolution filters now use correct area normalization.
grdgradient.c
  : If -M is used with grids that include poles, ignore the poles when normalizing the slopes.
grdimage.c
  : Cannot use -R to extract subset when -J is oblique. Reverse log-axes did not work.
grdmask.c
  : Now handles both Cartesian and spherical correctly.
grdmath.c
  : Wrong sign in D2DY2, and bogus value at y = ymin. Now handles both Cartesian and spherical polygons correctly. Constants given on command line can now be absolute time, geographic coordinates, or regular floating-point numbers.
grdtrack.c
  : Would fail to skip first two columns for ASCII input if dd:mm:ss format was used.
grdview.c
  : Cannot use -R to extract subset when -J is oblique.
grdvolume.c
  : -C low/high/delta did not check for low < high, etc.
pscoast.c
  : Recursive painting could get tricked when boundaries were curved.
pslegend.c
  : Did not pass +gmtdefaults and -PAR=val onto system calls.
psscale.c
  : Vertical annotations w/custom D_FORMAT were not aligned. Now uses more optimal means to display the color bar, leading to smaller PostScript files. -E did not flip sides when a negative width was used.
psxy.c
  : -Sp is now a true point, but can also take an optional size. Pentagon symbol had wrong normalization scale. If a fixed symbol size was given in -S, with the symbol type supplied from file, we would not scale symbols correctly if upper case symbols were given.
psxyz.c
  : Wrong index used in assigning color from cpt and in updating vector lengths. If a fixed symbol size was given in -S, with the symbol type supplied from file, we would not scale symbols correctly if upper case symbols were given
spectrum1d.c
  : Bugs in error expressions for admittance, gain, and phase have been corrected.
x2sys & mgd77
  : Made DOS-format (CR/LF) tolerant. Both supplements are now undergoing rapid development.

Next: 1.1.6 Overview of GMT Up: 1.1 What is new Previous: 1.1.4 Overview of GMT Contents Index