Home | Back
# $Id: cb44812164031ac1042d5739e45196bafe5f2029 $

A reverse chronological list of changes to GeographicLib

For more information, see

    http://geographiclib.sourceforge.net/

The current version of the library is 1.20.

Changes between 1.20 (released 2012-03-23) and 1.19 versions:

  * cmake tweaks:
    + improve find_package's matching of compiler versions;
    + CMAKE_INSTALL_PREFIX set from CMAKE_PREFIX_PATH if available;
    + add "x64" to the package name for the 64-bit binary installer;
    + fix cmake warning with Visual Studio Express.

  * Fix SphericalEngine to deal with aggessive iterator checking by
    Visual Studio.

  * Fix transcription BUG is Geodesic.js.

Changes between 1.19 (released 2012-03-13) and 1.18 versions:

  * Slight improvement in Geodesic::Inverse for very short lines.

  * Fix argument checking tests in MGRS::Forward.

  * Add --comment-delimiter and --line-separator options to the utility
    programs.

  * Add installer for 64-bit Windows; the compiled Matlab interface is
    supplied with the Windows 64-bit installer only.

Changes between 1.18 (released 2012-02-18) and 1.17 versions:

  * Improve documentation on configuration with cmake.

  * cmake's find_package ensures that the compiler versions match on Windows.

  * Improve documentation on compiling Matlab interface.

  * Binary installer for Windows installs under C:/pkg-vc10 by default.

Changes between 1.17 (released 2012-01-21) and 1.16 versions:

  * Work around optimization BUG in Geodesic::Inverse with g++ version
    4.4.0 (mingw).

  * Fix BUG in argument checking with OSGB::GridReference.

  * Fix missing include file in SphericalHarmonic2.

  * Add simple examples of usage for each class.

  * Add internal documenation to the cmake configuration files.

Changes between 1.16 (released 2011-12-07) and 1.15 versions:

  * Add calculation of the earth's gravitational field:
    + add NormalGravity GravityModel and GravityCircle classes;
    + add command line utility Gravity;
    + add Gravity models;
    + add Constants::WGS84_GM(), Constants::WGS84_omega(), and similarly
      for GRS80.

  * Build uses GEOGRAPHICLIB_DATA to specify a common parent directory
    for geoid, gravity, and magnetic data (instead of
    GEOGRAPHICLIB_GEOID_PATH, etc.); similarly, GeoidEval, Gravity, and
    MagneticField, look at the environment variable GEOGRAPHICLIB_DATA
    to locate the data.

  * Spherical harmonic software changes:
    + capitalize enums SphericalHarmonic::FULL and
      SphericalHarmonic::SCHMIDT (the lower case names are retained but
      deprecated);
    + optimize the sum by using a static table of square roots which is
      updated by SphericalEngine::RootTable;
    + avoid overflow for high degree models.

  * Magnetic software fixes:
    + fix documentation BUG in MagneticModel::Circle;
    + make MagneticModel constructor explicit;
    + provide default MagneticCircle constructor;
    + add additional inspector functions to MagneticCircle;
    + add -c option to MagneticField;
    + default height to zero in MagneticField.

Changes between 1.15 (released 2011-11-08) and 1.14 versions:

  * Add calculation of the earth's magnetic field:
    + add MagneticModel and MagneticCircle classes;
    + add command line utility MagneticField;
    + add Magnetic models;
    + add Installing the magnetic field models;
    + add The format of the magnetic model files;
    + add classes SphericalEngine, CircularEngine, SphericalHarmonic,
      SphericalHarmonic1, and SphericalHarmonic2. which sum spherical
      harmonic series.

  * Add Utility class to support I/O and date manipulation.

  * Cmake configuration includes a _d suffix on the library built in
    debug mode.

  * For the Python package, include manifest and readme files; don't
    install setup.py for non-Windows systems.

  * Include Doxygen tag file in distribution as doc/html/Geographic.tag.

Changes between 1.14 (released 2011-09-30) and 1.13 versions:

  * Ensure that geographiclib-config.cmake is relocatable.

  * Allow more unicode symbols to be used in DMS::Decode.

  * Modify GeoidEval so that it can be used to convert the height datum
    for LIDAR data.

  * Modest speed-up of Geodesic::Inverse.

  * Changes in python interface:
    + FIX BUG in transcription of Geodesic::Inverse;
    + include setup.py for easy installation;
    + python only distribution is available at
      http://pypi.python.org/pypi/geographiclib

  * Supply a minimal Qt qmake project file for library
    src/Geographic.pro.

