next up previous contents index
Next: 1.1.7 Overview of GMT Up: 1.1 What is new Previous: 1.1.5 Overview of GMT   Contents   Index

1.1.6 Overview of GMT 4.5.0 [July-15, 2009]

This is another significant update of the official distribution and hence it has a mix of bug fixes and program enhancements. We have added a new supplement (sph) which offers interpolation, triangulation (Delaunay and Voronoi), and distance calculations on a spherical surface. The hard work is done by the original effort of Robert Renka who developed the Fortran-77 SSRFPACK and STRIPACK libraries; these are here supplied via a f2c-assisted translation. The imgsrc supplement has a new Bourne script img2google, which simplifies making Google Earth tiles from Sandwell and Smith bathymetry. The mgd77 supplement has a new program mgd77magref, which is used to evaluate either the CM4 comprehensive geomagnetic model, a more sophisticated alternative to IGRF, or the IGRF. The misc supplement has received two new tools (gmt2kml and kml2gmt) that simplify the presentation of GMT data in Google Earth, and one (dimfilter) that offers directional spatial filtering of grids. The x2sys supplement has a new tool (x2sys_merge) to merge updated COEs table into a main COE table database. Finally, ps2raster.c has evolved further and can now be used to create simple KML files for Google Earth.

A major new enhancement is the global option -g, which is used to determine if excessive spacing between data points (``gaps'', to be defined in a variety of ways) should be used to segment an otherwise continuous line. We expect to enable -g in several programs during the next revision; at the moment it is available in gmtconvert, mapproject, psxy and psxyz. Given that all the lower-case GMT options deal with low-level data i/o settings we have decided to rename the -M option (which controls the presence of multiple segment headers) to -m; this allows us to promote this ubiquitous option to global status (i.e., has the same meaning in all GMT programs). Use of -M will remain valid for the rest of GMT 4.x but results in a warning about the new usage. Related to this is the introduction of a new parameter (NAN_RECORDS) that determines if NaNs in key columns (such as longitude, latitude) should constitute a line break or bad data to be skipped.

We have revised how ellipsoids are specified. When importing an ellipsoid file, we allow a,b,f as ellipsoid parameters, where b or f could both be zero. If file does not exist, attempt to read name as a[/[b=$\vert$f=]f], meaning semi-major axis, b=semi-minor axis, f = flattening, or inverse flattening. We have also added parameters for the TOPEX ellipsoid and for the Moon and planets (IAU2000).

This release of GMT coincides with the release 2.0 of GSHHS, the coastline data used by GMT. In addition to general improvements to the data, we have expanded the -A option that controls the limits on what features to extract. New modifiers allow users to exclude ``river-lakes'' and any feature whose area is less than a fraction of the original full resolution feature.

Finally, our configure script continues to evolve and now better supports installation on 64-bit systems and can automatically detect if and where netCDF exists on your system.

Here is the list of bug corrections:

