aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
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;
+ }
}
/* ==================================================================== */