Changes between 1.13 (released 2011-08-13) and 1.12 versions:

  * Changes to I/O:
    + allow : (colon) to be used as a DMS separator in DMS::Decode;
    + also accept Unicode symbols for degrees, minutes, and seconds
      (coded as UTF-8);
    + provide optional swaplatlong argument to various DMS and GeoCoords
      functions to make longitude precede latitude;
    + GeoConvert now has a -w option to make longitude precede latitude
      on input and output;
    + include a Javascript version of DMS.

  * Slight improvement in starting guess for solution of geographic
    latitude in terms of conformal latitude in TransverseMercator,
    TransverseMercatorExact, and LambertConformalConic.

  * For most classes, get rid of const member variables so that the
    default copy assignment works.

  * Put Math and Accumulator in their own header files.

  * Remove unused "fast" GeographicLib::Accumulator method.

  * Reorganize the Python interface.

  * Withdraw some deprecated routines.

  * cmake changes:
    + include FindGeographic.cmake in distribution;
    + building with cmake creates and installs
      geographiclib-config.cmake;
    + better support for building a shared library under Windows.

Changes between 1.12 (released 2011-07-21) and 1.11 versions:

  * Change license to MIT/X11.

  * Add GeographicLib::PolygonArea class and equivalent Matlab function.

  * Provide Javascript and Python implementations of geodesic routines.

  * Fix Windows installer to include runtime dlls for Matlab.

  * Fix (innocuous) unassigned variable in Geodesic::GenInverse.

  * Geodesic routines in Matlab return a12 as first column of aux return
    value (incompatible change).

  * A couple of code changes to enable compilation with Visual Studio
    2003.

Changes between 1.11 (released 2011-06-27) and 1.10 versions:

  * Changes to Planimeter:
    + add -l flag to Planimeter for polyline calculations;
    + trim precision of area to 3 decimal places;
    + FIX BUG with pole crossing edges (due to compiler optimization).

  * Geod no longer reports the reduced length by default; however the -f
    flag still reports this and in addition gives the geodesic scales
    and the geodesic area.

  * FIX BUGS (compiler-specific) in inverse geodesic calculations.

  * FIX BUG: accommodate tellg() returning -1 at end of string.

  * Change way flattening of the ellipsoid is specified:
    + constructors take f argument which is taken to be the flattening
      if f < 1 and the inverse flattening otherwise (this is a
      compatible change for spheres and oblate ellipsoids, but it is an
      INCOMPATIBLE change for prolate ellipsoids);
    + the -e arguments to the Utility Programs are handled similarly; in
      addition, simple fractions, e.g., 1/297, can be used for the
      flattening;
    + introduce Constants::WGS84_f() for the WGS84 flattening (and
      deprecate Constants::WGS84_r() for the inverse flattening);
    + most classes have a Flattening() member function;
    + InverseFlattening() has been deprecated (and now returns inf for a
      sphere, instead of 0).

Changes between 1.10 (released 2011-06-11) and 1.9 versions:

  * Improvements to Matlab/Octave interface:
     + add {geocentric,localcartesian}{forward,reverse};
     + make geographiclibinterface more general;
     + install the source for the interface;
     + cmake compiles the interface if ENABLE_MATLAB=ON;
     + include compiled interface with Windows binary installer.

  * Fix various configuration issues
     + autoconf did not install Config.h;
     + cmake installed in man/man1 instead of share/man/man1;
     + cmake did not set the rpath on the tools.

Changes between 1.9 (released 2011-05-28) and 1.8 versions:

  * FIX BUG in area returned by Planimeter for pole encircling polygons.

  * FIX BUG in error message reported when DMS::Decode reads the string
    "5d.".

  * FIX BUG in AlbersEqualArea::Reverse (lon0 not being used).

  * Ensure that all exceptions thrown in the Utility Programs are
    caught.

  * Avoid using catch within GeographicLib::DMS.

  * Move Accumulator class from Planimeter.cpp to Constants.hpp.

  * Add Math::sq<T>.

  * Simplify Installing the geoid datasets
    + add geographiclib-get-geoids for Unix-like systems;
    + add installers for Windows.

  * Provide cmake support:
    + build binary installer for Windows;
    + include regression tests;
    + add --input-string, --input-file, --output-file options to the
      Utility Programs to support tests.

  * Rename utility EquidistantTest as GeodesicProj and
    TransverseMercatorTest as TransverseMercatorProj.

  * Add ConicProj.

  * Reverse the initial sense of the -s option for Planimeter.

  * Migrate source from subversion to git.

