1984 lines
81 KiB
Plaintext
1984 lines
81 KiB
Plaintext
A reverse chronological list of changes to GeographicLib
|
|
|
|
For more information, see
|
|
|
|
https://geographiclib.sourceforge.io/
|
|
|
|
The current version of the library is 2.1.2
|
|
|
|
Changes between 2.1.2 (released 2022-12-13) and 2.1.1 versions:
|
|
|
|
* Add MGRS::Decode to break an MGRS string into its components.
|
|
|
|
* Add definite integral overload for DST::integral. This is used in
|
|
GeodesicExact.
|
|
|
|
* Add example code examples/AuxLatitude.[hc]pp implementating the
|
|
AuxAngle and AuxLatitude classes. These classes implement the
|
|
methods documented in the paper "On auxiliary latitudes",
|
|
https://arxiv.org/abs/2212.05818. They are *not* part of
|
|
GeographicLib. See Auxiliary latitudes for more details.
|
|
|
|
* Minor cmake issues:
|
|
+ fix cross-compile build on Windows;
|
|
+ check cmake version for "cmake rm -rf";
|
|
+ move cmake_minimum_required to the beginning of the cmake file
|
|
and update minimum version to 3.13.0.
|
|
|
|
Changes between 2.1.1 (released 2022-07-25) and 2.1 versions:
|
|
|
|
* Paper describing algorithms in GeodesicExact class is available at
|
|
https://arxiv.org/abs/2208.00492
|
|
|
|
* The Planimeter utility used to accept polygon vertices as UTM/UPS
|
|
or MGRS coordinates. However, since these are converted to
|
|
latitude and longitude using the WGS84 ellipoid, this convention
|
|
is incompatible with the -e option to specify the ellipsoid. So
|
|
now, you have to provide the --geoconvert-input option to allow
|
|
vertices to be specified in this way.
|
|
|
|
* Fix sign error in DST::refine.
|
|
|
|
* Relax overly strict convergence test for inverse problem in
|
|
Geodesic and GeodesicExact.
|
|
|
|
* Minor:
|
|
+ Use lookup table for selecting number of points for DST in
|
|
GeodesicExact.
|
|
+ Relax one of the test thresholds in geodtest.cpp.
|
|
|
|
Changes between 2.1 (released 2022-06-09) and 2.0 versions:
|
|
|
|
* Improve the accuracy of the area calculations in GeodesicExact
|
|
and the Planimeter utility with the -E option. This now gives
|
|
full double precision accuracy for b/a in [0.01, 100] or f in
|
|
[-99, 0.99]. (Previously the range for full accuracy was b/a in
|
|
[0.5, 2].) The method involves a direct computation of the
|
|
Fourier series for the integrand of area integral which then
|
|
allows the integral to be evaluated.
|
|
|
|
* Add a new class DST for doing discrete sine transforms. This is
|
|
mainly for "internal" use, to compute the area in GeodesicExact.
|
|
Internally, this uses the kissfft package by Mark Borgerding.
|
|
|
|
* Fix various warnings from Visual Studio about arithmetic involving
|
|
enums.
|
|
|
|
* Minor improvement in the logic for the geodesic inverse problem
|
|
to address a slow down that can occur with
|
|
GEOGRAPHICLIB_PRECISION = 5 due to the time it takes to
|
|
calculate, for example, sin(10^(10^8)) accurately.
|
|
|
|
Changes between 2.0 (released 2022-05-06) and 1.52 versions:
|
|
|
|
* Remove non C++ implementations from this package. These are now
|
|
managed as separate packages. See
|
|
https://geographiclib.sourceforge.io/doc/library.html#languages
|
|
|
|
* This allowed the cmake interface to be rationalized:
|
|
+ Replace GEOGRAPHICLIB_LIB_TYPE by BUILD_SHARED_LIBS (a standard
|
|
cmake variable) and BUILD_BOTH_LIBS.
|
|
+ Remove COMMON_INSTALL_PATH and replace with variables to
|
|
specify where various components are to be installed.
|
|
+ GEOGRAPHICLIB_DOCUMENTATION is now BUILD_DOCUMENTATION.
|
|
+ Remove BUILD_NETGEOGRAPHICLIB.
|
|
+ Remove legacy cmake config support (non-namespace).
|
|
+ make exampleprograms does a separate cmake configuration to
|
|
mimic how a user's program might find GeographicLib.
|
|
+ find_package (GeographicLib) now sets and checks the value of
|
|
GEOGRAPHICLIB_PRECISION.
|
|
+ Improve the separation of end-user and maintain cmake code.
|
|
|
|
* More careful treatment of +/-0d and +/-180d.
|
|
+ These behave consistently with taking the limits
|
|
- +/-0 means +/-eps as eps -> 0+
|
|
- +/-180 means +/-(180 - eps) as eps -> 0+
|
|
+ As a consequence, azimuths of +0d and +180d are reckoned to be
|
|
east-going, as far as tracking the longitude with
|
|
Geodesic::LONG_UNROLL and the area goes, while azimuths -0d and
|
|
-180d are reckoned to be west-going.
|
|
+ When computing longitude differences, if lat2 - lat1 = +/-180d
|
|
(mod 360d), then the sign is picked depending on the sign of
|
|
the difference.
|
|
+ The normal range for returned longitudes and azimuths is
|
|
[-180d, 180d].
|
|
|
|
* Programs in directory tests now allow testing to extend beyond
|
|
invocations of the utility programs.
|
|
|
|
* BUG FIXES:
|
|
+ Fixed bug where in the solution of the inverse geodesic problem
|
|
where with lat1 = 0 and lat2 = nan was treated as equatorial.
|
|
+ Fixed roundoff corner case in geodesic area computation (only
|
|
triggered with long double).
|
|
|
|
* Minor changes in code:
|
|
+ Use fmin, fmax, fabs instead of min, max, abs, where appropriate.
|
|
+ Parameterize the conversion units for degrees, minutes, seconds
|
|
as Math::qd, Math::dm, Math::ms.
|
|
+ Ellipsoid::MinorRadius() has be renamed Ellipsoid::PolarRadius().
|
|
+ Remove deprecated functions: XXX::MajorRadius, Utility::val, and
|
|
placeholders (Math::cbrt, etc.) for C++11 math functions.
|
|
+ Can specify the comment character in Utility::ParseLine.
|
|
+ Rename various internal identifiers to avoid reserved names.
|
|
+ Remove unused internal variable in RhumbLine.
|
|
+ The documentation for EllipticFunction specifies restrictions on
|
|
the arguments.
|
|
+ Put GeodesicExactC4.cpp back into GeodesicExact.cpp.
|
|
|
|
* Library file now called libGeographicLib.so, etc., instead of
|
|
libGeographic.so.
|
|
|
|
* The .NET version of GeographicLib has been removed.
|
|
|
|
Changes between 1.52 (released 2021-06-22) and 1.51 versions:
|
|
|
|
* Add MagneticModel::FieldGeocentric and
|
|
MagneticCircle::FieldGeocentric to return the field in geocentric
|
|
coordinates (thanks to Marcelo Banik de Padua).
|
|
|
|
* Document realistic errors for PolygonAreaT and Planimeter.
|
|
|
|
* Geodesic routines: be more aggressive in preventing negative s12
|
|
and m12 for short lines (all languages).
|
|
|
|
* Fix bug in AlbersEqualArea for extreme prolate ellipsoids (plus
|
|
general cleanup in the code).
|
|
|
|
* Thanks to Thomas Warner, a sample of wrapping the C++ library, so
|
|
it's accessible in Excel, is given in wrapper/Excel.
|
|
|
|
* Minor changes
|
|
+ Work around inaccuracies in hypot routines in Visual Studio
|
|
(win32), Python, and JavaScript.
|
|
+ Initialize reference argument to remquo (C++ and C).
|
|
+ Get ready to retire unused _exact in RhumbLine.
|
|
+ Declare RhumbLine copy constructor "= default".
|
|
+ Use C++11 "= delete" idiom to delete copy assignment and copy
|
|
constructors in RhumbLine, Geoid, GravityModel, MagneticModel.
|
|
+ Fix MGRS::Forward to work around aggressive optimization leading to
|
|
incorrect rounding.
|
|
+ Fix plain makefiles, Makefile.mk, so that PREFIX is handled
|
|
properly.
|
|
+ Make cmake's GeographicLib_LIBRARIES point to namespace versions.
|
|
|
|
* NOTE: In the next version (tentatively 2.0), I plan to split up
|
|
the git repository and the packaging of GeographicLib into
|
|
separate entities for each language. This will simplify
|
|
development and deployment of the library.
|
|
|
|
* WARNING: The .NET version of GeographicLib will not be supported
|
|
in the next version.
|
|
|
|
Changes between 1.51 (released 2020-11-22) and 1.50.1 versions:
|
|
|
|
* C++11 compiler required for C++ library. As a consequence:
|
|
+ The workaround implementations for C++11 routines (Math::hypot,
|
|
Math::expm1, Math::log1p, Math::asinh, Math::atanh,
|
|
Math::copysign, Math::cbrt, Math::remainder, Math::remquo,
|
|
Math::round, Math::lround, Math::fma, Math::isfinite, and
|
|
Math::isnan) are now deprecated. Just use the versions in the
|
|
std:: namespace instead.
|
|
+ SphericalEngine class, fix the namespace for using streamoff.
|
|
+ Some templated functions, e.g., Math::degree(), now have default
|
|
template parameters, T = Math::real.
|
|
|
|
* C99 compiler required for C library.
|
|
|
|
* Reduce memory footprint in Java implementation.
|
|
|
|
* New form of Utility::ParseLine to allow the syntax "KEY = VAL".
|
|
|
|
* Add International Geomagnetic Reference Field (13th generation),
|
|
igrf13, which approximates the main magnetic field of the earth for
|
|
the period 1900-2025.
|
|
|
|
* More symbols allowed with DMS decoding in C++, JS, and cgi-bin
|
|
packages; see DMS::Decode.
|
|
|
|
* Fix bug in cgi-bin argument processing which causes "+" to be
|
|
misinterpreted.
|
|
|
|
* Required minium version of CMake is now 3.7.0 (released
|
|
2016-11-11). This is to work around a bug in find_package for
|
|
cmake 3.4 and 3.5.
|
|
|
|
Changes between 1.50.1 (released 2019-12-13) and 1.50 versions:
|
|
|
|
* Add the World Magnetic Model 2020, wmm2020, covering the period
|
|
2020-2025. This is now the model returned by
|
|
MagneticModel::DefaultMagneticName and is default magnetic model
|
|
for MagneticField (replacing wmm2015v2 which is only valid thru
|
|
the end of 2019).
|
|
|
|
* Include float instantiations of those templated Math functions
|
|
which migrated to Math.cpp in version 1.50.
|
|
|
|
* WARNING: The next version of GeographicLib will require a C++11
|
|
compliant compiler. This means that the minimum version of Visual
|
|
Studio will be Visual Studio 12 2013. (This repeats the warning
|
|
given with version 1.50. It didn't apply to this version because
|
|
this is a minor update.)
|
|
|
|
Changes between 1.50 (released 2019-09-24) and 1.49 versions:
|
|
|
|
* BUG fixes:
|
|
+ Java + JavaScript implementations of PolygonArea::TestEdge
|
|
counted the pole encirclings wrong.
|
|
+ Fix typo in JavaScript implementation which affected unsigned
|
|
areas.
|
|
+ Adding edges to a polygon counted pole encirclings inconsistent
|
|
with the way the adding point counted them. This might have
|
|
caused an incorrect result if a polygon vertex had longitude =
|
|
0. This affected all implementations except Fortran and
|
|
MATLAB).
|
|
+ GARS::Forward: fix BUG in handling of longitude = +/-180d.
|
|
+ Fix bug in Rhumb class and RhumbSolve(1) utiity which caused
|
|
incorrect area to be reported if an endpoint is at a pole.
|
|
Thanks to Natalia Sabourova for reporting this.
|
|
+ Fix bug in MATLAB routine mgrs_inv which resulted in incorrect
|
|
results for UPS zones with prec = -1.
|
|
+ In geodreckon.m geoddistance.m, suppress (innocuous) "warning:
|
|
division by zero" messages from Octave.
|
|
+ In python implementation, work around problems caused by
|
|
sin(inf) and fmod(inf) raising exceptions.
|
|
+ Geoid class, fix the use of streamoff.
|
|
|
|
* The PolygonArea class, the Planimeter utility, and their equivalents
|
|
in C, Fortran, MATLAB, Java, JavaScript, Python, and Maxima can now
|
|
handle arbitrarily complex polygons. In the case of
|
|
self-intersecting polygons the area is accumulated "algebraically",
|
|
e.g., the areas of the 2 loops in a figure-8 polygon will partially
|
|
cancel.
|
|
|
|
* Changes in gravity and magnetic model handling
|
|
+ SphericalEngine::coeff::readcoeffs takes new optional argument
|
|
truncate.
|
|
+ The constructors for GravityModel and MagneticModel allow the
|
|
maximum degree and order to be specified. The array of
|
|
coefficients will then be truncated if necessary.
|
|
+ GravityModel::Degree(), GravityModel::Order(),
|
|
MagneticModel::Degree(), MagneticModel::Order() return the
|
|
maximum degree and order of all the components of a GravityModel
|
|
or MagneticModel.
|
|
+ Gravity and MagneticField utilities accept -N and -M options to
|
|
to allow the maximum degree and order to be specified.
|
|
|
|
* The GeodSolve allows fractional distances to be entered as fractions
|
|
(with the -F flag).
|
|
|
|
* MajorRadius() methods are now called EquatorialRadius() for the C++,
|
|
Java, and .NET libraries. "Equatorial" is more descriptive in the
|
|
case of prolate ellipsoids. MajorRadius() is retained for backward
|
|
compatibility for C++ and Java but is deprecated.
|
|
|
|
* Minimum version updates:
|
|
+ CMake = 3.1.0, released 2014-12-15.
|
|
+ Minimum g++ version = 4.8.0, released 2013-03-22.
|
|
+ Visual Studio 10 2010 (haven't been able to check Visual Studio
|
|
2008 for a long time).
|
|
+ WARNING: The next version of GeographicLib will require a C++11
|
|
compliant compiler. This means that the minimum version of
|
|
Visual Studio will be Visual Studio 12 2013.
|
|
+ Minimum boost version = 1.64 needed for GEOGRAPHICLIB_PRECISION
|
|
= 4.
|
|
+ Java = 1.6; this allows the removal of epsilon, min, hypot,
|
|
log1p, copysign, cbrt from GeoMath.
|
|
|
|
* CMake updates:
|
|
+ Fine tune Visual Studio compatibility check in
|
|
find_package(GeographicLib); this allows GeographicLib compiled
|
|
with Visual Studio 14 2015 to be used with a project compiled
|
|
with Visual Studio 15 2017 and 16 2019.
|
|
+ Suppress warnings with dotnet build.
|
|
+ Change CMake target names and add an interface library (thanks
|
|
to Matthew Woehlke).
|
|
+ Remove pre-3.1.0 cruft and update the documentation to remove
|
|
the need to call include_dirctories.
|
|
+ Add _d suffix to example and test programs.
|
|
+ Changer installation path for binary installer to the Windows
|
|
default.
|
|
+ Add support for Intel compiler (for C++, C, Fortran). This
|
|
entails supplying the -fp-model precise flag to prevent the
|
|
compiler from incorrectly simplying (a + b) + c and 0.0 + x.
|
|
|
|
* Add version 2 of the World Magnetic Model 2015, wmm2015v2. This is
|
|
now the default magnetic model for MagneticField (replacing wmm2015
|
|
which is now deprecated). Coming in 2019-12: the wmm2020 model.
|
|
|
|
* The -f flag in the scripts geographiclib-get-geoids,
|
|
geographiclib-get-gravity, and geographiclib-get-magnetic, allows
|
|
you to load new models (not yet in the set defined by "all"). This
|
|
is in addition to its original role of allowing you to overwrite
|
|
existing models.
|
|
|
|
* Changes in math function support:
|
|
+ Move some of the functionality from Math.hpp to Math.cpp to make
|
|
compilation of package which depend on GeographicLib less
|
|
sensitive to the current compiler environment.
|
|
+ Add Math::remainder, Math::remquo, Math::round, and
|
|
Math::lround. Also add implementations of remainder, remquo to
|
|
C implementation.
|
|
+ Math::cbrt, Math::atanh, and Math::asinh now preserve the sign
|
|
of -0. (Also: C, Java, JavaScript, Python, MATLAB. Not
|
|
necessary: Fortran because sign is a built-in function.)
|
|
+ JavaScript: fall back to Math.hypot, Math.cbrt, Math.log1p,
|
|
Math.atanh if they are available.
|
|
|
|
* When parsing DMS strings ignore various non-breaking spaces (C++ and
|
|
JavaScript).
|
|
|
|
* Improve code coverage in the tests of geodesic algorithms (C++, C,
|
|
Java, JavaScript, Python, MATLAB, Fortran).
|
|
|
|
* Old deprecated NormalGravity::NormalGravity constructor removed.
|
|
|
|
* Additions to the documentation:
|
|
+ add documentation links to ge{distance,reckon}.m;
|
|
+ clarify which solution is returned for Geocentric::Reverse.
|
|
|
|
Changes between 1.49 (released 2017-10-05) and 1.48 versions:
|
|
|
|
* Add the Enhanced Magnetic Model 2017, emm2017. This is valid for
|
|
2000 thru the end of 2021.
|
|
|
|
* Avoid potential problems with the order of initializations in DMS,
|
|
GARS, Geohash, Georef, MGRS, OSGB, SphericalEngine; this only would
|
|
have been an issue if GeographicLib objects were instantiated
|
|
globally. Now no GeographicLib initialization code should be run
|
|
prior to the entry of main().
|
|
|
|
* To support the previous fix, add an overload, Utility::lookup(const
|
|
char* s, char c).
|
|
|
|
* NearestNeighbor::Search throws an error if pts is the wrong size
|
|
(instead of merely returning no results).
|
|
|
|
* Use complex arithmetic for Clenshaw sums in TransverseMercator and
|
|
tranmerc_{fwd,inv}.m.
|
|
|
|
* Changes in cmake support:
|
|
+ fix compiler flags for GEOGRAPHICLIB_PRECISION = 4;
|
|
+ add CONVERT_WARNINGS_TO_ERRORS option (default OFF), if ON then
|
|
compiler warnings are treated as errors.
|
|
|
|
* Fix warnings about implicit conversions of doubles to bools in C++,
|
|
C, and JavaScript packages.
|
|
|
|
* Binary installers for Windows now use Visual Studio 14 2015.
|
|
|
|
Changes between 1.48 (released 2017-04-09) and 1.47 versions:
|
|
|
|
* The "official" URL for GeographicLib is now
|
|
https://geographiclib.sourceforge.io (instead of
|
|
http://geographiclib.sourceforge.net).
|
|
|
|
* The default range for longitude and azimuth is now (-180d, 180d],
|
|
instead of [-180d, 180d). This was already the case for the C++
|
|
library; now the change has been made to the other implementations
|
|
(C, Fortran, Java, JavaScript, Python, MATLAB, and Maxima).
|
|
|
|
* Changes to NearestNeighbor:
|
|
+ fix BUG in reading a NearestNeighbor object from a stream which
|
|
sometimes incorrectly caused a "Bad index" exception to be thrown;
|
|
+ add operator<<, operator>>, swap,
|
|
std::swap(NearestNeighbor&, NearestNeighbor&);
|
|
|
|
* Additions to the documentation:
|
|
+ add documentation on finding nearest neighbors;
|
|
+ normal gravity documentation is now on its own page and now has an
|
|
illustrative figure;
|
|
+ document the truncation error in the series for auxiliary
|
|
latitudes.
|
|
|
|
* Fix BUGS in MATLAB function geodreckon with mixed scalar and array
|
|
arguments.
|
|
|
|
* Workaround bug in math.fmod for Python 2.7 on 32-bit Windows
|
|
machines.
|
|
|
|
* Changes in cmake support:
|
|
+ add USE_BOOST_FOR_EXAMPLES option (default OFF), if ON search for
|
|
Boost libraries for building examples;
|
|
+ add APPLE_MULTIPLE_ARCHITECTURES option (default OFF), if ON build
|
|
for both i386 and x86_64 on Mac OS X systems;
|
|
+ don't add flag for C++11 for g++ 6.0 (since it's not needed).
|
|
|
|
* Fix compiler warnings with Visual Studio 2017 and for the C library.
|
|
|
|
Changes between 1.47 (released 2017-02-15) and 1.46 versions:
|
|
|
|
* Add NearestNeighbor class.
|
|
|
|
* Improve accuracy of area calculation (fixing a flaw introduced in
|
|
version 1.46); fix applied in Geodesic, GeodesicExact, and the
|
|
implementations in C, Fortran, Java, JavaScript, Python, MATLAB, and
|
|
Maxima.
|
|
|
|
* Generalize NormalGravity to allow oblate and prolate ellipsoids. As
|
|
a consequence a new form of constructor has been introduced and the
|
|
old form is now deprecated (and because the signatures of the two
|
|
constructors are similar, the compiler will warn about the use of
|
|
the old one).
|
|
|
|
* Changes in Math class:
|
|
+ Math::sincosd, Math::sind, Math::cosd only return -0 for the case
|
|
sin(-0);
|
|
+ Math::atan2d and Math::AngNormalize return results in (-180deg,
|
|
180deg]; this may affect the longitudes and azimuth returned by
|
|
several other functions.
|
|
|
|
* Add Utility::trim() and Utility::val<T>(); Utility::num<T>() is now
|
|
DEPRECATED.
|
|
|
|
* Changes in cmake support:
|
|
+ remove support of PACKAGE_PATH and INSTALL_PATH in cmake
|
|
configuration;
|
|
+ fix to FindGeographicLib.cmake to make it work on Debian systems;
|
|
+ use $<TARGET_PDB_FILE:tgt> (cmake version >= 3.1);
|
|
+ use NAMESPACE for exported targets;
|
|
+ geographiclib-config.cmake exports GEOGRAPHICLIB_DATA,
|
|
GEOGRAPHICLIB_PRECISION, and GeographicLib_HIGHPREC_LIBRARIES.
|
|
|
|
* Add pkg-config support for cmake and autoconf builds.
|
|
|
|
* Minor fixes:
|
|
+ fix the order of declarations in C library, incorporating the
|
|
patches in version 1.46.1;
|
|
+ fix the packaging of the python library, incorporating the patches
|
|
in version 1.46.3;
|
|
+ restrict junit dependency in the Java package to testing scope
|
|
(thanks to Mick Killianey);
|
|
+ various behind-the-scenes fixes to EllipticFunction;
|
|
+ fix documentation and default install location for Windows binary
|
|
installers;
|
|
+ fix clang compiler warnings in GeodesicExactC4 and
|
|
TransverseMercator.
|
|
|
|
Changes between 1.46 (released 2016-02-15) and 1.45 versions:
|
|
|
|
* The following BUGS have been fixed:
|
|
+ the -w flag to Planimeter(1) was being ignored;
|
|
+ in the Java package, the wrong longitude was being returned with
|
|
direct geodesic calculation with a negative distance when starting
|
|
point was at a pole (this bug was introduced in version 1.44);
|
|
+ in the JavaScript package, PolygonArea.TestEdge contained a
|
|
misspelling of a variable name and other typos (problem found by
|
|
threepointone).
|
|
|
|
* INCOMPATIBLE CHANGES:
|
|
+ make the -w flag (to swap the default order of latitude and
|
|
longitude) a toggle for all utility programs;
|
|
+ the -a option to GeodSolve(1) now toggles (instead of sets) arc
|
|
mode;
|
|
+ swap order coslon and sinlon arguments in CircularEngine class.
|
|
|
|
* Remove deprecated functionality:
|
|
+ remove gradient calculation from the Geoid class and GeoidEval(1)
|
|
(this was inaccurate and of dubious utility);
|
|
+ remove reciprocal flattening functions, InverseFlattening in many
|
|
classes and Constants::WGS84_r(); stop treating flattening > 1 as
|
|
the reciprocal flattening in constructors;
|
|
+ remove DMS::Decode(string), DMS::DecodeFraction,
|
|
EllipticFunction:m, EllipticFunction:m1, Math::extradigits,
|
|
Math::AngNormalize2, PolygonArea::TestCompute;
|
|
+ stop treating LONG_NOWRAP as an alias for LONG_UNROLL in Geodesic
|
|
(and related classes) and Rhumb;
|
|
+ stop treating full/schmidt as aliases for FULL/SCHMIDT in
|
|
SphericalEngine (and related classes);
|
|
+ remove qmake project file src/GeographicLib.pro because QtCreator
|
|
can handle cmake projects now;
|
|
+ remove deprecated Visual Studio 2005 project and solution files.
|
|
|
|
* Changes to GeodesicLine and GeodesicLineExact classes; these changes
|
|
(1) simplify the process of computing waypoints on a geodesic given
|
|
two endpoints and (2) allow a GeodesicLine to be defined which is
|
|
consistent with the solution of the inverse problem (in particular
|
|
Geodesic::InverseLine the specification of south-going lines which
|
|
pass the poles in a westerly direction by setting sin alpha_1 = -0):
|
|
+ the class stores the distance s13 and arc length a13 to a
|
|
reference point 3; by default these quantities are NaNs;
|
|
+ GeodesicLine::SetDistance (and GeodesicLine::SetArc) specify the
|
|
distance (and arc length) to point 3;
|
|
+ GeodesicLine::Distance (and GeodesicLine::Arc) return the distance
|
|
(and arc length) to point 3;
|
|
+ new methods Geodesic::InverseLine and Geodesic::DirectLine return
|
|
a GeodesicLine with the reference point 3 defined as point 2 of
|
|
the corresponding geodesic calculation;
|
|
+ these changes are also included in the C, Java, JavaScript, and
|
|
Python packages.
|
|
|
|
* Other changes to the geodesic routines:
|
|
+ more accurate solution of the inverse problem when longitude
|
|
difference is close to 180deg (also in C, Fortran, Java,
|
|
JavaScript, Python, MATLAB, and Maxima packages);
|
|
+ more accurate calculation of lon2 in the inverse calculation with
|
|
LONG_UNROLL (also in Java, JavaScript, Python packages).
|
|
|
|
* Changes to GeodSolve(1) utility:
|
|
+ the -I and -D options now specify geodesic line calculation via
|
|
the standard inverse or direct geodesic problems;
|
|
+ rename -l flag to -L to parallel the new -I and -D flags (-l is is
|
|
retained for backward compatibility but is deprecated), and
|
|
similarly for RhumbSolve(1);
|
|
+ the -F flag (in conjunction with the -I or -D flags) specifies
|
|
that distances read on standard input are fractions of s13 or a13;
|
|
+ the -a option now toggles arc mode (noted above);
|
|
+ the -w option now toggles longitude first mode (noted above).
|
|
|
|
* Changes to Math class:
|
|
+ Math::copysign added;
|
|
+ add overloaded version of Math::AngDiff which returns the error in
|
|
the difference. This allows a more accurate treatment of inverse
|
|
geodesic problem when lon12 is close to 180deg;
|
|
+ Math::AngRound now converts tiny negative numbers to -0 (instead
|
|
of +0), however -0 is still converted to +0.
|
|
|
|
* Add -S and -T options to GeoConvert(1).
|
|
|
|
* Add Sphinx documentation for Python package.
|
|
|
|
* Samples of wrapping the C++ library, so it's accessible in other
|
|
languages, are given in wrapper/C, wrapper/python, and
|
|
wrapper/matlab.
|
|
|
|
* Binary installers for Windows now use Visual Studio 12 2013.
|
|
|
|
* Remove top-level pom.xml from release (it was specific to SRI).
|
|
|
|
* A reminder: because of the JavaScript changes introduced in version
|
|
1.45, you should remove the following installation directories from
|
|
your system:
|
|
+ Windows: ${CMAKE_INSTALL_PREFIX}/doc/scripts
|
|
+ Others: ${CMAKE_INSTALL_PREFIX}/share/doc/GeographicLib/scripts
|
|
|
|
Changes between 1.45 (released 2015-09-30) and 1.44 versions:
|
|
|
|
* Fix BUG in solution of inverse geodesic caused by misbehavior of
|
|
some versions of Visual Studio on Windows (fmod(-0.0, 360.0) returns
|
|
+0.0 instead of -0.0) and Octave (sind(-0.0) returns +0.0 instead of
|
|
-0.0). These bugs were exposed because max(-0.0, +0.0) returns -0.0
|
|
for some languages.
|
|
|
|
* Geodesic::Inverse now correctly returns NaNs if one of the latitudes
|
|
is a NaN.
|
|
|
|
* Changes to JavaScript package:
|
|
+ thanks to help from Yurij Mikhalevich, it is a now a node package
|
|
that can be installed with npm;
|
|
+ make install now installs the node package in
|
|
lib/node_modules/geographiclib;
|
|
+ add unit tests using mocha;
|
|
+ add documentation via JSDoc;
|
|
+ fix bug Geodesic.GenInverse (this bug, introduced in version 1.44,
|
|
resulted in the wrong azimuth being reported for points at the
|
|
pole).
|
|
|
|
* Changes to Java package:
|
|
+ add implementation of ellipsoidal Gnomonic projection (courtesy of
|
|
Sebastian Mattheis);
|
|
+ add unit tests using JUnit;
|
|
+ Math.toRadians and Math.toDegrees are used instead of
|
|
GeoMath.degree (which is now removed), as a result...
|
|
+ Java version 1.2 (released 1998-12) or later is now required.
|
|
|
|
* Changes to Python package:
|
|
+ add unit tests using the unittest framework;
|
|
+ fixed bug in normalization of the area.
|
|
|
|
* Changes to MATLAB package:
|
|
+ fix array size mismatch in geoddistance by avoiding calls to
|
|
subfunctions with zero-length arrays;
|
|
+ fix tranmerc_{fwd,inv} so that they work with arrays and mixed
|
|
array/scalar arguments;
|
|
+ work around Octave problem which causes mgrs_fwd to return garbage
|
|
with prec = 10 or 11;
|
|
+ add geographiclib_test.m to run a test suite.
|
|
|
|
* Behavior of substituting 1/f for f if f > 1 is now deprecated. This
|
|
behavior has been removed from the JavaScript, C, and Python
|
|
implementations (it was never documented). Maxima, MATLAB, and
|
|
Fortran implementations never included this behavior.
|
|
|
|
* Other changes:
|
|
+ fix bug, introduced in version 1.42, in the C++ implementation to
|
|
the computation of area which causes NaNs to be returned in the
|
|
case of a sphere;
|
|
+ fixed bug, introduced in version 1.44, in the detection of C++11
|
|
math functions in configure.ac;
|
|
+ throw error on non-convergence in Gnomonic::Reverse if
|
|
GEOGRAPHICLIB_PRECISION > 3;
|
|
+ add geod_polygon_clear to C library;
|
|
+ turn illegal latitudes into NaNs for Fortran library;
|
|
+ add test suites for the C and Fortran libraries.
|
|
|
|
Changes between 1.44 (released 2015-08-14) and 1.43 versions:
|
|
|
|
* Various changes to improve accuracy, e.g., by minimizing round-off
|
|
errors:
|
|
+ Add Math::sincosd, Math::sind, Math::cosd which take their
|
|
arguments in degrees. These functions do exact range reduction
|
|
and thus they obey exactly the elementary properties of the
|
|
trigonometric functions, e.g., sin 9d = cos 81d
|
|
= - sin 123456789d.
|
|
+ Math::AngNormalize now works for any angles, instead of angles in
|
|
the range [-540d, 540d); the function Math::AngNormalize2 is now
|
|
deprecated.
|
|
+ This means that there is now no restriction on longitudes and
|
|
azimuths; any values can be used.
|
|
+ Improve the accuracy of Math::atan2d.
|
|
+ DMS::Decode avoids unnecessary round-off errors; thus 7:33:36 and
|
|
7.56 result in identical values. DMS::Encode rounds ties to even.
|
|
These changes have also been made to DMS.js.
|
|
+ More accurate rounding in MGRS::Reverse and mgrs_inv.m; this
|
|
change only makes a difference at sub-meter precisions.
|
|
+ With MGRS::Forward and mgrs_fwd.m, ensure that digits in lower
|
|
precision results match those at higher precision; as a result,
|
|
strings of trailing 9s are less likely to be generated. This
|
|
change only makes a difference at sub-meter precisions.
|
|
+ Replace the series for A2 in the Geodesic class with one with
|
|
smaller truncation errors.
|
|
+ Geodesic::Inverse sets s12 to zero for coincident points at pole
|
|
(instead of returning a tiny quantity).
|
|
+ Math::LatFix returns its argument if it is in [-90d, 90d]; if not,
|
|
it returns NaN.
|
|
+ Using Math::LatFix, routines which don't check their arguments now
|
|
interpret a latitude outside the legal range of [-90d, 90d] as a
|
|
NaN; such routines will return NaNs instead of finite but
|
|
incorrect results; caution: code that (dangerously) relied on the
|
|
"reasonable" results being returned for values of the latitude
|
|
outside the allowed range will now malfunction.
|
|
|
|
* All the utility programs accept the -w option to swap the
|
|
latitude-longitude order on input and output (and where appropriate
|
|
on the command-line arguments). CartConvert now accepts the -p
|
|
option to set the precision; now all of the utilities except
|
|
GeoidEval accept -p.
|
|
|
|
* Add classes for GARS, the Global Area Reference System, and for
|
|
Georef, the World Geographic Reference System.
|
|
|
|
* Changes to DMS::Decode and DMS.js:
|
|
+ tighten up the rules:
|
|
o 30:70.0 and 30:60 are illegal (minutes and second must be
|
|
strictly less than 60), however
|
|
o 30:60.0 and 30:60. are legal (floating point 60 is OK, since it
|
|
might have been generated by rounding 59.99...);
|
|
+ generalize a+b concept, introduced in version 1.42, to any number
|
|
of pieces; thus 8+0:40-0:0:10 is interpreted as 8:39:50.
|
|
|
|
* Documentation fixes:
|
|
+ update man pages to refer to GeoConvert(1) on handling of
|
|
geographic coordinates;
|
|
+ document limitations of the series used for TransverseMercator;
|
|
+ hide the documentation of the computation of the gradient of the
|
|
geoid height (now deprecated) in the Geoid class;
|
|
+ warn about the possible misinterpretation of 7.0E+1 by
|
|
DMS::Decode;
|
|
+ swaplatlong optional argument of DMS::DecodeLatLon and various
|
|
functions in the GeoCoords class is now called longfirst;
|
|
+ require Doxygen 1.8.7 or later.
|
|
|
|
* More systematic treatment of version numbers:
|
|
+ Python: __init__.py defines __version__ and __version_info__;
|
|
+ JavaScript:
|
|
o Math.js defines Constants.version and Constants.version_string;
|
|
o version number included as comment in packed script
|
|
geographiclib.js;
|
|
o geod-calc.html and geod-google.html report the version number;
|
|
o https://geographiclib.sourceforge.io/scripts/ gives access to
|
|
earlier versions of geographiclib.js as geographiclib-m.nn.js;
|
|
+ Fortran: add geover subroutine to return version numbers;
|
|
+ Maxima: geodesic.mac defines geod_version;
|
|
+ CGI scripts: these report the version numbers of the utilities.
|
|
|
|
* BUG FIXES:
|
|
+ NormalGravity now works properly for a sphere (omega = f = J2 =
|
|
0), instead of returning NaNs (problem found by htallon);
|
|
+ CassiniSoldner::Forward and cassini_fwd.m now returns the correct
|
|
azimuth for points at the pole.
|
|
|
|
* MATLAB-specific fixes:
|
|
+ mgrs_fwd now treats treats prec > 11 as prec = 11;
|
|
+ illegal letter combinations are now correctly detected by
|
|
mgrs_inv;
|
|
+ fixed bug where mgrs_inv returned the wrong results for prec = 0
|
|
strings and center = 0;
|
|
+ mgrs_inv now decodes prec = 11 strings properly;
|
|
+ routines now return array results with the right shape;
|
|
+ routines now properly handle mixed scalar and array arguments.
|
|
|
|
* Add Accumulator<T>::operator*=(T y).
|
|
|
|
* Geohash uses "invalid" instead of "nan" when the latitude or
|
|
longitude is a nan.
|
|
|
|
Changes between 1.43 (released 2015-05-23) and 1.42 versions:
|
|
|
|
* Add the Enhanced Magnetic Model 2015, emm2015. This is valid for
|
|
2000 thru the end of 2019. This required some changes in the
|
|
MagneticModel and MagneticCircle classes; so this model cannot be
|
|
used with versions of GeographicLib prior to 1.43.
|
|
|
|
* Fix BLUNDER in PolarStereographic constructor introduced in version
|
|
1.42. This affected UTMUPS conversions for UPS which could be
|
|
incorrect by up to 0.5 km.
|
|
|
|
* Changes in the LONG_NOWRAP option (added in version 1.39) in the
|
|
Geodesic and GeodesicLine classes:
|
|
+ The option is now called LONG_UNROLL (a less negative sounding
|
|
term); the original name, LONG_NOWRAP, is retained for backwards
|
|
compatibility.
|
|
+ There were two bad BUGS in the implementation of this capability:
|
|
(a) it gave incorrect results for west-going geodesics; (b) the
|
|
option was ignored if used directly via the GeodesicLine class.
|
|
The first bug affected the implementations in all languages. The
|
|
second affected the implementation in C++ (GeodesicLine and
|
|
GeodesicLineExact), JavaScript, Java, C, Python. These bugs have
|
|
now been FIXED.
|
|
+ The GeodSolve utility now accepts a -u option, which turns on the
|
|
LONG_UNROLL treatment. With this option lon1 is reported as
|
|
entered and lon2 is given such that lon2 - lon1 indicates how
|
|
often and in what sense the geodesic has encircled the earth.
|
|
(This option also affects the value of longitude reported when an
|
|
inverse calculation is run with the -f option.)
|
|
+ The inverse calculation with the JavaScript and python libraries
|
|
similarly sets lon1 and lon2 in output dictionary respecting the
|
|
LONG_UNROLL flag.
|
|
+ The online version of GeodSolve now offers an option to unroll the
|
|
longitude.
|
|
+ To support these changes DMS::DecodeLatLon no longer reduces the
|
|
longitude to the range [-180deg, 180deg) and Math::AngRound now
|
|
coverts -0 to +0.
|
|
|
|
* Add Math::polyval (also to C, Java, JavaScript, Fortran, python
|
|
versions of the library; this is a built-in function for
|
|
MATLAB/Octave). This evaluates a polynomial using Horner's method.
|
|
The Maxima-generated code fragments for the evaluation of series in
|
|
the Geodesic, TransverseMercator, and Rhumb classes and MATLAB
|
|
routines for great ellipses have been replaced by Maxima-generated
|
|
arrays of polynomial coefficients which are used as input to
|
|
Math::polyval.
|
|
|
|
* Add MGRS::Check() to verify that a, f, k_UTM, and k_UPS are
|
|
consistent with the assumptions in the UTMUPS and MGRS classes.
|
|
This is invoked with GeoConvert --version. (This function was added
|
|
to document and check the assumptions used in the UTMUPS and MGRS
|
|
classes in case they are extended to deal with ellipsoids other than
|
|
WS84.)
|
|
|
|
* MATLAB function mgrs_inv now takes an optional center argument and
|
|
strips white space from both beginning and end of the string.
|
|
|
|
* Minor internal changes:
|
|
+ GeodSolve sets the geodesic mask so that unnecessary calculations
|
|
are avoided;
|
|
+ some routines have migrated into a math class for for python,
|
|
Java, JavaScript libraries.
|
|
|
|
* A reminder: because of changes in the installation directories for
|
|
non-Windows systems introduced in version 1.42, you should remove
|
|
the following directories from your system:
|
|
+ ${CMAKE_INSTALL_PREFIX}/share/cmake/GeographicLib*
|
|
+ ${CMAKE_INSTALL_PREFIX}/libexec/GeographicLib/matlab
|
|
|
|
Changes between 1.42 (released 2015-04-28) and 1.41 versions:
|
|
|
|
* DMS::Decode allows a single addition or subtraction operation, e.g.,
|
|
70W+0:0:15. This affects the GeoCoords class and the utilities
|
|
(which use the DMS class for reading coordinates).
|
|
|
|
* Add Math::norm, Math::AngRound, Math::tand, Math::atan2d,
|
|
Math::eatanhe, Math::taupf, Math::tauf, Math::fma and remove
|
|
duplicated (but private) functionality from other classes.
|
|
|
|
* On non-Windows systems, the cmake config-style find_package files
|
|
are now installed under ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}
|
|
instead of ${CMAKE_INSTALL_PREFIX}/share, because the files are
|
|
architecture-specific. This change will let 32-bit and 64-bit
|
|
versions coexist on the same machine (in lib and lib64). You should
|
|
remove the versions in the old "share" location.
|
|
|
|
* MATLAB changes:
|
|
+ provide native MATLAB implementations for compiled interface
|
|
functions;
|
|
+ the compiled MATLAB interface is now deprecated and so the
|
|
MATLAB_COMPILER option in the cmake build has been removed;
|
|
+ reorganize directories, so that
|
|
o matlab/geographiclib contains the native matlab code;
|
|
o matlab/geographiclib-legacy contains wrapper functions to mimic
|
|
the previous compiled functionality;
|
|
+ the installed MATLAB code mirrors this layout, but the parent
|
|
installation directory on non-Windows systems is
|
|
${CMAKE_INSTALL_PREFIX}/share (instead of
|
|
${CMAKE_INSTALL_PREFIX}/libexec), because the files are now
|
|
architecture independent;
|
|
+ matlab/geographiclib is now packaged and distributed as MATLAB
|
|
File Exchange package 50605 (this supersedes three earlier MATLAB
|
|
packages);
|
|
+ point fix for geodarea.m to correct bug in area of polygons which
|
|
encircle a pole multiple times (released as version 1.41.1 of
|
|
MATLAB File Exchange package 39108, 2014-04-22).
|
|
|
|
* artifactId for Java package changed from GeographicLib to
|
|
GeographicLib-Java and the package is now deployed to Maven Central
|
|
(thanks to Chris Bennight for help on this).
|
|
|
|
* Fix autoconf mismatch of version numbers (which were inconsistent in
|
|
versions 1.40 and 1.41).
|
|
|
|
* Mark the computation of the gradient of the geoid height in the
|
|
Geoid class and the <a href="GeoidEval.1.html">GeoidEval</a> utility
|
|
as deprecated.
|
|
|
|
* Work around the boost-quadmath bug with setprecision(0).
|
|
|
|
* Deprecate use of Visual Studio 2005 "-vc8" project files in the
|
|
windows directory.
|
|
|
|
Changes between 1.41 (released 2015-03-09) and 1.40 versions:
|
|
|
|
* Fix bug in Rhumb::Inverse (with exact = true) and related functions
|
|
which causes the wrong distance to be reported if one of the end
|
|
points is at a pole. Thanks to Thomas Murray for reporting this.
|
|
|
|
* Add International Geomagnetic Reference Field (12th generation),
|
|
which approximates the main magnetic field of the earth for the
|
|
period 1900-2020.
|
|
|
|
* Split information about Jacobi's conformal projection to a separate
|
|
section and include more material.
|
|
|
|
Changes between 1.40 (released 2014-12-18) and 1.39 versions:
|
|
|
|
* Add the World Magnetic Model 2015, wmm2015. This is now the default
|
|
magnetic model for MagneticField (replacing wmm2010 which is valid
|
|
thru the end of 2014).
|
|
|
|
* Geodesic::Inverse didn't return NaN if one of the longitudes was a
|
|
NaN (bug introduced in version 1.25). Fixed in the C++, Java,
|
|
JavaScript, C, Fortran, and Python implementations of the geodesic
|
|
routines. This bug was not present in the Matlab version.
|
|
|
|
* Fix bug in Utility::readarray and Utility::writearray which caused
|
|
an exception in debug mode with zero-sized arrays.
|
|
|
|
* Fix BLUNDER in OSGB::GridReference (found by kalderami) where the
|
|
wrong result was returned if the easting or northing was negative.
|
|
|
|
* OSGB::GridReference now returns "INVALID" if either coordinate is
|
|
NaN. Similarly a grid reference starting with "IN" results in NaNs
|
|
for the coordinates.
|
|
|
|
* Default constructor for GeoCoords corresponds to an undefined
|
|
position (latitude and longitude = NaN), instead of the north pole.
|
|
|
|
* Add an online version of RhumbSolve at
|
|
https://geographiclib.sourceforge.io/cgi-bin/RhumbSolve.
|
|
|
|
* Additions to the documentation:
|
|
+ documentation on Jacobi's conformal projection;
|
|
+ a page on Auxiliary latitudes (actually, this was added in
|
|
version 1.39);
|
|
+ document the use of two single quotes to stand for a double quote
|
|
in DMS (this feature was introduced in version 1.13).
|
|
|
|
* The Matlab function, geographiclibinterface, which compiles the
|
|
wrapper routines for Matlab now works with Matlab 2014b on a Mac.
|
|
|
|
Changes between 1.39 (released 2014-11-11) and 1.38 versions:
|
|
|
|
* GeographicLib usually normalizes longitudes to the range [-180deg,
|
|
180deg). However, when solving the direct geodesic and rhumb line
|
|
problems, it is sometimes necessary to know how many lines the line
|
|
encircled the earth by returning the longitude "unwrapped". So the
|
|
following changes have been made:
|
|
+ add a LONG_NOWRAP flag to mask enums for the outmask arguments for
|
|
Geodesic, GeodesicLine, Rhumb, and RhumbLine;
|
|
+ similar changes have been made to the Python, Javascript, and
|
|
Java implementations of the geodesic routines;
|
|
+ for the C, Fortran, and Matlab implementations the arcmode
|
|
argument to the routines was generalized to allow a combination of
|
|
ARCMODE and LONG_NOWRAP bits;
|
|
+ the Maxima version now returns the longitude unwrapped.
|
|
These changes were necessary to fix the PolygonAreaT::AddEdge (see
|
|
the next item).
|
|
|
|
* Changes in area calculations:
|
|
+ fix BUG in PolygonAreaT::AddEdge (also in C, Java, Javascript, and
|
|
Python implementations) which sometimes causes the wrong area to
|
|
be returned if the edge spanned more than 180deg;
|
|
+ add area calculation to the Rhumb and RhumbLine classes and the
|
|
RhumbSolve utility;
|
|
+ add PolygonAreaRhumb typedef for PolygonAreaT<Rhumb>;
|
|
+ add -R option to Planimeter to use PolygonAreaRhumb (and -G option
|
|
for the default geodesic polygon);
|
|
+ fix BLUNDER in area calculation in Matlab routine geodreckon;
|
|
+ add area calculation to Matlab/Octave routines for great ellipses.
|
|
|
|
* Fix bad BUG in Geohash::Reverse; this was introduced in version 1.37
|
|
and affected all platforms where unsigned longs are 32-bits. Thanks
|
|
to Christian Csar for reporting and diagnosing this.
|
|
|
|
* Binary installers for Windows are now built with Visual Studio 11
|
|
2012 (instead of Visual Studio 10 2010). Compiled Matlab support
|
|
still with version 2013a (64-bit).
|
|
|
|
* Update GeographicLib.pro for builds with qmake to include all the
|
|
source files.
|
|
|
|
* Cmake updates:
|
|
+ include cross-compiling checks in cmake config file;
|
|
+ improve the way unsuitable versions are reported;
|
|
+ include_directories (${GeographicLib_INCLUDE_DIRS}) is no longer
|
|
necessary with cmake 2.8.11 or later.
|
|
|
|
* legacy/Fortran now includes drop-in replacements for the geodesic
|
|
utilities from the NGS.
|
|
|
|
* geographiclib-get-{geoids,gravity,magnetic} with no arguments now
|
|
print the usage instead of loading the minimal sets.
|
|
|
|
* Utility::date(const std::string&, int&, int&, int&) and hence the
|
|
MagneticField utility accepts the string "now" as a legal time
|
|
(meaning today).
|
|
|
|
Changes between 1.38 (released 2014-10-02) and 1.37 versions:
|
|
|
|
* On MacOSX, the installed package is relocatable (for cmake version
|
|
2.8.12 and later).
|
|
|
|
* On Mac OSX, GeographicLib can be installed using homebrew.
|
|
|
|
* In cmake builds under Windows, set the output directories so that
|
|
binaries and shared libraries are together.
|
|
|
|
* Accept the minus sign as a synonym for - in DMS.{cpp,js}.
|
|
|
|
* The cmake configuration file geographiclib-depends.cmake has been
|
|
renamed to geographiclib-targets.cmake.
|
|
|
|
* Matlab/Octave routines for great ellipses added.
|
|
|
|
* Provide man pages for geographiclib-get-{geoids,gravity,magnetic}.
|
|
|
|
Changes between 1.37 (released 2014-08-08) and 1.36 versions:
|
|
|
|
* Add support for high precision arithmetic.
|
|
|
|
* INCOMPATIBLE CHANGE: the static instantiations of various classes
|
|
for the WGS84 ellipsoid have been changed to a "construct on first
|
|
use idiom". This avoids a lot of wasteful initialization before the
|
|
user's code starts. Unfortunately it means that existing source
|
|
code that relies on any of the following static variables will need
|
|
to be changed to a function call:
|
|
+ AlbersEqualArea::AzimuthalEqualAreaNorth
|
|
+ AlbersEqualArea::AzimuthalEqualAreaSouth
|
|
+ AlbersEqualArea::CylindricalEqualArea
|
|
+ Ellipsoid::WGS84
|
|
+ Geocentric::WGS84
|
|
+ Geodesic::WGS84
|
|
+ GeodesicExact::WGS84
|
|
+ LambertConformalConic::Mercator
|
|
+ NormalGravity::GRS80
|
|
+ NormalGravity::WGS84
|
|
+ PolarStereographic::UPS
|
|
+ TransverseMercator::UTM
|
|
+ TransverseMercatorExact::UTM
|
|
Thus, occurrences of, for example,
|
|
const Geodesic& geod = Geodesic::WGS84; // version 1.36 and earlier
|
|
need to be changed to
|
|
const Geodesic& geod = Geodesic::WGS84(); // version 1.37 and later
|
|
(note the parentheses!); alternatively use
|
|
// works with all versions
|
|
const Geodesic geod(Constants::WGS84_a(), Constants::WGS84_a());
|
|
|
|
* Incompatible change: the environment variables
|
|
{GEOID,GRAVITY,MAGNETIC}_{NAME,PATH} are now prefixed with
|
|
GEOGRAPHICLIB_.
|
|
|
|
* Incompatible change for Windows XP: retire the Windows XP common
|
|
data path. If you're still using Windows XP, then you might have to
|
|
move the folder C:\Documents and Settings\All Users\Application
|
|
Data\GeographicLib to C:\ProgramData\GeographicLib.
|
|
|
|
* All macro names affecting the compilation now start with
|
|
GEOGRAPHICLIB_; this applies to GEOID_DEFAULT_NAME,
|
|
GRAVITY_DEFAULT_NAME, MAGNETIC_DEFAULT_NAME, PGM_PIXEL_WIDTH,
|
|
HAVE_LONG_DOUBLE, STATIC_ASSERT, WORDS_BIGENDIAN.
|
|
|
|
* Changes to PolygonArea:
|
|
+ introduce PolygonAreaT which takes a geodesic class as a
|
|
parameter;
|
|
+ PolygonArea and PolygonAreaExact are typedef'ed to
|
|
PolygonAreaT<Geodesic> and PolygonAreaT<GeodesicExact>;
|
|
+ add -E option to Planimeter to use PolygonAreaExact;
|
|
+ add -Q option to Planimeter to calculate the area on the authalic
|
|
sphere.
|
|
|
|
* Add -p option to Planimeter, ConicProj, GeodesicProj,
|
|
TransverseMercatorProj.
|
|
|
|
* Add Rhumb and RhumbLine classes and the RhumbSolve utility.
|
|
|
|
* Minor changes to NormalGravity:
|
|
+ add J2ToFlattening and FlatteningToJ2;
|
|
+ use Newton's method to determine f from J2;
|
|
+ in constructor, allow omega = 0 (i.e., treat the spherical case).
|
|
|
|
* Add grs80 GravityModel.
|
|
|
|
* Make geographiclib-get-{geoids,gravity,magnetic} scripts work on
|
|
MacOS.
|
|
|
|
* Minor changes:
|
|
+ simplify cross-platform support for C++11 mathematical functions;
|
|
+ change way area coefficients are given in GeodesicExact to improve
|
|
compile times;
|
|
+ enable searching the online documentation;
|
|
+ add macros GEOGRAPHICLIB_VERSION and GEOGRAPHICLIB_VERSION_NUM;
|
|
+ add solution and project files for Visual Studio Express 2010.
|
|
|
|
Changes between 1.36 (released 2014-05-13) and 1.35 versions:
|
|
|
|
* Changes to comply with NGA's prohibition of the use of the
|
|
upper-case letters N/S to designate the hemisphere when displaying
|
|
UTM/UPS coordinates:
|
|
+ UTMUPS::DecodeZone allows north/south as hemisphere designators
|
|
(in addition to n/s);
|
|
+ UTMUPS::EncodeZone now encodes the hemisphere in lower case (to
|
|
distinguish this use from a grid zone designator);
|
|
+ UTMUPS::EncodeZone takes an optional parameter abbrev to
|
|
indicate whether to use n/s or north/south as the hemisphere
|
|
designator;
|
|
+ GeoCoords::UTMUPSRepresentation and AltUTMUPSRepresentation
|
|
similarly accept the abbrev parameter;
|
|
+ GeoConvert uses the flags -a and -l to govern whether UTM/UPS
|
|
output uses n/s (the -a flag) or north/south (the -l flag) to
|
|
denote the hemisphere;
|
|
+ Fixed a bug what allowed +3N to be accepted as an alternation
|
|
UTM zone designation (instead of 3N).
|
|
WARNING: The use of lower case n/s for the hemisphere might cause
|
|
compatibility problems. However DecodeZone has always accepted
|
|
either case; so the issue will only arise with other software
|
|
reading the zone information. To avoid possible misinterpretation
|
|
of the zone designator, consider calling EncodeZone with abbrev =
|
|
false and GeoConvert with -l, so that north/south are used to
|
|
denote the hemisphere.
|
|
|
|
* MGRS::Forward with prec = -1 will produce a grid zone designation.
|
|
Similarly MGRS::Reverse will decode a grid zone designation (and
|
|
return prec = -1).
|
|
|
|
* Stop using the throw() declaration specification which is
|
|
deprecated in C++11.
|
|
|
|
* Add missing std:: qualifications to copy in LocalCartesion and
|
|
Geocentric headers (bug found by Clemens).
|
|
|
|
Changes between 1.35 (released 2014-03-13) and 1.34 versions:
|
|
|
|
* Fix blunder in UTMUPS::EncodeEPSG (found by Ben Adler).
|
|
|
|
* Matlab wrapper routines geodesic{direct,inverse,line} switch to
|
|
"exact" routes if |f| > 0.02.
|
|
|
|
* GeodSolve.cgi allows ellipsoid to be set (and uses the -E option
|
|
for GeodSolve).
|
|
|
|
* Set title in HTML versions of man pages for the utility programs.
|
|
|
|
* Changes in cmake support:
|
|
+ add _d to names of executables in debug mode of Visual Studio;
|
|
+ add support for Android (cmake-only), thanks to Pullan Yu;
|
|
+ check CPACK version numbers supplied on command line;
|
|
+ configured version of project-config.cmake.in is
|
|
project-config.cmake (instead of geographiclib-config.cmake), to
|
|
prevent find_package incorrectly using this file;
|
|
+ fix tests with multi-line output;
|
|
+ this release includes a file, pom.xml, which is used by an
|
|
experimental build system (based on maven) at SRI.
|
|
|
|
Changes between 1.34 (released 2013-12-11) and 1.33 versions:
|
|
|
|
* Many changes in cmake support:
|
|
+ minimum version of cmake needed increased to 2.8.4 (which was
|
|
released in 2011-02);
|
|
+ allow building both shared and static librarys with
|
|
-D GEOGRAPHICLIB_LIB_TYPE=BOTH;
|
|
+ both shared and static libraries (Release plus Debug) included in
|
|
binary installer;
|
|
+ find_package uses COMPONENTS and GeographicLib_USE_STATIC_LIBS to
|
|
select the library to use;
|
|
+ find_package version checking allows nmake and Visual Studio
|
|
generators to interoperate on Windows;
|
|
+ find_package (GeographicLib ...) requires that GeographicLib be
|
|
capitalized correctly;
|
|
+ on Unix/Linux, don't include the version number in directory for
|
|
the cmake configuration files;
|
|
+ defaults for GEOGRAPHICLIB_DOCUMENTATION and
|
|
BUILD_NETGEOGRAPHICLIB are now OFF;
|
|
+ the GEOGRAPHICLIB_EXAMPLES configuration parameter is no longer
|
|
used; cmake always configures to build the examples, but they are
|
|
not built by default (instead build targets: exampleprograms and
|
|
netexamples);
|
|
+ matlab-all target renamed to matlabinterface;
|
|
+ the configuration parameters PACKAGE_PATH and INSTALL_PATH are
|
|
now deprecated (use CMAKE_INSTALL_PREFIX instead);
|
|
+ on Linux, the installed package is relocatable;
|
|
+ on MacOSX, the installed utilities can find the shared library.
|
|
|
|
* Use a more precise value for OSGB::CentralScale().
|
|
|
|
* Add Arc routines to python interface.
|
|
|
|
* The Geod utility has been removed; the same functionality lives on
|
|
with GeodSolve (introduced in version 1.30).
|
|
|
|
Changes between 1.33 (released 2013-10-08) and 1.32 versions:
|
|
|
|
* Add NETGeographic .NET wrapper library (courtesy of Scott Heiman).
|
|
|
|
* Make inspector functions in GeographicLib::Ellipsoid const.
|
|
|
|
* Add Accumulator.cpp to instantiate GeographicLib::Accumulator.
|
|
|
|
* Defer some of the initialization of GeographicLib::OSGB to when it
|
|
is first called.
|
|
|
|
* Fix bug in autoconf builds under MacOS.
|
|
|
|
Changes between 1.32 (released 2013-07-12) and 1.31 versions:
|
|
|
|
* Generalize C interface for polygon areas to allow vertices to be
|
|
specified incrementally.
|
|
|
|
* Fix way flags for C++11 support are determined.
|
|
|
|
Changes between 1.31 (released 2013-07-01) and 1.30 versions:
|
|
|
|
* Changes breaking binary compatibility (source compatibility is
|
|
maintained):
|
|
+ overloaded versions of DMS::Encode,
|
|
EllipticFunction::EllipticFunction, and
|
|
GeoCoords::DMSRepresentation, have been eliminated by the use of
|
|
optional arguments;
|
|
+ correct the declaration of first arg to UTMUPS::DecodeEPSG.
|
|
|
|
* FIX BUG in GeographicLib::GravityCircle constructor (found by
|
|
Mathieu Peyréga) which caused bogus results for the gravity
|
|
disturbance and gravity anomaly vectors. (This only affected
|
|
calculations using GravityCircle. GravityModel calculations did not
|
|
suffer from this bug.)
|
|
|
|
* Improvements to the build:
|
|
+ add macros GEOGRAPHICLIB_VERSION_{MAJOR,MINOR,PATCH} to Config.h;
|
|
+ fix documentation for new version of perlpod;
|
|
+ improving setting of runtime path for Unix-like systems with
|
|
cmake;
|
|
+ install PDB files when compiling with Visual Studio to aid
|
|
debugging;
|
|
+ Windows binary release now uses Matlab R2013a (64-bit) and uses
|
|
the -largeArrayDims option.
|
|
|
|
* Changes to the geodesic routines:
|
|
+ add Java implementation of the geodesic routines (thanks to Skip
|
|
Breidbach for the maven support);
|
|
+ FIX BUG: avoid altering input args in Fortran implementation;
|
|
+ more systematic treatment of very short geodesic;
|
|
+ fixes to python port so that they work with version 3.x, in
|
|
addition to 2.x (courtesy of Amato);
|
|
+ accumulate the perimeter and area of polygons via a double-wide
|
|
accumulator in Fortran, C, and Matlab implementations (this is
|
|
already included in the other implementations);
|
|
+ port PolygonArea::AddEdge and PolygonArea::TestEdge to JavaScript
|
|
and python interfaces;
|
|
+ include documentation on short geodesics.
|
|
|
|
* Unix scripts for downloading datasets,
|
|
geographiclib-get-{geoids,gravity,magnetic}, skip already download
|
|
models by default, unless the -f flag is given.
|
|
|
|
* FIX BUGS: meridian convergence and scale returned by
|
|
TransverseMercatorExact was wrong at a pole.
|
|
|
|
* Improve efficiency of MGRS::Forward by avoiding the calculation of
|
|
the latitude if possible (adapting an idea of Craig Rollins).
|
|
|
|
* Fixes to the way the Matlab interface routines are built (thanks to
|
|
Phil Miller and Chris F.).
|
|
|
|
Changes between 1.30 (released 2013-02-27) and 1.29 versions:
|
|
|
|
* Changes to geodesic routines:
|
|
+ fix BUG in fail-safe mechanisms in Geodesic::Inverse;
|
|
+ the command line utility Geod is now called GeodSolve;
|
|
+ allow addition of polygon edges in PolygonArea;
|
|
+ add full Maxima implementation of geodesic algorithms.
|
|
|
|
Changes between 1.29 (released 2013-01-16) and 1.28 versions:
|
|
|
|
* Changes to allow compilation with libc++ (courtesy of Kal Conley).
|
|
|
|
* Add description of geodesics on triaxial ellipsoid to
|
|
documentation.
|
|
|
|
* Update journal reference for "Algorithms for geodesics".
|
|
|
|
Changes between 1.28 (released 2012-12-11) and 1.27 versions:
|
|
|
|
* Changes to geodesic routines:
|
|
+ compute longitude difference exactly;
|
|
+ hence fix BUG in area calculations for polygons with vertices very
|
|
close to the prime meridian;
|
|
+ fix BUG is geoddistance.m where the value of m12 was wrong for
|
|
meridional geodesics;
|
|
+ add Matlab implementations of the geodesic projections;
|
|
+ remove unneeded special code for geodesics which start at a pole;
|
|
+ include polygon area routine in C and Fortran implementations;
|
|
+ add doxygen documentation for C and Fortran libraries.
|
|
|
|
Changes between 1.27 (released 2012-11-29) and 1.26 versions:
|
|
|
|
* Changes to geodesic routines:
|
|
+ add native Matlab implementations: geoddistance.m, geodreckon.m,
|
|
geodarea.m;
|
|
+ add C and Fortran implementations;
|
|
+ improve the solution of the direct problem so that the series
|
|
solution is accurate to round off for |f| < 1/50;
|
|
+ tighten up the convergence criteria for solution of the inverse
|
|
problem;
|
|
+ no longer signal failures of convergence with NaNs (a slightly
|
|
less accurate answer is returned instead).
|
|
|
|
* Fix DMS::Decode double rounding BUG.
|
|
|
|
* On MacOSX platforms with the cmake configuration, universal
|
|
binaries are built.
|
|
|
|
Changes between 1.26 (released 2012-10-22) and 1.25 versions:
|
|
|
|
* Replace the series used for geodesic areas by one with better
|
|
convergence (this only makes an appreciable difference if |f| >
|
|
1/150).
|
|
|
|
Changes between 1.25 (released 2012-10-16) and 1.24 versions:
|
|
|
|
* Changes to geodesic calculations:
|
|
+ restart Newton's method in Geodesic::Inverse when it goes awry;
|
|
+ back up Newton's method with the bisection method;
|
|
+ Geodesic::Inverse now converges for any value of f;
|
|
+ add GeodesicExact and GeodesicLineExact which are formulated in
|
|
terms of elliptic integrals and thus yield accurate results
|
|
even for very eccentric ellipsoids;
|
|
+ the -E option to Geod invokes these exact classes.
|
|
|
|
* Add functionality to EllipticFunction:
|
|
+ add all the traditional elliptic integrals;
|
|
+ remove restrictions on argument range for incomplete elliptic
|
|
integrals;
|
|
+ allow imaginary modulus for elliptic integrals and elliptic
|
|
functions;
|
|
+ make interface to the symmetric elliptic integrals public.
|
|
|
|
* Allow GeographicLib::Ellipsoid to be copied.
|
|
|
|
* Changes to the build tools:
|
|
+ cmake uses folders in Visual Studio to reduce clutter;
|
|
+ allow precision of reals to be set in cmake;
|
|
+ fail gracefully in the absence of pod documentation tools;
|
|
+ remove support for maintainer tasks in Makefile.mk;
|
|
+ upgrade to automake 1.11.6 to fix the "make distcheck" security
|
|
vulnerability; see
|
|
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-3386
|
|
|
|
Changes between 1.24 (released 2012-09-22) and 1.23 versions:
|
|
|
|
* Allow the specification of the hemisphere in UTM coordinates in
|
|
order to provide continuity across the equator:
|
|
+ add UTMUPS::Transfer;
|
|
+ add GeoCoords::UTMUPSRepresentation(bool, int) and
|
|
GeoCoords::AltUTMUPSRepresentation(bool, int);
|
|
+ use the hemisphere letter in, e.g., GeoConvert -u -z 31N.
|
|
|
|
* Add UTMUPS::DecodeEPSG and UTMUPS::EncodeEPSG.
|
|
|
|
* cmake changes:
|
|
+ restore support for cmake 2.4.x;
|
|
+ explicitly check version of doxygen.
|
|
|
|
* Fix building under cygwin.
|
|
|
|
* Document restrictions on f in the Introduction.
|
|
|
|
* Fix python interface to work with version 2.6.x.
|
|
|
|
Changes between 1.23 (released 2012-07-17) and 1.22 versions:
|
|
|
|
* Documentation changes:
|
|
+ remove html documentation from distribution and use web links if
|
|
doxygen is not available;
|
|
+ use doxygen tags to document exceptions;
|
|
+ begin migrating the documentation to using Greek letters where
|
|
appropriate (requires doxygen 1.8.1.2 or later).
|
|
|
|
* Add Math::AngNormalize and Math::AngNormalize2; the allowed range
|
|
for longitudes and azimuths widened to [-540d, 540d).
|
|
|
|
* DMS::Decode understands more unicode symbols.
|
|
|
|
* Geohash uses geohash code "nan" to stand for not a number.
|
|
|
|
* Add Ellipsoid::NormalCurvatureRadius.
|
|
|
|
* Various fixes in LambertConformalConic, TransverseMercator,
|
|
PolarStereographic, and Ellipsoid to handle reverse projections of
|
|
points near infinity.
|
|
|
|
* Fix programming blunder in LambertConformalConic::Forward (incorrect
|
|
results were returned if the tangent latitude was negative).
|
|
|
|
Changes between 1.22 (released 2012-05-27) and 1.21 versions:
|
|
|
|
* Add Geohash and Ellipsoid classes.
|
|
|
|
* Fix bug in AlbersEqualArea of very prolate ellipsoids (b^2 > 2
|
|
a^2).
|
|
|
|
* cmake changes:
|
|
+ optionally use PACKAGE_PATH and INSTALL_PATH to determine
|
|
CMAKE_INSTALL_PREFIX;
|
|
+ use COMMON_INSTALL_PATH to determine layout of installation
|
|
directories;
|
|
+ as a consequence, the installation paths for the documentation,
|
|
and python and matlab interfaces are shortened for Windows;
|
|
+ zip source distribution now uses DOS line endings;
|
|
+ the tests work in debug mode for Windows;
|
|
+ default setting of GEOGRAPHICLIB_DATA does not depend on
|
|
CMAKE_INSTALL_PREFIX;
|
|
+ add a cmake configuration for build tree.
|
|
|
|
Changes between 1.21 (released 2012-04-25) and 1.20 versions:
|
|
|
|
* Support colon-separated DMS output:
|
|
+ DMS::Encode and GeoCoords::DMSRepresentation generalized;
|
|
+ GeoConvert and Geod now accept a -: option.
|
|
|
|
* GeoidEval does not print the gradient of the geoid height by default
|
|
(because it's subject to large errors); give the -g option to get
|
|
the gradient printed.
|
|
|
|
* Work around optimization BUG in GeographicLib::Geodesic::Inverse
|
|
with tdm mingw g++ version 4.6.1.
|
|
|
|
* autoconf fixed to ensure that that out-of-sources builds work;
|
|
document this as the preferred method of using autoconf.
|
|
|
|
* cmake tweaks:
|
|
+ simplify the configuration of doxygen;
|
|
+ allow the Matlab compiler to be specified with the MATLAB_COMPILER
|
|
option.
|
|
|
|
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 aggressive 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 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 https://geographiclib.sourceforge.io
|
|
|
|
* 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.
|