gmt_customio.c
: In GMT_ras_read_grd_info, wrong size was passed to fread.
gmt_grdio.c
: Fixed bug in GMT_grd_setregion: longitudes were limited inward instead of outward. Caused white-space left and right in grdimage.
gmt_init.c
: No longer remove supposedly empty .gmtcommands4 file. Could have been written to by piped GMT command. Now create/write only when new matter is to be written.
gmt_io.c
: When only -mi is set there should be no multisegment headers on output. yet there was no if-test to check for that.
gmt_map.c
: Fixed serious bug in GMT_az_backaz_flatearth: incorrectly converted degrees to radians. Fixed bug in GMT_get_rotate_pole: called GMT_rotate_pole_forward with radians instead of degrees. Incorrectly attempted to free array only used when antialias is on. Fixed inability to determine projection pole when central meridian and western boundary are the same (Albers, Conic equidistant). Incorrectly used central longitude to set default midpoint for 3-D maps using the -E...+ mechanism when data were not geographic. Numerous bug fixes related to UTM: Did not report bad zone for $<$ A or $>$ Z; Zones A+B reached till 84S instead of 80S; Zone J wrongly produced value for Zone K; Zones U+W were not recognized; Now also equates Zone O to Zone P (already equated Zone I to J).
gmt_mgg_header2.c
: There was no support for (a) floating point grids and (b) swapping happened based on machine byte order and not based on actual file byte order.
gmt_nc.c
: Argument [layer] was not stripped from varname and would end up in output grid. Set zmin/zmax to NaN when info not in header.
gmt_plot.c
: Crashed when using time labels in 3D plot.
gmt_proj.c
: Fixed bug in longitude computation when standard parallel is on Southern Hemisphere.
gmt_support.c
: Exceeded array bounds in GMT_read_cpt for hsv conversion. The 3-D view -E option used in many programs (such as psxyz) could not handle exponential notations. Determining of a color scale is continuous should be based on HSV (not RGB) values when read as HSV. The modifier :radius[unit] to the -G option in grdcontour for the placement of contour labels is now +rradius[unit] since the colon interfered with ddd:mm:ss coordinates. Given -I601+/601+ the y-increment was not processed correctly. Fixed bug when x_inc in km, m, etc, the value was ignored (always 1).
blockmean.c
: Gave bogus usage about number of input columns when -E is set but -E only affects output. Same for blockmedian.c and blockmode.c.
gmtconvert.c
: With -S, did not report the number of output segments.
gmtmath.c
: Tried to free memory that was not allocated.
grdfilter.c
: Toggle -T was not processed correctly if -Rgridfile was given.
grdgradient.c
: For geographic grids, make sure N and S pole only has a single value on output.
greenspline.c
: Calculation of nz layers was off by one, leaving out the penultimate layer.
grdimage.c
: We now make sure the NaN color is unique when -Q is used.
grdmath.c
: The PDIST operator did not handle binary input files (as LDIST does).
ps2raster.c
: Exceeded memory allocation for out_file. Now in static memory.
psclip.c
: Produce at least ``S V'' when the clippath is empty.
pscoast.c
: Produce at least ``S V'' when the clippath is empty.
psscale.c
: When using -A with a vertical color bar, the annotations where left- in stead of right-aligned. When using -A on horizontal bar, the last tick mark would not appear.
gshhs/gshhs.c
: Checked wrong variable to test if a file was given on the command line.
meca/util_meca.c
: Needed to convert the output from d_atan2 to degrees.
mgd77/mgd77.c
: Was failing to read Windows terminated ASCII files. Fixed bug in MGD77_igrf10syn routine (mistake done while cleaning the f2c version) that resulted in altitude always being on Earth surface when geocentric coordinates were used. Do not use any GMT i/o-functions to access ascii files on creation/writing so that it can work under Windows as well. Converting files from netCDF to MGD77 where time = NaN gave junk records.
mgd77/mgd77list.c
: Used GMT_LONG in memset for an array allocated as int. Used wrong time for IGRF calculation; worst case situation was off by 1 year.
mgd77/mgd77manage.c
: The -D option would remove original attributes. Now both original and revised attributes are carried in memory. This problem also affected mgd77convert -FC if used on a file after mgd77manage -D had been run. Used wrong time for IGRF calculation; worst case situation was off by 1 year. Now uses GMT_read_img to handle *.img files; earlier the inline code would fail on the new extended img files.
mgd77/mgd77sniffer.c
: Did not reset the E77 structure between cruises.
misc/gmtstitch.c
: Did not read standard input if no files were given. Now honors -V properly.
x2sys/x2sys.c
: Wrong array argument passed for correction aux values.
x2sys/x2sys_cross.c
: Removed the -F option which was not honored anyway.
x2sys/x2sys_init.c
: Now properly copies the *.def file to the TAG dir.
x2sys/x2sys_datalist.c
: Only ASCII output had corrections (-L) applied.
x2sys/x2sys_put.c
: Fixed -D option (was falling in a endless loop).