Changes between 1.8 (released 2011-02-22) and 1.7 versions:

  * Optionally return rotation matrix from GeographicLib::Geocentric and
    GeographicLib::LocalCartesian.

  * For the Utility Programs, supply man pages, -h prints the synopsis,
    --help prints the man page, --version prints the version.

  * Use accurate summation in Planimeter.

  * Add 64-bit targets for Visual Studio 2010.

  * Use templates for defining math functions and some constants.

  * GeographicLib::Geoid updates
    + Add GeographicLib::Geoid::DefaultGeoidPath and
      GeographicLib::Geoid::DefaultGeoidName;
    + GeoidEval uses environment variable GEOID_NAME as the default
      geoid;
    + Add --msltohae and --haetomsl as GeoidEval options (and don't
      document the single hyphen versions).

  * Remove documentation that duplicates papers on transverse Mercator
    and geodesics.

Changes between 1.7 (released 2010-12-21) and 1.6 versions:

  * FIX BUG in scale returned by GeographicLib::LambertConformalConic::Reverse.

  * Add GeographicLib::AlbersEqualArea projection.

  * Library created by Visual Studio is Geographic.lib instead of
    GeographicLib.lib (compatible with makefiles).

  * Make classes NaN aware.

  * Use cell arrays for MGRS strings in Matlab.

  * Add solution/project files for Visual Studio 2010 (32-bit only).

  * Use C++11 static_assert and math functions, if available.

Change between 1.6 (released 2010-11-23) and 1.5 versions:

  * FIX BUG introduced in GeographicLib::Geoid in version 1.5 (found by
    Dave Edwards).

Changes between 1.5 (released 2010-11-19) and 1.4 versions:

  * Improve area calculations for small polygons.

  * Add -s and -r flags to Planimeter utility.

  * Improve the accuracy of GeographicLib::LambertConformalConic using
    divided differences.

  * FIX BUG in meridian convergence returned by
    LambertConformalConic::Forward.

  * Add optional threadsafe parameter to GeographicLib::Geoid
    constructor.  WARNING: This changes may break binary compatibility
    with previous versions of GeographicLib.  However, the library is
    source compatible.

  * Add GeographicLib::OSGB.

  * Matlab and Octave interfaces to GeographicLib::UTMUPS,
    GeographicLib::MGRS, GeographicLib::Geoid, GeographicLib::Geodesic
    provided.

  * Minor changes
    + explicitly turn on optimization in Visual Studio 2008 projects;
    + add missing dependencies in some Makefiles;
    + move pi() and degree() from GeographicLib::Constants to
      GeographicLib::Math;
    + introduce GeographicLib::Math::extended type to aid testing;
    + add GeographicLib::Math::epi() and GeographicLib::Math::edegree().
    + fixes to compile under cygwin;
    + tweak expression used to find latitude from conformal latitude.

Changes between 1.4 (released 2010-09-12) and 1.3 versions:

  * Changes to GeographicLib::Geodesic and GeographicLib::GeodesicLine:
    + FIX BUG in Geodesic::Inverse with prolate ellipsoids;
    + add area computations to Geodesic::Direct and Geodesic::Inverse;
    + add geodesic areas to geodesic test set;
    + make GeodesicLine constructor public;
    + change longitude series in Geodesic into Helmert-like form;
    + ensure that equatorial geodesics have cos(alpha0) = 0 identically;
    + generalize interface for Geodesic and GeodesicLine;
    + split GeodesicLine and Geodesic into different files;
    + signal convergence failure in Geodesic::Inverse with NaNs;
    + deprecate one function in Geodesic and two functions in
      GeodesicLine;
    + deprecate -n option for Geod.
    WARNING: These changes may break binary compatibility with previous
    versions of GeographicLib.  However, the library is source
    compatible (with the proviso that GeographicLib/GeodesicLine.hpp may
    now need to be included).

  * Add the Planimeter utility for computing the areas of
    geodesic polygons.

  * Improve iterative solution of GeographicLib::Gnomonic::Reverse.

  * Add GeographicLib::Geoid::ConvertHeight.

  * Add -msltohae, -haetomsl, and -z options to \ref geoideval.

  * Constructors check that minor radius is positive.

  * Add overloaded Forward and Reverse functions to the projection
    classes which don't return the convergence (or azimuth) and scale.

  * Document function parameters and return values consistently.

