| Age | Commit message (Collapse) | Author |
|
|
|
"+proj=pipeline +inv +step +urm5 +n=0.5 +inv" now works as expected,
returning the forward operation of urm5. In principle adding more +inv's
should also work, resulting in the forward operation when an even number
of +inv's are present, and the inverse when an odd number of +inv's
are present.
"+proj=pipeline +step +urm5 +n=0.5 +inv" fails at initialization since
no forward operation can be performed. This is a new requirement, but
aligns perfectly with the rest of the library since no operation without
a forward method exists.
|
|
axisswap initialization: avoid switch case fallthrough
|
|
Some projections do not have an inverse mapping. If such a projection is used
as a (forward) step in a pipeline we won't be able to perform an inverse
operation using the pipeline. By setting the inv, inv3d and inv4d pointers to
zero we signal to the caller that an inverse mapping is not available.
|
|
Similar to proj and cs2cs, cct now returns immediately when trying to
do an inverse operation that is not possible, for example using
proj=urm5 which doesn't have an inverse:
$ cct.exe -I +proj=pipeline +step +proj=urm5 +n=0.5
Inverse operation not available
|
|
case without break are really confusing, and should be avoided as much
as possible IMHO.
Also error out if a unrecognized character is provided as the axis value.
|
|
|
|
|
|
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5073. Credit to OSS Fuzz. master only
|
|
Remove or use unused macros
|
|
Download grid files as the first thing in the travis install script and
that 'make check' can be run without errors caused by missing grids.
|
|
|
|
|
|
|
|
Some macros seemed to be leftover from earlier code, so I removed them.
Others seemed like they should have been used, but weren't.
There should be no functional change, except the following: in floating-
point arithmetic, x / y is not the same as x * (1.0 / y). It can be
argued that using the multiplication is significantly faster, and the
algorithm is approximative anyway. Otherwise, the constants are
obviously not required.
Also fixes one location in PJ_aitoff.c, where an enumeration value
should have been used.
|
|
Instead of +order the classic PROJ.4 parameter +axis can used instead.
This is mostly an inititive to simplify backwars compatibility in the
4D API. P->axis is initialized in pj_init() it can be assumed that it
is set up correctly.
+order and +axis are mutually exclusive.
|
|
|
|
|
|
|
|
|
|
|
|
Added the possibility to use custom unit factors. Similar to the
classic +to_meter parameter the conversion factor is related to meters,
i.e. the factor for conversion from kilometers meters is 1000. The
custom unit factors is given using the existing xy_in, xy_out, z_in and
z_out parameters, for example:
proj=unitconvert xy_in=4.5 +xy_out=mm
|
|
|
|
In cases such as:
proj=pipeline step proj=utm zone=32 ellps=GRS80 ...
The pj_init code would pick up the ellps information (and other material such as false eastings and northings) from the utm step and place it into the PJ object of the pipeline driver.
This is not the intention, and is eliminated in this PR by terminating parameter searching (done by pj_param) once a step parameter is reached.
|
|
arbitrary dimensionality in test code
* Call trans func of same dimensionality as input in gie
* Refactor prep/fin code for pj_fwd/pj_inv 2D,3D,4D
* Remove prime meridian handling from pj_transform (now handled in pj_fwd_prepare/pj_inv_finalize)
* Introduce prep/fin skips, mostly in support of axisswap and pipeline drivers
* Refactor fwd/inv subsystem
* pj_transform: Let pj_fwd/inv handle scaling
* Let pj_fwd/inv3d fall back to 2D eventually
|
|
Parameters for the plate motion models (PMM) for ITRF2008 and ITRF2014
are added to the ITRF2008/2014 init-files. The PMMs allow coordinates
to be moved back and forward in time in plate fixed reference frames
such as GR96 in Greenland which is defined as ITRF94@1996.623.
Transforming an ITRF2014-coordinate to GR96 is done with:
+proj=pipeline +step +init=ITRF2014:NOAM +t_epoch=1996.623 +t_obs=2017.584
+step +init=ITRF2014:ITRF94 +t_obs=1996.623
where the first step transforms the coordinate back in time to
ITRF2014@1996.632 by using the ITRF2014 PMM. The second step transforms
the ITRF2014 coordinate to ITRF94.
|
|
|
|
Repair column selector bug
Fixes #723
|
|
|
|
Avoid zero-division in ccon.
|
|
Credit to OSS-Fuzz. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4695
|
|
Reykjavik (1900) datum, prerequisites: Danish (Andræ) ellipsoid, and Copenhagen meridian introduced in support of the Reykjavik 1900 datum (Iceland).
The magnitude of the Danish (1876) ellipsoid was originally given in French toise (fathoms) - the Andræ ellipsoid already in PROJ seems to have been transformed to meters using a conversion factor for German fathoms.
This version, based on a French conversion factor of 1.94903631 m/toise, corresponds to the official value for the semimajor axis used by the Icelandic NMA, Landmælingar Íslands, LMI (Guðmundur Valsson, LMI, pers. comm. 2017-12-15).
This value deviates by approximately one centimeter, compared to the truncated value of 6377019.27 m, given in the EPSG:7051 record.
|
|
the Reykjavik 1900 datum (Iceland)
|
|
Previously, when expanding init=foo.bar calls, pj_chomp was first called after collecting all lines, effectively discarding everything after the start of the first comment
|
|
* Some corrections in response to a review by Kristian Evers
|
|
Fix issue #715
|
|
in GeographicLib). Details:
Workaround bugs in handling of -0.0 in fmod and sin in Visual Studio 10,
11, and 12.
Relax unrealistically strict delta for GeodSolve59 in geodtest.
|
|
|
|
|
|
Fixes #699
|
|
Declare non-local variables as const where possible
|
|
* Enable wildcard globbing for MSVC builds
* Use globbing to run all gie tests
* Despite merge title: Also use wildcards on gie tests when using GNU compilers
|
|
Having non-const variables of static lifetime or even global scope is
usually a bad idea. These variables are inherently constants, and this
should be enforced.
This required marking some functions as not modifying input parameters
and marking some pointers as pointers to const.
One advantage is that the compiler usually puts const static variables
in a read-only code segment, so they can't be modified physically.
This can be verified with `nm` (on POSIX systems).
To avoid changes to the public API, functions returning non-const
pointers to data tables were left intact, but the returned data may not
be modified. Internally we prefer using the proj_list_* functions over
the pj_get_*_ref functions, because the former return const pointers.
|
|
Add -std=c89 to travis targets
|
|
The multistresstest code has been made C89 compliant in the process.
|
|
|
|
* Free format now in cmd lines, in gie, and in init files
* Corrected handling of defaults
* Add demo of integrated definition and validation
* Repair stack-smashing memmove in get_init
* repair paralist corruption, clean up debug output
* Install test files for nmake builds
* Add many improvements following suggestions by @schwehr
* Be consistent in requiring lower case everywhere in gie.c
Also, this Fixes #703 and Fixes #697
|
|
For sufficiently large values of modified julian date the
mjd_to_yyyymmdd function would integer overflow in the calculation of
the return value. This is fixed by implicit type conversion.
Credit to OSS-Fuzz.
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4658 and
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4667
|
|
|
|
Updates to deformation operation.
|