Here is a list of the recent enhancement to various programs:

  1. gmt_init.c has added support for enhanced -E option for 3-D perspective views which allows the specification of a fixed point (needed for new Default setting NAN_RECORDS = skip$\vert$pass [skip]. If ``pass'' we treat let the programs handle the NaNs; for some programs the NaNs in input record will act as indicators of data gaps for continuous lines. If ``skip'' we report them as bad records. In both cases the records are skipped. Allow negative integer interval (-n) for annotating log axis; this means annotate every n'th power of 10.
  2. gmt_nc.c will properly handle netCDF that have LatLon = 0, 1: flip x and y.
  3. gmt_shore.c Added support for the +ppercent modifier to limit features whose area is less percent of the corresponding full-resolution polygon.
  4. gmt_support.c enables GMT_intpol to handle NaNs by treating them as segment boundaries. Rely on Shewchuk's triangle function to get Voronoi output.
  5. blockmedian.c now returns the quantile(x), quantile(y) location when -T is used. Added -Eb to get box-and-whisker output (0. 25, 50, 75, and 100% quantiles).
  6. gmtconvert.c now allows -S$\sim$pattern which reports segments whose header does NOT contain pattern. Should pattern actually start with $\sim$ we escape it with $\backslash\sim$pattern.
  7. gmtselect.c can now handle dateTclock strings in -Z when used with data whose 3rd column contains time.
  8. gmtmath.c added MOD function (remainder after floored division, Knuth style). This is in contrast to FMOD which gives the remainder after (horror) truncated division.
  9. gmtselect.c Same upgrade to -A option as pscoast.
  10. grdcut.c has new option -Z which is used to determine a rectangular subregion so that the rejected area have values entirely outside the given z-range.
  11. grdfft.c now also has a Butterworth band-pass filter.
  12. grdinfo.c will now use plain text (and not code) to report the file format used. Add option -L0 to actually scan data to determine zmin and zmax.
  13. grdlandmask.c Same upgrade to -A option as pscoast.
  14. grdmath.c added MOD function (remainder after floored division).
  15. ps2raster.c takes -W+k to create a simple KML file for Google Earth. Several other modifiers help to populate the KML file.
  16. psclip.c has a new option -T that turns on map region clipping without any input data files; it is a shorthand for -N /dev/null.
  17. pscoast.c has enhanced -C[l$\vert$r/]it fill offers to paint river-lakes separately from lakes. The -A option can be used to exclude river-lakes or lakes for level 2. -W now allows different pens for the 4 levels of shorelines.
  18. pglegend.c allows S record not to have text. Until now, when left empty would use whatever text was set to in previous record. The $>$ record no longer needed before T; T, L, S, H alignment harmonized; I, M, B spacing improved; -B option added.
  19. psxy.c added -g to break lines into segments based on gap criteria; added -T to be a shorthand for reading no input, where we used /dev/null before.
  20. psxyz.c added -g to break lines into segments based on gap criteria.
  21. triangulate.c has new option -Q to generate Voronoi polygon edges.
  22. mgd77/mgd77convert.c allows users to give file.ext on command line.
  23. mgd77/mgd77list.c can now take -DA and -DB which, in the presence of time = NaN, will not output such records [-Da$\vert$b will]. Also clarified the ranges implied by -D and -S. Added -Fytime which gives decimal absolute year for time output. Modifier -At added which attempts to create fake cruise times based on header information and distance along track.
  24. mgd77/mgd77manage.c added -AE to ignore the verification status and process e77 anyway.
  25. mgd77/mgd77path.c added -P- to just list the IDs and not the full paths.
  26. mgd77/mgd77track.c added -Gt$\vert$dgap to recognize gaps in tracks based on distance or time between successive points.
  27. mgg/mgd77togmt.c added new -T and -W options to store total field and account for the magnetometer tow distance. Also tries to get info from header file.
  28. misc/gmtstitch.c has enhanced -T option to eliminate connections when the 2nd closest pair is too close. Also added -C option to simply separate the open from the closed polygons (no stitching). Added -L option to write out segment-link information.
  29. x2sys/x2sys_list.c can now accept list of weights for each track and output the composite weight for each crossover.
  30. x2sys/x2sys_solve.c has option -W means an extra column with crossover weight.


next up previous contents index
Next: 1.1.7 Overview of GMT Up: 1.1 What is new Previous: 1.1.5 Overview of GMT   Contents   Index
Paul Wessel 2010-11-01