Changes between 1.3 (released 2010-07-21) and 1.2 versions:

  * Add GeographicLib::Gnomonic, the ellipsoid generalization of the
    gnomonic projection.

  * Add -g and -e options to Equidistanttest.

  * Use fixed-point notation for output from Cartconvert,
    Equidistanttest, Transversemercatortest.

  * PolarStereographic:
    + Improved conversion to conformal coordinates;
    + Fix bug with scale at opposite pole;
    + Complain if latitude out of range in SetScale.

  * Add GeographicLib::Math::NaN().

  * Add long double version of hypot for Windows.

  * Add EllipticFunction::E(real).

  * Update references to Geotrans in MGRS documentation.

  * Speed up tmseries.mac.

Changes between 1.2 (released 2010-05-21) and 1.1 versions:

  * FIX BUGS in GeographicLib::Geodesic,
    + wrong azimuth returned by Direct if point 2 is on a pole;
    + Inverse sometimes fails with very close points.

  * Improve calculation of scale in GeographicLib::CassiniSoldner,
    + add GeodesicLine::Scale, GeodesicLine::EquatorialAzimuth, and
      GeodesicLine::EquatorialArc;
    + break friend connection between CassiniSoldner and Geodesic.

  * Add DMS::DecodeAngle and DMS::DecodeAzimuth. Extend DMS::Decode and
    DMS::Encode to deal with distances.

  * Code and documentation changes in Geodesic and Geocentric for
    consistency with the forthcoming paper on geodesics.

  * Increase order of series using in Geodesic to 6 (full accuracy
    maintained for ellipsoid flattening < 0.01).

  * Macro __NO_LONG_DOUBLE_MATH to disable use of long double.

  * Correct declaration of Math::isfinite to return a bool.

  * Changes in the Utility Programs,
    + improve error reporting when parsing command line arguments;
    + accept latitudes and longitudes in decimal degrees or degrees,
      minutes, and seconds, with optional hemisphere designators;
    + GeoConvert -z accepts zone or zone+hemisphere;
    + GeoidEval accepts any of the input formats used by GeoConvert;
    + CartConvert allows the ellipsoid to be specified with -e.

Changes between 1.1 (released 2010-02-09) and 1.0 versions:

  * FIX BUG (introduced in 2009-03) in EllipticFunction::E(sn,cn,dn).

  * Increase accuracy of scale calculation in TransverseMercator and
    TransverseMercatorExact.

  * Code and documentation changes for consistency with arXiv:1002.1417

Changes between 1.0 (released 2010-01-07) and 2009-11 versions:

  * Add autoconf configuration files.

  * BUG FIX: Improve initial guess for Newton's method in
    PolarStereographic::Reverse.  (Previously this failed to converge
    when the co-latitude exceeded about 130 deg.)

  * Constructors for TransverseMercator, TransverseMercatorExact,
    PolarStereographic, Geocentric, and Geodesic now check for obvious
    problems with their arguments and throw an exception if necessary.

  * Most classes now include inspector functions such as MajorRadius()
    so that you can determine how instances were constructed.

  * Add GeographicLib::LambertConformalConic class.

  * Add GeographicLib::PolarStereographic::SetScale to allow the
    latitude of true scale to be specified.

  * Add solution and project files for Visual Studio 2008.

  * Add GeographicLib::GeographicErr for exceptions.

  * GeographicLib::Geoid changes:
    + BUG FIX: fix typo in GeographicLib::Geoid::Cache which could cause
      a segmentation fault in some cases when the cached area spanned
      the prime meridian.
    + Include sufficient edge data to allow heights to be returned for
      cached area without disk reads;
    + Add inspector functions to query the extent of the cache.

