aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKristian Evers <kristianevers@gmail.com>2018-01-23 20:40:36 +0100
committerGitHub <noreply@github.com>2018-01-23 20:40:36 +0100
commit29cb4a05153ec8dd13857b6b9329fa2a6c067840 (patch)
tree321868fb1aca3d0e032219408986afa50cb6bac1 /src
parent33a7216aea7bacf8cff72a5e6bb59b25e7d931f7 (diff)
parentd0dbf48438f9e152314abf294467cb54f9ae0e70 (diff)
downloadPROJ-29cb4a05153ec8dd13857b6b9329fa2a6c067840.tar.gz
PROJ-29cb4a05153ec8dd13857b6b9329fa2a6c067840.zip
Merge pull request #743 from kbevers/fix-nullgrid-datumtransform
Handle ellipsoid parameters correctly when using +nadgrids=@null.
Diffstat (limited to 'src')
-rw-r--r--src/pj_transform.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/pj_transform.c b/src/pj_transform.c
index c72df2e7..6ad227cd 100644
--- a/src/pj_transform.c
+++ b/src/pj_transform.c
@@ -748,17 +748,30 @@ int pj_datum_transform( PJ *srcdefn, PJ *dstdefn,
/* -------------------------------------------------------------------- */
if( srcdefn->datum_type == PJD_GRIDSHIFT )
{
+ const char* srcnadgrids = pj_param(srcdefn->ctx, srcdefn->params,"snadgrids").s;
+
pj_apply_gridshift_2( srcdefn, 0, point_count, point_offset, x, y, z );
CHECK_RETURN(srcdefn);
- src_a = SRS_WGS84_SEMIMAJOR;
- src_es = SRS_WGS84_ESQUARED;
+ /* If the gridlist has either "@null" or "null" as its only */
+ /* grid we don't change the ellipsoid parameters, since the */
+ /* datum shift to WGS84 was not performed in practice. */
+ if ( strcmp("@null", srcnadgrids) && strcmp("null", srcnadgrids) ) {
+ src_a = SRS_WGS84_SEMIMAJOR;
+ src_es = SRS_WGS84_ESQUARED;
+ }
}
if( dstdefn->datum_type == PJD_GRIDSHIFT )
{
- dst_a = SRS_WGS84_SEMIMAJOR;
- dst_es = SRS_WGS84_ESQUARED;
+ const char* dstnadgrids = pj_param(dstdefn->ctx, dstdefn->params,"snadgrids").s;
+ /* If the gridlist has either "@null" or "null" as its only */
+ /* grid we don't change the ellipsoid parameters, since the */
+ /* datum shift to WGS84 will not be performed. */
+ if ( strcmp("@null", dstnadgrids) && strcmp("null", dstnadgrids) ) {
+ dst_a = SRS_WGS84_SEMIMAJOR;
+ dst_es = SRS_WGS84_ESQUARED;
+ }
}
/* ==================================================================== */