Changes between 2009-11 and 2009-10 versions:

  * Allow specification of "closest UTM zone" in GeographicLib::UTMUPS
    and GeoConvert (via -t option).

  * Utilities now complain is there are too many tokens on input lines.

  * Include real-to-real versions of GeographicLib::DMS::Decode and
    GeographicLib::DMS::Encode.

  * More house-cleaning changes:
    + Ensure that functions which return results through reference
      arguments do not alter the arguments when an exception is thrown.
    + Improve accuracy of GeographicLib::MGRS::Forward.
    + Include more information in some error messages.
    + Improve accuracy of inverse hyperbolic functions.
    + Fix the way GeographicLib::Math functions handle different
      precisions.

Changes between 2009-10 and 2009-09 versions:

  * Change web site to http://geographiclib.sourceforge.net

  * Several house-cleaning changes:
    + Change from the a flat directory structure to a more easily
      maintained one.
    + Introduce Math class for common mathematical functions (in
      Constants.hpp).
    + Use Math::real as the type for all real quantities.  By default this
      is typedef'ed to double; and the library should be installed this
      way.
    + Eliminate const reference members of AzimuthalEquidistant,
      CassiniSoldner and LocalCartesian so that they may be copied.
    + Make several constructors explicit.  Disallow some constructors.
      Disallow copy constructor/assignment for Geoid.
    + Document least square formulas in Geoid.cpp.
    + Use unsigned long long for files positions of geoid files in Geoid.
    + Introduce optional mgrslimits argument in UTMUPS::Forward and
      UTMUPS::Reverse to enforce stricter MGRS limits on eastings and
      northings.in
    + Add 64-bit targets in Visual Studio project files.

Changes between 2009-09 and 2009-08 versions:

  * Add GeographicLib::Geoid and GeoidEval utility.

Changes between 2009-08 and 2009-07 versions:

  * Add GeographicLib::CassiniSoldner class and EquidistantTest utility.

  * Fix bug in GeographicLib::Geodesic::Inverse where NaNs were
    sometimes returned.

  * INCOMPATIBLE CHANGE: AzimuthalEquidistant now returns the reciprocal
    of the azimuthal scale instead of the reduced length.

  * Add -n option to GeoConvert.

Changes between 2009-07 and 2009-06 versions:

  * Speed up the series inversion code in tmseries.mac and geod.mac.

  * Reference Borkowski in section on Geocentric coordinates.

Changes between 2009-06 and 2009-05 versions:

  * Add routines to decode and encode zone+hemisphere to GeographicLib::UTMUPS.

  * Clean up code in GeographicLib::Geodesic.

Changes between 2009-05 and 2009-04 versions:

  * Improvements to GeographicLib::Geodesic:
    + more economical series expansions,
    + return reduced length (as does the Geod utility),
    + improved calculation of starting point for inverse method,
    + use reduced length to give derivative for Newton's method.

  * Add AzimuthalEquidistant class.

  + Make GeographicLib::Geocentric, GeographicLib::TransverseMercator,
    and GeographicLib::PolarStereographic classes work with prolate
    ellipsoids.

  * CartConvert checks its inputs more carefully.

  * Remove reference to defunct Constants.cpp from GeographicLib.vcproj.

Changes between 2009-04 and 2009-03 versions:

  * Use compile-time constants to select the order of series in
    GeographicLib::TransverseMercator.

  * 2x unroll of Clenshaw summation to avoid data shuffling.

  * Simplification of GeographicLib::EllipticFunction::E.

  * Use STATIC_ASSERT for compile-time checking of constants.

  * Improvements to GeographicLib::Geodesic:
    + compile-time option to change order of series used,
    + post maxima code for generating the series,
    + tune the order of series for double,
    + improvements in the selection of starting points for Newton's
      method,
    + accept and return spherical arc lengths,
    + works with both oblate and prolate spheroids,
    + add -a, -e, -b options to the Geod utility.

Changes between 2009-03 and 2009-02 versions:

  * Add GeographicLib::Geodesic and the Geod utility.

  * Declare when no exceptions are thrown by functions.

  * Minor changes to GeographicLib::DMS class.

  * Use invf = 0 to mean a sphere in constructors to some classes.

  * The makefile creates a library and includes an install target.

  * Rename GeographicLib::ECEF to GeographicLib::Geocentric, ECEFConvert
    to CartConvert.

  * Use inline functions to define constant doubles in Constants.hpp.

Changes between 2009-02 and 2009-01 versions:

  * Fix documentation of constructors (flattening -> inverse
    flattening).

  * Use std versions of math functions.

  * Add ECEF and LocalCartesian classes and ECEFConvert utility.

  * Gather the documentation on the utility programs onto one page.